about summary refs log tree commit diff
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/transfer.ts14
1 files changed, 14 insertions, 0 deletions
diff --git a/assets/src/network/transfer/transfer.ts b/assets/src/network/transfer/transfer.ts
index b566aa0..434c4fc 100644
--- a/assets/src/network/transfer/transfer.ts
+++ b/assets/src/network/transfer/transfer.ts
@@ -1,9 +1,11 @@
 import { Writable, writable } from "svelte/store";
+import { toast, ToastType } from "../../state/toast";
 
 export enum TransferState {
     CONNECTING,
     TRANSFERRING,
     DONE,
+    FAILED,
 }
 
 export type Transfer = {
@@ -46,6 +48,18 @@ export function createTransfer(
         onChannel(channel, () => onTransferComplete(transfer));
     };
 
+    pc.addEventListener("iceconnectionstatechange", (e: any) => {
+        if (pc.iceConnectionState === "failed") {
+            toast({
+                type: ToastType.ERROR,
+                title: "An error occurred!",
+                // FIXME: Implement said fix!
+                message: "ICE negotiation failed. A fix is in progress.",
+            });
+            transfer.state.set(TransferState.FAILED);
+        }
+    });
+
     return transfer;
 }