From ac17021c3c0aafd9a7508a2db31f64e8b67ec1ed Mon Sep 17 00:00:00 2001 From: obrucheoghene Date: Wed, 12 Nov 2025 11:08:56 +0100 Subject: [PATCH 1/2] handle produce media on joining or reconnecting with media on --- src/hooks/use-media.ts | 1 - src/hooks/use-room.ts | 5 ----- src/providers/room-provider.tsx | 17 +++++++++++------ 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/hooks/use-media.ts b/src/hooks/use-media.ts index 2a98562..b62a62a 100644 --- a/src/hooks/use-media.ts +++ b/src/hooks/use-media.ts @@ -225,7 +225,6 @@ export const useMedia = () => { const stopDisplayMedia = useCallback(async () => { if (!mediaService) throw new Error('MediaService not initialized'); - console.log('stopDisplayMedia'); await mediaService.stopDisplayMedia(); if (roomAccess == Access.Allowed) { closeProducer('screen'); diff --git a/src/hooks/use-room.ts b/src/hooks/use-room.ts index a896439..0c78d2a 100644 --- a/src/hooks/use-room.ts +++ b/src/hooks/use-room.ts @@ -103,7 +103,6 @@ export const useRoom = () => { }, [Actions.PeerLeft]: async args => { - console.log('Left room'); const data = ValidationSchema.peerId.parse(args); peerActions.remove(data.id); }, @@ -112,24 +111,20 @@ export const useRoom = () => { const data = ValidationSchema.createConsumerData.parse(args); await createConsumer(data); callback({ status: 'success' }); - console.log(Actions.ConsumerCreated, data); callback({ status: 'success' }); }, [Actions.ConsumerPaused]: async args => { const data = ValidationSchema.consumerStateData.parse(args); pauseConsumer(data); - console.log(Actions.ConsumerPaused, data); }, [Actions.ConsumerResumed]: async args => { const data = ValidationSchema.consumerStateData.parse(args); resumeConsumer(data); - console.log(Actions.ConsumerResumed, data); }, [Actions.ConsumerClosed]: async args => { const data = ValidationSchema.consumerStateData.parse(args); closeConsumer(data); - console.log(Actions.ConsumerPaused, data); }, }), [closeConsumer, createConsumer, pauseConsumer, peerActions, resumeConsumer] diff --git a/src/providers/room-provider.tsx b/src/providers/room-provider.tsx index e1e14f4..65476c4 100644 --- a/src/providers/room-provider.tsx +++ b/src/providers/room-provider.tsx @@ -16,7 +16,7 @@ const RoomProvider = ({ children }: { children: ReactNode }) => { closeAllConsumers, closeAllTransports, closeAllProducers, - // produceUserMedia, + produceUserMedia, } = useMedia(); const reconnectionToastRef = useRef(0); @@ -24,6 +24,7 @@ const RoomProvider = ({ children }: { children: ReactNode }) => { const roomAccess = useRoomAccess(); const roomActions = useRoomActions(); const [rejoining, setRejoining] = useState(false); + const [produceLocalMedia, setProduceLocalMedia] = useState(false); const { joinRoom, leaveRoom, actionHandlers } = useRoom(); useEffect(() => { @@ -55,9 +56,9 @@ const RoomProvider = ({ children }: { children: ReactNode }) => { (async () => { await joinRoom(); await createWebRtcConnections(); - // await produceUserMedia(); - // register heartbeat interval + setProduceLocalMedia(true); + heartBeatIntervalRef.current = setInterval( sendHeartBeat, HEARTBEAT_INTERVAL @@ -82,8 +83,8 @@ const RoomProvider = ({ children }: { children: ReactNode }) => { await joinRoom(rejoining); await createWebRtcConnections(); - // await produceUserMedia(); setRejoining(false); + setProduceLocalMedia(true); if (reconnectionToastRef.current) toast.dismiss(reconnectionToastRef.current); @@ -107,8 +108,12 @@ const RoomProvider = ({ children }: { children: ReactNode }) => { // produce on join useEffect(() => { if (roomAccess !== Access.Allowed) return; - if (rejoining) return; - }, [roomAccess, rejoining]); + if (!produceLocalMedia) return; + (async () => { + await produceUserMedia(); + setProduceLocalMedia(false); + })(); + }, [roomAccess, produceLocalMedia, produceUserMedia]); useEffect(() => { if (!signalingService) return; From 4ea4d68d7382e837c3ee8158fdc26f273bed50e4 Mon Sep 17 00:00:00 2001 From: obrucheoghene Date: Wed, 12 Nov 2025 11:11:57 +0100 Subject: [PATCH 2/2] remove logs from media-services --- src/context/service-context.tsx | 21 --------------------- src/services/media-service.ts | 19 ------------------- 2 files changed, 40 deletions(-) diff --git a/src/context/service-context.tsx b/src/context/service-context.tsx index 8bc2d27..4849938 100644 --- a/src/context/service-context.tsx +++ b/src/context/service-context.tsx @@ -27,27 +27,6 @@ export const ServiceProvider = ({ children }: { children: ReactNode }) => { const [isInitializing, setIsInitializing] = useState(true); const [error, setError] = useState(null); - // const cleanup = useCallback(() => { - // try { - // // Cleanup media service - // if (mediaService) { - // mediaService.closeAllTransports(); - // mediaService.closeAllProducers(); - // mediaService.closeAllConsumers(); - // } - - // // Cleanup signaling service - // if (signalingService) { - // const connection = signalingService.getConnection(); - // connection.off('reconnect_failed'); - // connection.off('connect_error'); - // signalingService.disconnect(); - // } - // } catch (error) { - // console.error('Cleanup error:', error); - // } - // }, [mediaService, signalingService]); - useEffect(() => { const initializeServices = async () => { setIsInitializing(true); diff --git a/src/services/media-service.ts b/src/services/media-service.ts index de9d2cd..95ae93d 100644 --- a/src/services/media-service.ts +++ b/src/services/media-service.ts @@ -414,7 +414,6 @@ class MediaService { }>({ action: Actions.CreateWebrtcTransports, }); - console.log('createWebRtcTransports', response); // console.log({ transportsParams }) if (!response) throw 'Transport not created, - transport params were not recieved'; @@ -426,7 +425,6 @@ class MediaService { if (!this.device) { throw new Error('Device not intialised'); } - console.log('createWebRtcSendTransport', transportParams); this.sendTransport = this.device.createSendTransport({ id: transportParams.id, iceParameters: transportParams.iceParameters, @@ -462,7 +460,6 @@ class MediaService { dtlsParameters, }, }); - console.log('connected webrtc transports'); callback(); } catch (error) { errback(error as Error); @@ -485,7 +482,6 @@ class MediaService { appData, }, }); - console.log('Create Producer, producerId', response?.producerId); if (!response) return errback(new Error('ProducerId was not recieved')); callback({ id: response.producerId }); @@ -497,16 +493,8 @@ class MediaService { sendTransport.on('connectionstatechange', state => { switch (state) { - case 'connecting': - console.log('sendTransport connecting connectionstatechange'); - break; - case 'connected': - console.log('sendTransport connected connectionstatechange'); - break; case 'disconnected': case 'failed': - console.log(' sendTransport Ice disconneted/failed', state); - this.restartICE(sendTransport); break; default: @@ -536,15 +524,8 @@ class MediaService { recvTransport.on('connectionstatechange', state => { switch (state) { - case 'connecting': - console.log('recvTransport connecting connectionstatechange'); - break; - case 'connected': - console.log('recvTransport connected connectionstatechange'); - break; case 'disconnected': case 'failed': - console.log(' recvTransport Ice disconneted/failed', state); this.restartICE(recvTransport); break; default: