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 <travisr@matrix.org>
This commit is contained in:
Johannes Krude 2022-05-30 21:01:55 +02:00 committed by GitHub
parent e87ef3b6ab
commit b776cc8c1f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 0 deletions

View file

@ -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;

View file

@ -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;
}