mirror of
https://github.com/wailsapp/wails.git
synced 2026-03-14 14:45:49 +01:00
Support OnMultiple
This commit is contained in:
parent
ae677ce9db
commit
e960afe8f6
3 changed files with 20 additions and 2 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -22,3 +22,5 @@ v2/test/**/frontend/dist
|
|||
v2/test/**/build/
|
||||
v2/test/frameless/icon.png
|
||||
v2/test/hidden/icon.png
|
||||
v2/internal/ffenestri/runtime.c
|
||||
v2/internal/runtime/assets/desktop.js
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import (
|
|||
type Events interface {
|
||||
On(eventName string, callback func(optionalData ...interface{}))
|
||||
Once(eventName string, callback func(optionalData ...interface{}))
|
||||
OnMultiple(eventName string, callback func(optionalData ...interface{}), maxCallbacks int)
|
||||
Emit(eventName string, optionalData ...interface{})
|
||||
}
|
||||
|
||||
|
|
@ -24,7 +25,7 @@ func newEvents(bus *servicebus.ServiceBus) Events {
|
|||
}
|
||||
}
|
||||
|
||||
// On pass through
|
||||
// On registers a listener for a particular event
|
||||
func (r *event) On(eventName string, callback func(optionalData ...interface{})) {
|
||||
eventMessage := &message.OnEventMessage{
|
||||
Name: eventName,
|
||||
|
|
@ -34,7 +35,8 @@ func (r *event) On(eventName string, callback func(optionalData ...interface{}))
|
|||
r.bus.Publish("event:on", eventMessage)
|
||||
}
|
||||
|
||||
// On pass through
|
||||
// Once registers a listener for a particular event. After the first callback, the
|
||||
// listener is deleted.
|
||||
func (r *event) Once(eventName string, callback func(optionalData ...interface{})) {
|
||||
eventMessage := &message.OnEventMessage{
|
||||
Name: eventName,
|
||||
|
|
@ -44,6 +46,17 @@ func (r *event) Once(eventName string, callback func(optionalData ...interface{}
|
|||
r.bus.Publish("event:on", eventMessage)
|
||||
}
|
||||
|
||||
// OnMultiple registers a listener for a particular event, for a given maximum amount of callbacks.
|
||||
// Once the callback has been run `maxCallbacks` times, the listener is deleted.
|
||||
func (r *event) OnMultiple(eventName string, callback func(optionalData ...interface{}), maxCallbacks int) {
|
||||
eventMessage := &message.OnEventMessage{
|
||||
Name: eventName,
|
||||
Callback: callback,
|
||||
Counter: maxCallbacks,
|
||||
}
|
||||
r.bus.Publish("event:on", eventMessage)
|
||||
}
|
||||
|
||||
// Emit pass through
|
||||
func (r *event) Emit(eventName string, optionalData ...interface{}) {
|
||||
eventMessage := &message.EventMessage{
|
||||
|
|
|
|||
|
|
@ -26,6 +26,9 @@ func (r *RuntimeTest) WailsInit(runtime *wails.Runtime) error {
|
|||
r.runtime.Events.Once("testeventonce", func(optionalParams ...interface{}) {
|
||||
println("I only get called once!")
|
||||
})
|
||||
r.runtime.Events.OnMultiple("testeventmultiple", func(optionalParams ...interface{}) {
|
||||
println("I only get called 3 times!")
|
||||
}, 3)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue