about summary refs log tree commit diff
path: root/assets/src/network/transfer/request_transfer.ts
diff options
context:
space:
mode:
Diffstat (limited to 'assets/src/network/transfer/request_transfer.ts')
-rw-r--r--assets/src/network/transfer/request_transfer.ts35
1 files changed, 12 insertions, 23 deletions
diff --git a/assets/src/network/transfer/request_transfer.ts b/assets/src/network/transfer/request_transfer.ts
index e69a9a8..6e4b322 100644
--- a/assets/src/network/transfer/request_transfer.ts
+++ b/assets/src/network/transfer/request_transfer.ts
@@ -1,17 +1,13 @@
-import data from "../../stores/data";
-import { on, send } from "../channel/connection";
-import type { ShareIceCandidateMessage } from "../channel/messages/messages";
-import {
-    createTransfer,
-    onIncomingIceCandidate,
-    Transfer,
-    unregisterIceOnComplete,
-} from "./transfer";
-
-export async function createAnswerTransfer(
-    offer: RTCSessionDescriptionInit
+import data from "../../state/data";
+import type { Connection } from "../channel/connection";
+import { createTransfer, Transfer } from "./transfer";
+
+export async function respondToOffer(
+    c: Connection,
+    offer: RTCSessionDescriptionInit,
+    onComplete: () => void
 ): Promise<Transfer> {
-    const transfer = createTransfer(onChannel);
+    const transfer = createTransfer(c => onChannel(c, onComplete));
 
     const offerDescription = new RTCSessionDescription(offer);
     transfer.pc.setRemoteDescription(offerDescription);
@@ -22,19 +18,12 @@ export async function createAnswerTransfer(
     transfer.pc.onicecandidate = event => {
         const candidate = event.candidate;
         if (event.candidate !== null) {
-            send("ice_candidate", { candidate });
+            // TODO: Check whether transfer was cancelled
+            c.send("ice_candidate", { candidate });
         }
     };
 
-    const unregisterIce = on(
-        "share_ice_candidate",
-        (message: ShareIceCandidateMessage) =>
-            onIncomingIceCandidate(transfer, message)
-    );
-
-    unregisterIceOnComplete(transfer, unregisterIce);
-
-    send("accept_share", {
+    c.send("accept_share", {
         sdp: answer.sdp,
         type: answer.type,
     });