diff --git a/packages/element-web-module-api/element-web-module-api.api.md b/packages/element-web-module-api/element-web-module-api.api.md index 2d341fde..258573da 100644 --- a/packages/element-web-module-api/element-web-module-api.api.md +++ b/packages/element-web-module-api/element-web-module-api.api.md @@ -289,11 +289,18 @@ export class ModuleLoader { // @public export interface NavigationApi { + openRoom(roomIdOrAlias: string, opts?: OpenRoomOptions): void; // @alpha registerLocationRenderer(path: string, renderer: LocationRenderFunction): void; toMatrixToLink(link: string, join?: boolean): Promise; } +// @public +export interface OpenRoomOptions { + autoJoin?: boolean; + viaServers?: string[]; +} + // @alpha export type OriginalMessageComponentProps = { showUrlPreview?: boolean; diff --git a/packages/element-web-module-api/src/api/navigation.ts b/packages/element-web-module-api/src/api/navigation.ts index f7d60b42..1d8345c5 100644 --- a/packages/element-web-module-api/src/api/navigation.ts +++ b/packages/element-web-module-api/src/api/navigation.ts @@ -14,6 +14,22 @@ import { JSX } from "react"; */ export type LocationRenderFunction = () => JSX.Element; +/** + * The options available for changing the open behaviour. + * @public + */ +export interface OpenRoomOptions { + /** + * The list of servers to join via. + */ + viaServers?: string[]; + + /** + * Whether to automatically join the room if we are not already in it. + */ + autoJoin?: boolean; +} + /** * API methods to navigate the application. * @public @@ -33,4 +49,11 @@ export interface NavigationApi { * @alpha */ registerLocationRenderer(path: string, renderer: LocationRenderFunction): void; + + /** + * Open a room in element-web. + * @param roomIdOrAlias - id/alias of the room to open + * @param opts - Options to control the open action, see {@link OpenRoomOptions} + */ + openRoom(roomIdOrAlias: string, opts?: OpenRoomOptions): void; }