about summary refs log tree commit diff
path: root/assets/src/network/channel/share.ts
diff options
context:
space:
mode:
Diffstat (limited to 'assets/src/network/channel/share.ts')
-rw-r--r--assets/src/network/channel/share.ts28
1 files changed, 26 insertions, 2 deletions
diff --git a/assets/src/network/channel/share.ts b/assets/src/network/channel/share.ts
index f93e8cb..6dbf0cd 100644
--- a/assets/src/network/channel/share.ts
+++ b/assets/src/network/channel/share.ts
@@ -1,5 +1,10 @@
 import requests from "../../stores/requests";
-import type { Connection } from "./connection";
+import { Connection, on, onWithToken } from "./connection";
+import type { UnregisterHandler } from "./messages/handler";
+import type {
+    NewRequestMessage,
+    RequestCancelledMessage,
+} from "./messages/messages";
 import { joinShareChannel } from "./socket";
 
 export async function startShare(connection: Connection) {
@@ -8,4 +13,23 @@ export async function startShare(connection: Connection) {
         connection.token
     );
     connection.channel = shareChannel;
-}
\ No newline at end of file
+
+    on("new_request", onNewRequest);
+}
+
+function onNewRequest(message: NewRequestMessage) {
+    const token = message.token;
+
+    requests.addRequest(token);
+
+    onWithToken("request_cancelled", token, onRequestCancelled);
+}
+
+function onRequestCancelled(
+    message: RequestCancelledMessage,
+    unregister: UnregisterHandler
+) {
+    const token = message.token;
+    requests.removeRequest(token);
+    unregister();
+}