diff options
| author | Melonai <einebeere@gmail.com> | 2021-07-31 14:42:22 +0200 |
|---|---|---|
| committer | Melonai <einebeere@gmail.com> | 2021-07-31 14:42:22 +0200 |
| commit | 9408f96de539b603124d4df37f1b69c2dbe185c6 (patch) | |
| tree | 1d090a3e2ac77207ff95e6a888cb10d4173a8c7a /assets/src/network/transfer/transfer.ts | |
| parent | e0bf750e836477a52ef7a1c79805ad7693335578 (diff) | |
| download | rook-9408f96de539b603124d4df37f1b69c2dbe185c6.tar.zst rook-9408f96de539b603124d4df37f1b69c2dbe185c6.zip | |
Reregister unregistered token handlers on re-use
Diffstat (limited to 'assets/src/network/transfer/transfer.ts')
| -rw-r--r-- | assets/src/network/transfer/transfer.ts | 25 |
1 files changed, 16 insertions, 9 deletions
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(); +} |
