From 9408f96de539b603124d4df37f1b69c2dbe185c6 Mon Sep 17 00:00:00 2001 From: Melonai Date: Sat, 31 Jul 2021 14:42:22 +0200 Subject: Reregister unregistered token handlers on re-use --- assets/src/network/transfer/share_transfer.ts | 1 - assets/src/network/transfer/transfer.ts | 25 ++++++++++++++++--------- 2 files changed, 16 insertions(+), 10 deletions(-) (limited to 'assets/src/network/transfer') 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, - 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(); +} -- cgit 1.4.1