mirror of
https://github.com/wailsapp/wails.git
synced 2026-03-15 23:25:49 +01:00
* custom transport initial * transport codecs * runtime set transport * events transport * clauded example * bundled runtime * wip: transport * rework transports * rework dialog responses * cleanup * cleanup * improve error handling in HTTPTransport * cleanup * cleanup * cleanup * cleanup * review changes * review changes * review changes * review changes * review changes * review changes * review changes * move documentation to website docs * update doc * update changelog * introduce JSClient method for transport for embedding JS part in transport --------- Co-authored-by: Atterpac <Capretta.Michael@gmail.com> Co-authored-by: Lea Anthony <lea.anthony@gmail.com>
60 lines
866 B
Go
60 lines
866 B
Go
//go:generate go run codegen/error_functions/main.go
|
|
package errs
|
|
|
|
import (
|
|
"errors"
|
|
)
|
|
|
|
func Is(err error, errorType ErrorType) bool {
|
|
if err == nil {
|
|
return false
|
|
}
|
|
var general WailsError
|
|
ok := errors.As(err, &general)
|
|
if !ok {
|
|
return false
|
|
}
|
|
return general.ErrorType() == errorType
|
|
}
|
|
|
|
func Cause(err error) error {
|
|
if err == nil {
|
|
return nil
|
|
}
|
|
|
|
type causer interface {
|
|
Cause() error
|
|
}
|
|
|
|
if cause, ok := err.(causer); ok {
|
|
if causeErr := cause.Cause(); causeErr != nil {
|
|
return causeErr
|
|
}
|
|
}
|
|
|
|
if unwrapErr := errors.Unwrap(err); unwrapErr != nil {
|
|
return unwrapErr
|
|
}
|
|
|
|
return err
|
|
}
|
|
|
|
func Has(err error, errorType ErrorType) bool {
|
|
if err == nil {
|
|
return false
|
|
}
|
|
|
|
for {
|
|
if Is(err, errorType) {
|
|
return true
|
|
}
|
|
|
|
cause := Cause(err)
|
|
if errors.Is(cause, err) || cause == nil {
|
|
break
|
|
}
|
|
err = cause
|
|
}
|
|
|
|
return false
|
|
}
|