From 8730249fb09ed0279d7f845f17d2e0b03acbf980 Mon Sep 17 00:00:00 2001 From: Valere Date: Mon, 17 Nov 2025 17:30:23 +0100 Subject: [PATCH] do not use tap for important logic --- .../CallViewModel/localMember/LocalMembership.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/state/CallViewModel/localMember/LocalMembership.ts b/src/state/CallViewModel/localMember/LocalMembership.ts index 8be87c17..808072ae 100644 --- a/src/state/CallViewModel/localMember/LocalMembership.ts +++ b/src/state/CallViewModel/localMember/LocalMembership.ts @@ -42,7 +42,7 @@ import { type MuteStates } from "../../MuteStates"; import { type ProcessorState } from "../../../livekit/TrackProcessorContext"; import { type MediaDevices } from "../../MediaDevices"; import { and$ } from "../../../utils/observable"; -import { type ElementCallError } from "../../../utils/errors"; +import { type ElementCallError, UnknownCallError } from "../../../utils/errors"; import { ElementWidgetActions, widget, @@ -487,19 +487,21 @@ export const createLocalMembership$ = ({ switchMap((c) => c === null ? of({ state: "Initialized" } as ConnectionState) : c.state$, ), - tap((s) => { + map((s) => { logger.trace(`Local connection state update: ${s.state}`); if (s.state == "FailedToStart") { - configError$.next(s.error as ElementCallError); + return s.error instanceof ElementCallError + ? s.error + : new UnknownCallError(s.error); } else { - // TODO do we need to clear errors on other states? - // It is a fatal error so the user needs to reload or similar anyway. - configError$.next(null); + return null; } }), scope.bind(), ) - .subscribe(); + .subscribe((fatalError) => { + configError$.next(fatalError); + }); /** * Whether the user is currently sharing their screen.