fix mute all audio via controls

This commit is contained in:
Timo
2025-05-15 20:21:43 +02:00
parent 610e792394
commit abd66f50db
3 changed files with 8 additions and 8 deletions

View File

@@ -26,7 +26,7 @@ export interface OutputDevice {
export const setPipEnabled$ = new Subject<boolean>(); export const setPipEnabled$ = new Subject<boolean>();
export const setAvailableOutputDevices$ = new Subject<OutputDevice[]>(); export const setAvailableOutputDevices$ = new Subject<OutputDevice[]>();
export const setOutputDevice$ = new Subject<string>(); export const setOutputDevice$ = new Subject<string>();
export const setOutputEnabled$ = new Subject<boolean>(); export const setOutputDisabled$ = new Subject<boolean>();
window.controls = { window.controls = {
canEnterPip(): boolean { canEnterPip(): boolean {
@@ -51,8 +51,8 @@ window.controls = {
setOutputDevice$.next(id); setOutputDevice$.next(id);
}, },
setOutputEnabled(enabled: boolean): void { setOutputEnabled(enabled: boolean): void {
if (!setOutputEnabled$.observed) if (!setOutputDisabled$.observed)
throw new Error("Output controls are disabled"); throw new Error("Output controls are disabled");
setOutputEnabled$.next(enabled); setOutputDisabled$.next(!enabled);
}, },
}; };

View File

@@ -24,7 +24,7 @@ import {
type MatrixRTCSession, type MatrixRTCSession,
} from "matrix-js-sdk/lib/matrixrtc"; } from "matrix-js-sdk/lib/matrixrtc";
import { useNavigate } from "react-router-dom"; import { useNavigate } from "react-router-dom";
import { useObservableEagerState } from "observable-hooks"; import { useObservable, useObservableEagerState } from "observable-hooks";
import { startWith } from "rxjs"; import { startWith } from "rxjs";
import type { IWidgetApiRequest } from "matrix-widget-api"; import type { IWidgetApiRequest } from "matrix-widget-api";
@@ -70,7 +70,7 @@ import {
useSetting, useSetting,
} from "../settings/settings"; } from "../settings/settings";
import { useTypedEventEmitter } from "../useEvents"; import { useTypedEventEmitter } from "../useEvents";
import { setOutputEnabled$ } from "../controls.ts"; import { setOutputDisabled$ } from "../controls.ts";
declare global { declare global {
interface Window { interface Window {
@@ -108,7 +108,7 @@ export const GroupCallView: FC<Props> = ({
null, null,
); );
const muteAllAudioControlled = useObservableEagerState( const muteAllAudioControlled = useObservableEagerState(
setOutputEnabled$.pipe(startWith(false)), useObservable(() => setOutputDisabled$.pipe(startWith(false))),
); );
const [muteAllAudioFromSetting] = useSetting(muteAllAudioSetting); const [muteAllAudioFromSetting] = useSetting(muteAllAudioSetting);
const muteAllAudio = muteAllAudioControlled || muteAllAudioFromSetting; const muteAllAudio = muteAllAudioControlled || muteAllAudioFromSetting;

View File

@@ -104,7 +104,7 @@ import { ReactionsReader } from "../reactions/ReactionsReader";
import { ConnectionLostError } from "../utils/errors.ts"; import { ConnectionLostError } from "../utils/errors.ts";
import { useTypedEventEmitter } from "../useEvents.ts"; import { useTypedEventEmitter } from "../useEvents.ts";
import { MatrixAudioRenderer } from "../livekit/MatrixAudioRenderer.tsx"; import { MatrixAudioRenderer } from "../livekit/MatrixAudioRenderer.tsx";
import { setOutputEnabled$ } from "../controls.ts"; import { setOutputDisabled$ } from "../controls.ts";
const canScreenshare = "getDisplayMedia" in (navigator.mediaDevices ?? {}); const canScreenshare = "getDisplayMedia" in (navigator.mediaDevices ?? {});
@@ -224,7 +224,7 @@ export const InCallView: FC<InCallViewProps> = ({
}); });
const muteAllAudioControlled = useObservableEagerState( const muteAllAudioControlled = useObservableEagerState(
setOutputEnabled$.pipe(startWith(false)), useObservable(() => setOutputDisabled$.pipe(startWith(false))),
); );
const [muteAllAudioFromSetting] = useSetting(muteAllAudioSetting); const [muteAllAudioFromSetting] = useSetting(muteAllAudioSetting);
const muteAllAudio = muteAllAudioControlled || muteAllAudioFromSetting; const muteAllAudio = muteAllAudioControlled || muteAllAudioFromSetting;