about summary refs log tree commit diff
path: root/assets/src/network/transfer
diff options
context:
space:
mode:
authorMelonai <einebeere@gmail.com>2021-07-31 14:42:22 +0200
committerMelonai <einebeere@gmail.com>2021-07-31 14:42:22 +0200
commit9408f96de539b603124d4df37f1b69c2dbe185c6 (patch)
tree1d090a3e2ac77207ff95e6a888cb10d4173a8c7a /assets/src/network/transfer
parente0bf750e836477a52ef7a1c79805ad7693335578 (diff)
downloadrook-9408f96de539b603124d4df37f1b69c2dbe185c6.tar.zst
rook-9408f96de539b603124d4df37f1b69c2dbe185c6.zip
Reregister unregistered token handlers on re-use
Diffstat (limited to 'assets/src/network/transfer')
-rw-r--r--assets/src/network/transfer/share_transfer.ts1
-rw-r--r--assets/src/network/transfer/transfer.ts25
2 files changed, 16 insertions, 10 deletions
diff --git a/assets/src/network/transfer/share_transfer.ts b/assets/src/network/transfer/share_transfer.ts
index 16ad68a..0f88e04 100644
--- a/assets/src/network/transfer/share_transfer.ts
+++ b/assets/src/network/transfer/share_transfer.ts
@@ -6,7 +6,6 @@ import type {
     RequestIceCandidateMessage,
     ShareAcceptedMessage,
 } from "../channel/messages/messages";
-import { connectSocket } from "../channel/socket";
 import {
     createTransfer,
     onIncomingIceCandidate,
diff --git a/assets/src/network/transfer/transfer.ts b/assets/src/network/transfer/transfer.ts
index a0df5bb..27182be 100644
--- a/assets/src/network/transfer/transfer.ts
+++ b/assets/src/network/transfer/transfer.ts
@@ -39,25 +39,27 @@ export function createTransfer(
         negotiated: true,
         id: 0,
     });
-    const state = writable(TransferState.CONNECTING);
 
-    channel.onopen = () => {
-        state.set(TransferState.TRANSFERRING);
-        const completeTransfer = () => state.set(TransferState.DONE);
-        onChannel(channel, completeTransfer);
-    };
+    const state = writable(TransferState.CONNECTING);
 
-    return {
+    const transfer = {
         pc,
         channel,
         state,
     };
+
+    channel.onopen = () => {
+        state.set(TransferState.TRANSFERRING);
+        onChannel(channel, () => onTransferComplete(transfer));
+    };
+
+    return transfer;
 }
 
 export function bindTransfer(
     request: OwnRequest | IncomingRequest,
     transferPromise: Promise<Transfer>,
-    onTransferComplete: () => void
+    completeTransfer: () => void
 ) {
     transferPromise.then(transfer => {
         request.transfer = transfer;
@@ -68,7 +70,7 @@ export function bindTransfer(
                 // Once the data has been transferred we can remove the transfer
                 request.transfer = null;
 
-                onTransferComplete();
+                completeTransfer();
             }
         });
     });
@@ -92,3 +94,8 @@ export function unregisterIceOnComplete(
         }
     };
 }
+
+function onTransferComplete(transfer: Transfer) {
+    transfer.state.set(TransferState.DONE);
+    transfer.pc.close();
+}