about summary refs log tree commit diff
path: root/src/components/dialogs/EmailDialog/events.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/dialogs/EmailDialog/events.ts')
-rw-r--r--src/components/dialogs/EmailDialog/events.ts23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/components/dialogs/EmailDialog/events.ts b/src/components/dialogs/EmailDialog/events.ts
new file mode 100644
index 000000000..4fa171cad
--- /dev/null
+++ b/src/components/dialogs/EmailDialog/events.ts
@@ -0,0 +1,23 @@
+import {useEffect} from 'react'
+import EventEmitter from 'eventemitter3'
+
+const events = new EventEmitter<{
+  emailVerified: void
+}>()
+
+export function emitEmailVerified() {
+  events.emit('emailVerified')
+}
+
+export function useOnEmailVerified(cb: () => void) {
+  useEffect(() => {
+    /*
+     * N.B. Use `once` here, since the event can fire multiple times for each
+     * instance of `useAccountEmailState`
+     */
+    events.once('emailVerified', cb)
+    return () => {
+      events.off('emailVerified', cb)
+    }
+  }, [cb])
+}