diff options
Diffstat (limited to 'assets/src/network/channel/share.ts')
| -rw-r--r-- | assets/src/network/channel/share.ts | 28 |
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(); +} |
