diff --git a/v2/test/kitchensink/events.go b/v2/test/kitchensink/events.go index e8e4d2774..bb4f50173 100644 --- a/v2/test/kitchensink/events.go +++ b/v2/test/kitchensink/events.go @@ -40,6 +40,19 @@ func (e *Events) Once(eventName string) { }) } +// OnMultiple will subscribe to the given event name, with a maximum +// set by maxCallbacks +func (e *Events) OnMultiple(eventName string, maxCallbacks int) { + e.runtime.Events.OnMultiple(eventName, func(args ...interface{}) { + type callbackData struct { + Name string + Data []interface{} + } + result := callbackData{Name: eventName, Data: args} + e.runtime.Events.Emit("onmultiple event fired by go subscriber", result) + }, maxCallbacks) +} + // Emit will emit func (e *Events) Emit(eventName string, data []interface{}) { e.runtime.Events.Emit(eventName, data...) diff --git a/v2/test/kitchensink/frontend/src/pages/events/Events.svelte b/v2/test/kitchensink/frontend/src/pages/events/Events.svelte index c34f92a4e..73544d6e3 100644 --- a/v2/test/kitchensink/frontend/src/pages/events/Events.svelte +++ b/v2/test/kitchensink/frontend/src/pages/events/Events.svelte @@ -2,6 +2,7 @@ import On from './On/On.svelte'; import Emit from './Emit/Emit.svelte'; import Once from './Once/Once.svelte'; + import OnMultiple from './OnMultiple/OnMultiple.svelte';
Events.OnMultiple() is used to subscribe to events. It takes a number which is the
+total number of times that the callback will be fired when an event matching the given event
+name is received.
diff --git a/v2/test/kitchensink/frontend/src/pages/events/Once/code.go b/v2/test/kitchensink/frontend/src/pages/events/Once/code.go
index d712ab702..d4972985a 100644
--- a/v2/test/kitchensink/frontend/src/pages/events/Once/code.go
+++ b/v2/test/kitchensink/frontend/src/pages/events/Once/code.go
@@ -8,10 +8,8 @@ type MyStruct struct {
func (m *MyStruct) WailsInit(runtime *wails.Runtime) error {
- runtime.Events.On("notes updated", func(optionalData ...interface{}) {
- // Get notes
- notes := optionalData[0].(*Notes)
- // Save the notes to disk
+ runtime.Events.Once("initialised", func(optionalData ...interface{}) {
+ // Do something once
})
m.runtime = runtime
diff --git a/v2/test/kitchensink/frontend/src/pages/events/Once/code.jsx b/v2/test/kitchensink/frontend/src/pages/events/Once/code.jsx
index 9bc9ae422..579e0731d 100644
--- a/v2/test/kitchensink/frontend/src/pages/events/Once/code.jsx
+++ b/v2/test/kitchensink/frontend/src/pages/events/Once/code.jsx
@@ -1,8 +1,5 @@
import { Events } from '@wails/runtime';
-let notes = [];
-
-// Do some things
-Events.On("notes loaded", (newNotes) => {
- notes = newNotes;
+Events.Once("initialised", () => {
+ // Do something once
});