From 307e07b4c8c0bc965ad09b7e9c76538ff94691ad Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Tue, 20 Oct 2020 06:45:46 +1100 Subject: [PATCH] Finish events page --- v2/test/kitchensink/events.go | 13 ++ .../frontend/src/pages/events/Events.svelte | 3 + .../pages/events/OnMultiple/OnMultiple.svelte | 120 ++++++++++++++++++ .../src/pages/events/OnMultiple/code.go | 18 +++ .../src/pages/events/OnMultiple/code.jsx | 8 ++ .../pages/events/OnMultiple/description.txt | 3 + .../frontend/src/pages/events/Once/code.go | 6 +- .../frontend/src/pages/events/Once/code.jsx | 7 +- 8 files changed, 169 insertions(+), 9 deletions(-) create mode 100644 v2/test/kitchensink/frontend/src/pages/events/OnMultiple/OnMultiple.svelte create mode 100644 v2/test/kitchensink/frontend/src/pages/events/OnMultiple/code.go create mode 100644 v2/test/kitchensink/frontend/src/pages/events/OnMultiple/code.jsx create mode 100644 v2/test/kitchensink/frontend/src/pages/events/OnMultiple/description.txt 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';
@@ -22,6 +23,8 @@

+ +
diff --git a/v2/test/kitchensink/frontend/src/pages/events/OnMultiple/OnMultiple.svelte b/v2/test/kitchensink/frontend/src/pages/events/OnMultiple/OnMultiple.svelte new file mode 100644 index 000000000..085282ab3 --- /dev/null +++ b/v2/test/kitchensink/frontend/src/pages/events/OnMultiple/OnMultiple.svelte @@ -0,0 +1,120 @@ + + + +
+
+
+ + +
+
+ + +
+ + + {#if $listeners.length > 0 } +
+ Subscribed to: +
    + {#each $listeners as listener} +
  • {listener}
  • + {/each} +
+ Now use Events.Emit to trigger the subscribers!
+
Subscriber output will be printed below:
+ + {/if} + +
+
+
diff --git a/v2/test/kitchensink/frontend/src/pages/events/OnMultiple/code.go b/v2/test/kitchensink/frontend/src/pages/events/OnMultiple/code.go new file mode 100644 index 000000000..e34cad17f --- /dev/null +++ b/v2/test/kitchensink/frontend/src/pages/events/OnMultiple/code.go @@ -0,0 +1,18 @@ +package main + +import wails "github.com/wailsapp/wails/v2" + +type MyStruct struct { + runtime *wails.Runtime +} + +func (m *MyStruct) WailsInit(runtime *wails.Runtime) error { + + maxAttempts := 3 + runtime.Events.OnMultiple("unlock attempts", func(optionalData ...interface{}) { + // Do something (at most) maxAttempts times + }, maxAttempts) + + m.runtime = runtime + return nil +} diff --git a/v2/test/kitchensink/frontend/src/pages/events/OnMultiple/code.jsx b/v2/test/kitchensink/frontend/src/pages/events/OnMultiple/code.jsx new file mode 100644 index 000000000..9bc9ae422 --- /dev/null +++ b/v2/test/kitchensink/frontend/src/pages/events/OnMultiple/code.jsx @@ -0,0 +1,8 @@ +import { Events } from '@wails/runtime'; + +let notes = []; + +// Do some things +Events.On("notes loaded", (newNotes) => { + notes = newNotes; +}); diff --git a/v2/test/kitchensink/frontend/src/pages/events/OnMultiple/description.txt b/v2/test/kitchensink/frontend/src/pages/events/OnMultiple/description.txt new file mode 100644 index 000000000..4a8d3fae2 --- /dev/null +++ b/v2/test/kitchensink/frontend/src/pages/events/OnMultiple/description.txt @@ -0,0 +1,3 @@ +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 });