From 52a66b6420290f9d84a561f99c9a4d3ef73f7e5a Mon Sep 17 00:00:00 2001 From: Johannes Krude Date: Fri, 11 Feb 2022 17:05:56 +0100 Subject: [PATCH 1/4] Fetch homeUrl from .well-known --- src/utils/WellKnownUtils.ts | 15 +++++++++++++++ src/utils/pages.ts | 4 ++++ 2 files changed, 19 insertions(+) diff --git a/src/utils/WellKnownUtils.ts b/src/utils/WellKnownUtils.ts index cb3e92a7bde..e7a18c0e151 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"; 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 | undefined, +): 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 bae76be29de..f010a413bce 100644 --- a/src/utils/pages.ts +++ b/src/utils/pages.ts @@ -15,6 +15,7 @@ limitations under the License. */ import { ConfigOptions } from "../SdkConfig"; +import { getEmbeddedPagesWellKnown } from '../utils/WellKnownUtils'; export function getHomePageUrl(appConfig: ConfigOptions): string | null { const pagesConfig = appConfig.embeddedPages; @@ -27,6 +28,9 @@ export function getHomePageUrl(appConfig: ConfigOptions): string | null { pageUrl = appConfig.welcomePageUrl; } + const wkHomeUrl = getEmbeddedPagesWellKnown()?.home_url; + if (wkHomeUrl) pageUrl = wkHomeUrl; + return pageUrl; } From 913a01754829ffb5f4202e354f07efd077e10a49 Mon Sep 17 00:00:00 2001 From: Johannes Krude Date: Fri, 27 May 2022 18:35:57 +0200 Subject: [PATCH 2/4] homeUrl: prefer config.json over .well-known --- src/utils/pages.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/utils/pages.ts b/src/utils/pages.ts index f010a413bce..d4e204ccdf3 100644 --- a/src/utils/pages.ts +++ b/src/utils/pages.ts @@ -21,6 +21,10 @@ export function getHomePageUrl(appConfig: ConfigOptions): string | null { const pagesConfig = appConfig.embeddedPages; let pageUrl = pagesConfig?.homeUrl; + if (!pageUrl) { + pageUrl = getEmbeddedPagesWellKnown()?.home_url; + } + if (!pageUrl) { // This is a deprecated config option for the home page // (despite the name, given we also now have a welcome @@ -28,9 +32,6 @@ export function getHomePageUrl(appConfig: ConfigOptions): string | null { pageUrl = appConfig.welcomePageUrl; } - const wkHomeUrl = getEmbeddedPagesWellKnown()?.home_url; - if (wkHomeUrl) pageUrl = wkHomeUrl; - return pageUrl; } From e3cd867121fa29dc88b5acff49c7ffb04335e170 Mon Sep 17 00:00:00 2001 From: Johannes Krude Date: Fri, 27 May 2022 21:47:49 +0200 Subject: [PATCH 3/4] homeUrl: prefer deprecated config.json variant over .well-known --- src/utils/pages.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/utils/pages.ts b/src/utils/pages.ts index d4e204ccdf3..423d6b58d02 100644 --- a/src/utils/pages.ts +++ b/src/utils/pages.ts @@ -21,10 +21,6 @@ export function getHomePageUrl(appConfig: ConfigOptions): string | null { const pagesConfig = appConfig.embeddedPages; let pageUrl = pagesConfig?.homeUrl; - if (!pageUrl) { - pageUrl = getEmbeddedPagesWellKnown()?.home_url; - } - if (!pageUrl) { // This is a deprecated config option for the home page // (despite the name, given we also now have a welcome @@ -32,6 +28,10 @@ export function getHomePageUrl(appConfig: ConfigOptions): string | null { pageUrl = appConfig.welcomePageUrl; } + if (!pageUrl) { + pageUrl = getEmbeddedPagesWellKnown()?.home_url; + } + return pageUrl; } From 2852c640ad995b5e7bc2ed65df28a46728648800 Mon Sep 17 00:00:00 2001 From: Johannes Krude Date: Mon, 30 May 2022 20:38:31 +0200 Subject: [PATCH 4/4] Apply suggestions from code review Co-authored-by: Michael Telatynski <7t3chguy@gmail.com> --- src/utils/WellKnownUtils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/WellKnownUtils.ts b/src/utils/WellKnownUtils.ts index f808bfab5a0..451f956f16f 100644 --- a/src/utils/WellKnownUtils.ts +++ b/src/utils/WellKnownUtils.ts @@ -76,11 +76,11 @@ export function tileServerFromWellKnown( } export function getEmbeddedPagesWellKnown(): IEmbeddedPagesWellKnown | undefined { - return embeddedPagesFromWellKnown(MatrixClientPeg.get().getClientWellKnown()); + return embeddedPagesFromWellKnown(MatrixClientPeg.get()?.getClientWellKnown()); } export function embeddedPagesFromWellKnown( - clientWellKnown?: IClientWellKnown | undefined, + clientWellKnown?: IClientWellKnown, ): IEmbeddedPagesWellKnown { return (clientWellKnown?.[EMBEDDED_PAGES_WK_PROPERTY]); }