Introduce a Module API to get application settings. (#34278)

* Add a module API to get application settings.

* fix test
This commit is contained in:
Will Hunt
2026-07-15 19:20:21 +00:00
committed by GitHub
parent 8e0ed84eac
commit cc76070639
9 changed files with 132 additions and 0 deletions
+7
View File
@@ -24,6 +24,7 @@ import { type WidgetLifecycleApi } from "./widget-lifecycle.ts";
import { type WidgetApi } from "./widget.ts";
import { type CustomisationsApi } from "./customisations.ts";
import { type ComposerApi } from "./composer.ts";
import { type SettingsApi } from "./settings.ts";
/**
* Module interface for modules to implement.
@@ -166,6 +167,12 @@ export interface Api
*/
readonly composer: ComposerApi;
/**
* Allows modules to read application settings.
* @alpha Subject to change.
*/
readonly settings: SettingsApi;
/**
* Create a ReactDOM root for rendering React components.
* Exposed to allow modules to avoid needing to bundle their own ReactDOM.
+22
View File
@@ -0,0 +1,22 @@
/*
Copyright 2026 Element Creations Ltd.
SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
Please see LICENSE files in the repository root for full details.
*/
/**
* API for reading application settings.
* @alpha Subject to change.
*/
export interface SettingsApi {
/**
* Gets the value of a setting, computed across all applicable levels
* (device, room, account, config, default, etc.).
* @param settingName - The name of the setting to read.
* @param roomId - Room ID to read a room-scoped value for, or null/undefined for a
* non-room-scoped value.
* @param excludeDefault - If true, do not fall back to the setting's default value.
*/
getValue<T = any>(settingName: string, roomId?: string | null, excludeDefault?: boolean): T | undefined;
}