5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-16 17:09:28 +08:00
wails/v2/pkg/runtime/events.go
2021-07-25 15:37:30 +10:00

46 lines
1.1 KiB
Go

// +build !experimental
package runtime
import (
"context"
"github.com/wailsapp/wails/v2/internal/messagedispatcher/message"
"github.com/wailsapp/wails/v2/internal/servicebus"
)
// On registers a listener for a particular event
func On(ctx context.Context, eventName string, callback func(optionalData ...interface{})) {
bus := servicebus.ExtractBus(ctx)
eventMessage := &message.OnEventMessage{
Name: eventName,
Callback: callback,
Counter: -1,
}
bus.Publish("event:on", eventMessage)
}
// Once registers a listener for a particular event. After the first callback, the
// listener is deleted.
func Once(ctx context.Context, eventName string, callback func(optionalData ...interface{})) {
bus := servicebus.ExtractBus(ctx)
eventMessage := &message.OnEventMessage{
Name: eventName,
Callback: callback,
Counter: 1,
}
bus.Publish("event:on", eventMessage)
}
// Emit pass through
func Emit(ctx context.Context, eventName string, optionalData ...interface{}) {
bus := servicebus.ExtractBus(ctx)
eventMessage := &message.EventMessage{
Name: eventName,
Data: optionalData,
}
bus.Publish("event:emit:from:g", eventMessage)
}