From cea32b86a3eae279b7b4728d99691c3451918189 Mon Sep 17 00:00:00 2001 From: Timo K Date: Wed, 15 Apr 2026 16:46:42 +0200 Subject: [PATCH] remove reactive url param for showFooter --- src/UrlParams.ts | 20 -------------------- src/state/CallViewModel/CallViewModel.ts | 17 +++++++---------- 2 files changed, 7 insertions(+), 30 deletions(-) diff --git a/src/UrlParams.ts b/src/UrlParams.ts index a256e0a4..3a972119 100644 --- a/src/UrlParams.ts +++ b/src/UrlParams.ts @@ -14,13 +14,11 @@ import { type RTCNotificationType, } from "matrix-js-sdk/lib/matrixrtc"; import { pickBy } from "lodash-es"; -import { BehaviorSubject } from "rxjs"; import { Config } from "./config/Config"; import { type EncryptionSystem } from "./e2ee/sharedKeyManagement"; import { E2eeType } from "./e2ee/e2eeType"; import { platform } from "./Platform"; -import { type ObservableScope } from "./state/ObservableScope"; interface RoomIdentifier { roomAlias: string | null; @@ -620,24 +618,6 @@ export const useRoomIdentifier = (): RoomIdentifier => { ); }; -let urlParams$ = undefined as BehaviorSubject | undefined; -export const observerUrlParams$ = ( - scope: ObservableScope, -): BehaviorSubject => { - if (urlParams$ !== undefined) return urlParams$; - function updateUrlParams(): void { - console.log("[observerUrlParams$] update urlParams$"); - urlParams$!.next(getUrlParams()); - } - - urlParams$ = new BehaviorSubject(getUrlParams()); - window.addEventListener("hashchange", updateUrlParams); - scope.onEnd(() => { - window.removeEventListener("hashchange", updateUrlParams); - }); - return urlParams$; -}; - export function generateUrlSearchParams( roomId: string, encryptionSystem: EncryptionSystem, diff --git a/src/state/CallViewModel/CallViewModel.ts b/src/state/CallViewModel/CallViewModel.ts index 7bfe4630..28de1647 100644 --- a/src/state/CallViewModel/CallViewModel.ts +++ b/src/state/CallViewModel/CallViewModel.ts @@ -51,7 +51,6 @@ import { v4 as uuidv4 } from "uuid"; import { type IMembershipManager } from "matrix-js-sdk/lib/matrixrtc/IMembershipManager"; import { - and$, createToggle$, filterBehavior, generateItem, @@ -83,7 +82,7 @@ import { constant, type Behavior } from "../Behavior"; import { E2eeType } from "../../e2ee/e2eeType"; import { MatrixKeyProvider } from "../../e2ee/matrixKeyProvider"; import { type MuteStates } from "../MuteStates"; -import { getUrlParams, HeaderStyle, observerUrlParams$ } from "../../UrlParams"; +import { getUrlParams, HeaderStyle } from "../../UrlParams"; import { type ProcessorState } from "../../livekit/TrackProcessorContext"; import { ElementWidgetActions, widget } from "../../widget"; import { @@ -1317,13 +1316,9 @@ export function createCallViewModel$( windowMode$.pipe(map((mode) => mode !== "pip" && mode !== "flat")), ); - const urlParams$ = observerUrlParams$(scope); - const showFooterUrlParams$ = urlParams$.pipe( - map( - ({ header, showControls }) => - // with no header and no controls we always set showFooter to false. - !(header === HeaderStyle.None && showControls === false), - ), + const urlParams = getUrlParams(); + const showFooterUrlParams = !( + urlParams.header === HeaderStyle.None && urlParams.showControls === false ); const showFooterLayout$ = scope.behavior( windowMode$.pipe( @@ -1380,7 +1375,9 @@ export function createCallViewModel$( ), ); const showFooter$ = scope.behavior( - and$(showFooterLayout$, showFooterUrlParams$), + showFooterLayout$.pipe( + map((showFooter) => showFooter && showFooterUrlParams), + ), ); /** * Whether audio is currently being output through the earpiece.