aboutsummaryrefslogtreecommitdiff
path: root/assets/src/network/transfer
diff options
context:
space:
mode:
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();
+}