aboutsummaryrefslogtreecommitdiff
path: root/assets/src/network/channel
diff options
context:
space:
mode:
Diffstat (limited to 'assets/src/network/channel')
-rw-r--r--assets/src/network/channel/connection.ts15
-rw-r--r--assets/src/network/channel/messages/messages.ts18
2 files changed, 24 insertions, 9 deletions
diff --git a/assets/src/network/channel/connection.ts b/assets/src/network/channel/connection.ts
index a26f624..97866f0 100644
--- a/assets/src/network/channel/connection.ts
+++ b/assets/src/network/channel/connection.ts
@@ -2,7 +2,7 @@ import { Channel, Push, Socket } from "phoenix";
import { get, Readable, writable, Writable } from "svelte/store";
import { RookType } from "../../models/rook_type";
import getShareToken from "../../utils/getShareToken";
-import type { AnyMessage } from "./messages/messages";
+import { AnyMessage, eventNames } from "./messages/messages";
import {
MessageHandler,
routeEventToHandler,
@@ -70,12 +70,13 @@ export class Connection {
this.updateState(ConnectionState.CONNECTED);
- // Setup up event handler.
- this.channel.onMessage = (event, payload) => {
- const payloadWithEvent = { ...payload, event_name: event };
- routeEventToHandler(event, payloadWithEvent, this.handler);
- return payload;
- };
+ // Setup up event handlers.
+ eventNames.forEach(event => {
+ this.channel.on(event, payload => {
+ const payloadWithEvent = { ...payload, event_name: event };
+ routeEventToHandler(event, payloadWithEvent, this.handler);
+ });
+ });
}
send(event: string, data: any): Push {
diff --git a/assets/src/network/channel/messages/messages.ts b/assets/src/network/channel/messages/messages.ts
index 7eee4a8..0dd8178 100644
--- a/assets/src/network/channel/messages/messages.ts
+++ b/assets/src/network/channel/messages/messages.ts
@@ -1,6 +1,20 @@
-export type AnyMessage = ShareMessage | RequestMessage;
+export const eventNames = [
+ "new_request",
+ "request_cancelled",
+ "share_accepted",
+ "request_ice_candidate",
-export type EventName = AnyMessage["event_name"];
+ "request_acknowledged",
+ "request_accepted",
+ "share_cancelled",
+ "share_ice_candidate",
+] as const;
+
+export type EventName = typeof eventNames[any];
+
+export type AnyMessage = (ShareMessage | RequestMessage) & {
+ event_name: EventName;
+};
// Messages for the sharer