From b1b41ca5e153553238cca7e91a46a3aa60684d3a Mon Sep 17 00:00:00 2001 From: hobokenchicken Date: Mon, 6 Jul 2026 13:16:01 +0000 Subject: [PATCH] fix(webrtc): add error handling and ui alerts for background processor initialization --- web/src/stores/voice.ts | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/web/src/stores/voice.ts b/web/src/stores/voice.ts index 19de02b..9853136 100644 --- a/web/src/stores/voice.ts +++ b/web/src/stores/voice.ts @@ -336,23 +336,30 @@ export const useVoiceStore = create((set, get) => ({ } if (processor) { - if (mode === 'disabled') { - await processor.switchTo({ mode: 'disabled' }); - } else if (mode === 'background-blur') { - await processor.switchTo({ mode: 'background-blur', blurRadius: 10 }); - } else if (mode === 'virtual-background') { - await processor.switchTo({ mode: 'virtual-background', imagePath: imagePath || 'https://images.unsplash.com/photo-1579546929518-9e396f3cc809' }); - } + try { + if (mode === 'disabled') { + await processor.switchTo({ mode: 'disabled' }); + } else if (mode === 'background-blur') { + await processor.switchTo({ mode: 'background-blur', blurRadius: 10 }); + } else if (mode === 'virtual-background') { + await processor.switchTo({ mode: 'virtual-background', imagePath: imagePath || 'https://images.unsplash.com/photo-1579546929518-9e396f3cc809' }); + } - // attach to camera track if it's running - const pub = room.localParticipant.getTrackPublication(Track.Source.Camera); - const track = pub?.track as any; - if (track && track.setProcessor) { - await track.setProcessor(processor); + // attach to camera track if it's running + const pub = room.localParticipant.getTrackPublication(Track.Source.Camera); + const track = pub?.track as any; + if (track && track.setProcessor) { + await track.setProcessor(processor); + } + set({ bgMode: mode }); + } catch (err) { + console.error('[voice] setBgMode failed:', err); + alert(`Failed to set background effect: ${err instanceof Error ? err.message : err}`); + set({ bgMode: 'disabled' }); } + } else { + set({ bgMode: mode }); } - - set({ bgMode: mode }); }, toggleScreenShare: async () => {