From fc212b5d5874cca6cac3f70031336196c053027a Mon Sep 17 00:00:00 2001 From: talksik Date: Sat, 14 May 2022 17:18:05 -0500 Subject: [PATCH] trying the whole queue idea...didn't work so what --- .../desktop/src/providers/StreamProvider.tsx | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/packages/desktop/src/providers/StreamProvider.tsx b/packages/desktop/src/providers/StreamProvider.tsx index 3960436..19c1aac 100644 --- a/packages/desktop/src/providers/StreamProvider.tsx +++ b/packages/desktop/src/providers/StreamProvider.tsx @@ -19,7 +19,7 @@ * listen for any calls to me, as well as any answers back to me */ -import React, { useEffect, useContext, useState, useRef, useMemo } from 'react'; +import React, { useEffect, useContext, useState, useRef, useMemo, useCallback } from 'react'; import Peer from 'simple-peer'; import useRealTimeRooms from './RealTimeRoomProvider'; import useAuth from './AuthProvider'; @@ -32,7 +32,6 @@ import { ServerResponseChannels, } from '@nirvana/core/sockets/channels'; import toast from 'react-hot-toast'; -import { usePrevious } from 'react-use'; type PeerMap = { [userId: string]: Peer; @@ -106,6 +105,8 @@ export function StreamProvider({ children }: { children: React.ReactChild }) { // and set signal if we have already gotten it and remove from the signals if used useEffect(() => { if (Object.keys(incomingSignals).length > 0) { + console.log('going to clear queue of incoming signals'); + Object.entries(peerMap).map(([userId, peer]) => { if (incomingSignals[userId]) { peer.signal(incomingSignals[userId]); @@ -130,16 +131,25 @@ export function StreamProvider({ children }: { children: React.ReactChild }) { return () => { $ws.removeListener(ServerResponseChannels.RTC_RECEIVING_SIGNAL); }; - }, [$ws]); + }, [$ws, updateIncomingSignals]); console.log(`peer map: `, peerMap); + const handleAddPeer = useCallback( + (userId: string, peerObj: Peer) => { + updatePeerMap((draft) => { + draft[userId] = peerObj; + }); + }, + [updatePeerMap], + ); + return (
{children} @@ -155,10 +165,10 @@ const MemoStreamsConnector = React.memo(StreamsConnector); function StreamsConnector({ membersToCall, - updatePeerMap, + handleAddPeer, }: { membersToCall: string[]; - updatePeerMap: Updater; + handleAddPeer: (userId: string, peerObj: Peer) => void; }) { console.log('rendering this piece of shit'); console.log(membersToCall); @@ -166,7 +176,7 @@ function StreamsConnector({ return ( <> {membersToCall.map((userId) => ( - + ))} ); @@ -174,10 +184,10 @@ function StreamsConnector({ function StreamConnector({ peerUserId, - updatePeerMap, + handleAddPeer, }: { peerUserId: string; - updatePeerMap: Updater; + handleAddPeer: (userId: string, peerObj: Peer) => void; }) { const { $ws } = useSockets(); @@ -203,9 +213,7 @@ function StreamConnector({ }); // sending back the connection to the parent for everyone - updatePeerMap((draft) => { - draft[peerUserId] = localPeerConnection; - }); + handleAddPeer(peerUserId, localPeerConnection); }); () => {