wails/v3/pkg/errs/utils.go
Andrey Pshenkin 561473d992
[V3] Refactor binding transport layer (#4702)
* 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>
2025-12-07 22:19:12 +11:00

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
}