about summary refs log tree commit diff
path: root/assets/src
diff options
context:
space:
mode:
authorMelonai <einebeere@gmail.com>2021-06-05 17:50:09 +0200
committerMelonai <einebeere@gmail.com>2021-06-05 17:50:09 +0200
commit30487265282a16cd5f711e6d10bf7c9e7fd0f12b (patch)
tree56cbeb1d020b28ec2783b97aa404270f4768112a /assets/src
parentc575119a90a028dd109434a4b8889adceac3df93 (diff)
downloadrook-30487265282a16cd5f711e6d10bf7c9e7fd0f12b.tar.zst
rook-30487265282a16cd5f711e6d10bf7c9e7fd0f12b.zip
WebRTC connection between share and request works
Diffstat (limited to 'assets/src')
-rw-r--r--assets/src/network/transfer/transfer.ts40
1 files changed, 28 insertions, 12 deletions
diff --git a/assets/src/network/transfer/transfer.ts b/assets/src/network/transfer/transfer.ts
index 1cc029b..25511d5 100644
--- a/assets/src/network/transfer/transfer.ts
+++ b/assets/src/network/transfer/transfer.ts
@@ -1,4 +1,4 @@
-import { onWithToken, send } from "../channel/connection";
+import { on, onWithToken, send } from "../channel/connection";
 import type { UnregisterHandler } from "../channel/messages/handler";
 import type {
     ShareAcceptedMessage,
@@ -76,9 +76,17 @@ export async function answer(
         }
     };
 
+    const unregisterIce = on(
+        "ice_candidate",
+        (message: RequestIceCandidateMessage) =>
+            onIncomingIceCandidate(transfer, message)
+    );
+
+    unregisterIceOnComplete(transfer, unregisterIce);
+
     send("accept_share", {
-        sdp: offer.sdp,
-        type: offer.type,
+        sdp: answer.sdp,
+        type: answer.type,
     });
 
     return transfer;
@@ -91,7 +99,7 @@ function createTransfer(type: TransferType): Transfer {
         id: 0,
     });
 
-    channel.onopen = e => console.log("ooooyeeee");
+    // TODO: Send data after channel was opened.
 
     return {
         pc,
@@ -106,7 +114,9 @@ function onShareAccepted(
     unregister: UnregisterHandler
 ) {
     const token = message.token;
-    transfer.pc.setRemoteDescription(message);
+
+    const answerDescription = new RTCSessionDescription(message);
+    transfer.pc.setRemoteDescription(answerDescription);
 
     const unregisterIce = onWithToken(
         "ice_candidate",
@@ -115,13 +125,7 @@ function onShareAccepted(
             onIncomingIceCandidate(transfer, message)
     );
 
-    transfer.pc.onicegatheringstatechange = event => {
-        const connection = event.target as any;
-        console.log(connection.iceGatheringState);
-        if (connection.iceGatheringState === "complete") {
-            unregisterIce();
-        }
-    };
+    unregisterIceOnComplete(transfer, unregisterIce);
 
     unregister();
 }
@@ -132,3 +136,15 @@ function onIncomingIceCandidate(
 ) {
     transfer.pc.addIceCandidate(message.candidate);
 }
+
+function unregisterIceOnComplete(
+    transfer: Transfer,
+    unregister: UnregisterHandler
+) {
+    transfer.pc.onicegatheringstatechange = event => {
+        const connection = event.target as any;
+        if (connection.iceGatheringState === "complete") {
+            unregister();
+        }
+    };
+}