about summary refs log tree commit diff
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/request.ts24
-rw-r--r--assets/src/network/channel/request_connection.ts48
-rw-r--r--assets/src/network/channel/share_connection.ts (renamed from assets/src/network/channel/share.ts)14
3 files changed, 58 insertions, 28 deletions
diff --git a/assets/src/network/channel/request.ts b/assets/src/network/channel/request.ts
deleted file mode 100644
index 693e408..0000000
--- a/assets/src/network/channel/request.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import getShareToken from "../../utils/getShareToken";
-import { answer } from "../transfer/request";
-import { Connection, ConnectionState, on, updateState } from "./connection";
-import type { RequestAcceptedMessage } from "./messages/messages";
-import { joinRequestChannel } from "./socket";
-
-export async function startRequest(connection: Connection) {
-    updateState(ConnectionState.CONNECTING_CHANNEL);
-
-    const requestChannel = await joinRequestChannel(
-        connection.socket,
-        connection.token,
-        getShareToken()
-    );
-    connection.channel = requestChannel;
-
-    on("request_accepted", onRequestAccepted);
-
-    updateState(ConnectionState.CONNECTED);
-}
-
-async function onRequestAccepted(message: RequestAcceptedMessage) {
-    await answer(message);
-}
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
diff --git a/assets/src/network/channel/share.ts b/assets/src/network/channel/share_connection.ts
index 81942af..415cb7f 100644
--- a/assets/src/network/channel/share.ts
+++ b/assets/src/network/channel/share_connection.ts
@@ -1,9 +1,10 @@
-import requests from "../../stores/requests";
+import { newIncomingRequest } from "../../models/incoming_request";
+import requests from "../../stores/received_requests";
 import {
-    Connection,
     ConnectionState,
     on,
     onWithToken,
+    start,
     updateState,
 } from "./connection";
 import type { UnregisterHandler } from "./messages/handler";
@@ -13,7 +14,9 @@ import type {
 } from "./messages/messages";
 import { joinShareChannel } from "./socket";
 
-export async function startShare(connection: Connection) {
+export async function startShareConnection() {
+    const connection = await start();
+
     updateState(ConnectionState.CONNECTING_CHANNEL);
 
     const shareChannel = await joinShareChannel(
@@ -27,10 +30,13 @@ export async function startShare(connection: Connection) {
     updateState(ConnectionState.CONNECTED);
 }
 
+// Events which can happen without prior triggers during a share's lifetime
+
 function onNewRequest(message: NewRequestMessage) {
     const token = message.token;
 
-    requests.addRequest(token);
+    const request = newIncomingRequest(token);
+    requests.addRequest(request);
 
     onWithToken("request_cancelled", token, onRequestCancelled);
 }