From abd66f50db45f1156eaf5ab1e9875532fa82f90a Mon Sep 17 00:00:00 2001 From: Timo Date: Thu, 15 May 2025 20:21:43 +0200 Subject: [PATCH] fix mute all audio via controls --- src/controls.ts | 6 +++--- src/room/GroupCallView.tsx | 6 +++--- src/room/InCallView.tsx | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/controls.ts b/src/controls.ts index 2bf9933d..bff5f47d 100644 --- a/src/controls.ts +++ b/src/controls.ts @@ -26,7 +26,7 @@ export interface OutputDevice { export const setPipEnabled$ = new Subject(); export const setAvailableOutputDevices$ = new Subject(); export const setOutputDevice$ = new Subject(); -export const setOutputEnabled$ = new Subject(); +export const setOutputDisabled$ = new Subject(); window.controls = { canEnterPip(): boolean { @@ -51,8 +51,8 @@ window.controls = { setOutputDevice$.next(id); }, setOutputEnabled(enabled: boolean): void { - if (!setOutputEnabled$.observed) + if (!setOutputDisabled$.observed) throw new Error("Output controls are disabled"); - setOutputEnabled$.next(enabled); + setOutputDisabled$.next(!enabled); }, }; diff --git a/src/room/GroupCallView.tsx b/src/room/GroupCallView.tsx index f2f4a204..ef63be35 100644 --- a/src/room/GroupCallView.tsx +++ b/src/room/GroupCallView.tsx @@ -24,7 +24,7 @@ import { type MatrixRTCSession, } from "matrix-js-sdk/lib/matrixrtc"; import { useNavigate } from "react-router-dom"; -import { useObservableEagerState } from "observable-hooks"; +import { useObservable, useObservableEagerState } from "observable-hooks"; import { startWith } from "rxjs"; import type { IWidgetApiRequest } from "matrix-widget-api"; @@ -70,7 +70,7 @@ import { useSetting, } from "../settings/settings"; import { useTypedEventEmitter } from "../useEvents"; -import { setOutputEnabled$ } from "../controls.ts"; +import { setOutputDisabled$ } from "../controls.ts"; declare global { interface Window { @@ -108,7 +108,7 @@ export const GroupCallView: FC = ({ null, ); const muteAllAudioControlled = useObservableEagerState( - setOutputEnabled$.pipe(startWith(false)), + useObservable(() => setOutputDisabled$.pipe(startWith(false))), ); const [muteAllAudioFromSetting] = useSetting(muteAllAudioSetting); const muteAllAudio = muteAllAudioControlled || muteAllAudioFromSetting; diff --git a/src/room/InCallView.tsx b/src/room/InCallView.tsx index cc777693..b1eb10b3 100644 --- a/src/room/InCallView.tsx +++ b/src/room/InCallView.tsx @@ -104,7 +104,7 @@ import { ReactionsReader } from "../reactions/ReactionsReader"; import { ConnectionLostError } from "../utils/errors.ts"; import { useTypedEventEmitter } from "../useEvents.ts"; import { MatrixAudioRenderer } from "../livekit/MatrixAudioRenderer.tsx"; -import { setOutputEnabled$ } from "../controls.ts"; +import { setOutputDisabled$ } from "../controls.ts"; const canScreenshare = "getDisplayMedia" in (navigator.mediaDevices ?? {}); @@ -224,7 +224,7 @@ export const InCallView: FC = ({ }); const muteAllAudioControlled = useObservableEagerState( - setOutputEnabled$.pipe(startWith(false)), + useObservable(() => setOutputDisabled$.pipe(startWith(false))), ); const [muteAllAudioFromSetting] = useSetting(muteAllAudioSetting); const muteAllAudio = muteAllAudioControlled || muteAllAudioFromSetting;