mirror of
https://github.com/taigrr/wails.git
synced 2026-04-02 05:08:54 -07:00
Support OnMultiple
This commit is contained in:
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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user