From b776cc8c1fe6fe5f848e88929a21a66583466bc6 Mon Sep 17 00:00:00 2001 From: Johannes Krude Date: Mon, 30 May 2022 21:01:55 +0200 Subject: [PATCH] Fetch homeUrl from .well-known (#7790) * Fetch homeUrl from .well-known * homeUrl: prefer config.json over .well-known * homeUrl: prefer deprecated config.json variant over .well-known * Apply suggestions from code review Co-authored-by: Michael Telatynski <7t3chguy@gmail.com> Co-authored-by: Michael Telatynski <7t3chguy@gmail.com> Co-authored-by: Travis Ralston --- src/utils/WellKnownUtils.ts | 15 +++++++++++++++ src/utils/pages.ts | 5 +++++ 2 files changed, 20 insertions(+) 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; }