about summary refs log tree commit diff
path: root/assets/src/network/channel/request_connection.ts
diff options
context:
space:
mode:
authorMelonai <einebeere@gmail.com>2021-07-08 23:29:20 +0200
committerMelonai <einebeere@gmail.com>2021-07-08 23:29:20 +0200
commitc3b05a72b7185112ece6e42c99e9a828c8298f04 (patch)
tree317da6fbe640ffa57cf771b4b9e3b0beb80e836c /assets/src/network/channel/request_connection.ts
parent9d8ca2a653661560f471d717d188e92a79edb250 (diff)
downloadrook-c3b05a72b7185112ece6e42c99e9a828c8298f04.tar.zst
rook-c3b05a72b7185112ece6e42c99e9a828c8298f04.zip
State display for incoming and own requests
Diffstat (limited to 'assets/src/network/channel/request_connection.ts')
-rw-r--r--assets/src/network/channel/request_connection.ts48
1 files changed, 48 insertions, 0 deletions
diff --git a/assets/src/network/channel/request_connection.ts b/assets/src/network/channel/request_connection.ts
new file mode 100644
index 0000000..1b873d3
--- /dev/null
+++ b/assets/src/network/channel/request_connection.ts
@@ -0,0 +1,48 @@
+import {
+    requestAccepted,
+    OwnRequest,
+    OwnRequestState,
+} from "../../models/own_request";
+import getShareToken from "../../utils/getShareToken";
+import { ConnectionState, on, start, updateState } from "./connection";
+import type {
+    RequestAcceptedMessage,
+    ShareCancelledMessage,
+} from "./messages/messages";
+import { joinRequestChannel } from "./socket";
+
+export async function startRequestConnection(ownRequest: OwnRequest) {
+    const connection = await start();
+
+    updateState(ConnectionState.CONNECTING_CHANNEL);
+
+    const requestChannel = await joinRequestChannel(
+        connection.socket,
+        connection.token,
+        getShareToken()
+    );
+    connection.channel = requestChannel;
+
+    on("request_accepted", (message: RequestAcceptedMessage) =>
+        onRequestAccepted(message, ownRequest)
+    );
+
+    on("share_cancelled", (message: ShareCancelledMessage) =>
+        onShareCancelled(message, ownRequest)
+    );
+
+    updateState(ConnectionState.CONNECTED);
+}
+
+// Events which can happen without prior triggers during a request's lifetime
+
+function onRequestAccepted(
+    message: RequestAcceptedMessage,
+    request: OwnRequest
+) {
+    requestAccepted(request, message);
+}
+
+function onShareCancelled(message: ShareCancelledMessage, request: OwnRequest) {
+    request.state.set(OwnRequestState.SHARE_CANCELLED);
+}
\ No newline at end of file