aboutsummaryrefslogtreecommitdiff
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();
+}