From 7a89a3a307e468726ca548907ac1d1cab7644ca2 Mon Sep 17 00:00:00 2001 From: RoyceDa Date: Sat, 28 Feb 2026 18:31:21 +0200 Subject: [PATCH] OFFERS & ANSWERS webRTC --- app/providers/CallProvider/CallProvider.tsx | 25 ++++++++++++++++--- .../protocol/packets/packet.signal.ts | 5 +++- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/app/providers/CallProvider/CallProvider.tsx b/app/providers/CallProvider/CallProvider.tsx index 57e3743..a8e4d4a 100644 --- a/app/providers/CallProvider/CallProvider.tsx +++ b/app/providers/CallProvider/CallProvider.tsx @@ -128,10 +128,29 @@ export function CallProvider(props : CallProviderProps) { info("Generated shared secret for call session: " + Buffer.from(computedSharedSecret).toString('hex')); setSharedSecret(Buffer.from(computedSharedSecret).toString('hex')); } + if(signalType == SignalType.OFFER){ + const offerJson = packet.getOffer(); + if(!offerJson || !peerConnectionRef.current){ + info("Received offer but peer connection is not ready"); + return; + } + + handleOffer(offerJson); + } + + if(signalType == SignalType.ANSWER){ + const answerJson = packet.getAnswer(); + if(!answerJson || !peerConnectionRef.current){ + info("Received answer but peer connection is not ready"); + return; + } + + handleAnswer(answerJson); + } if(signalType == SignalType.ACTIVE_CALL) { setCallState(CallState.ACTIVE); } - }, []); + }, [activeCall, sessionKeys]); const generateSessionKeys = () => { const sessionKeys = nacl.box.keyPair(); @@ -186,10 +205,10 @@ export function CallProvider(props : CallProviderProps) { * @returns */ const getKeyCast = () => { - if(!sessionKeys){ + if(!sharedSecret){ return ""; } - return Buffer.from(sessionKeys.secretKey).toString('hex'); + return sharedSecret; } const context = { diff --git a/app/providers/ProtocolProvider/protocol/packets/packet.signal.ts b/app/providers/ProtocolProvider/protocol/packets/packet.signal.ts index d0a0d89..9d27d21 100644 --- a/app/providers/ProtocolProvider/protocol/packets/packet.signal.ts +++ b/app/providers/ProtocolProvider/protocol/packets/packet.signal.ts @@ -5,7 +5,10 @@ export enum SignalType { CALL = 0, KEY_EXCHANGE = 1, ACTIVE_CALL = 2, - END_CALL = 3 + END_CALL = 3, + OFFER = 4, + ANSWER = 5, + ICE_CONFIG = 6 } export class PacketSignal extends Packet {