diff --git a/src/utils/WellKnownUtils.ts b/src/utils/WellKnownUtils.ts index e41adabb903..451f956f16f 100644 --- a/src/utils/WellKnownUtils.ts +++ b/src/utils/WellKnownUtils.ts @@ -24,6 +24,7 @@ const E2EE_WK_KEY = "io.element.e2ee"; const E2EE_WK_KEY_DEPRECATED = "im.vector.riot.e2ee"; export const TILE_SERVER_WK_KEY = new UnstableValue( "m.tile_server", "org.matrix.msc3488.tile_server"); +const EMBEDDED_PAGES_WK_PROPERTY = "io.element.embedded_pages"; /* eslint-disable camelcase */ export interface ICallBehaviourWellKnown { @@ -39,6 +40,10 @@ export interface IE2EEWellKnown { export interface ITileServerWellKnown { map_style_url?: string; } + +export interface IEmbeddedPagesWellKnown { + home_url?: string; +} /* eslint-enable camelcase */ export function getCallBehaviourWellKnown(): ICallBehaviourWellKnown { @@ -70,6 +75,16 @@ export function tileServerFromWellKnown( ); } +export function getEmbeddedPagesWellKnown(): IEmbeddedPagesWellKnown | undefined { + return embeddedPagesFromWellKnown(MatrixClientPeg.get()?.getClientWellKnown()); +} + +export function embeddedPagesFromWellKnown( + clientWellKnown?: IClientWellKnown, +): IEmbeddedPagesWellKnown { + return (clientWellKnown?.[EMBEDDED_PAGES_WK_PROPERTY]); +} + export function isSecureBackupRequired(): boolean { const wellKnown = getE2EEWellKnown(); return wellKnown && wellKnown["secure_backup_required"] === true; diff --git a/src/utils/pages.ts b/src/utils/pages.ts index 03bab1563b4..75e4fef9bf6 100644 --- a/src/utils/pages.ts +++ b/src/utils/pages.ts @@ -17,6 +17,7 @@ limitations under the License. import { logger } from "matrix-js-sdk/src/logger"; import { IConfigOptions } from "../IConfigOptions"; +import { getEmbeddedPagesWellKnown } from '../utils/WellKnownUtils'; import { SnakedObject } from "./SnakedObject"; export function getHomePageUrl(appConfig: IConfigOptions): string | null { @@ -38,6 +39,10 @@ export function getHomePageUrl(appConfig: IConfigOptions): string | null { } } + if (!pageUrl) { + pageUrl = getEmbeddedPagesWellKnown()?.home_url; + } + return pageUrl; }