wails/v3/pkg/application/messageprocessor_events.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

48 lines
1.1 KiB
Go

package application
import (
"encoding/json"
"github.com/wailsapp/wails/v3/pkg/errs"
)
const (
EventsEmit = 0
)
var eventsMethodNames = map[int]string{
EventsEmit: "Emit",
}
func (m *MessageProcessor) processEventsMethod(req *RuntimeRequest, window Window) (any, error) {
switch req.Method {
case EventsEmit:
var event CustomEvent
var options struct {
Name *string `json:"name"`
Data json.RawMessage `json:"data"`
}
err := req.Args.ToStruct(&options)
if err != nil {
return nil, errs.WrapInvalidEventsCallErrorf(err, "error parsing event")
}
if options.Name == nil {
return nil, errs.NewInvalidEventsCallErrorf("missing event name")
}
data, err := decodeEventData(*options.Name, options.Data)
if err != nil {
return nil, errs.WrapInvalidEventsCallErrorf(err, "error parsing event data")
}
event.Name = *options.Name
event.Data = data
event.Sender = window.Name()
globalApplication.Event.EmitEvent(&event)
return event.IsCancelled(), nil
default:
return nil, errs.NewInvalidEventsCallErrorf("unknown method: %d", req.Method)
}
}