Add Stores API

This commit is contained in:
R Midhun Suresh
2025-10-24 00:08:43 +05:30
parent 6b4f33bee1
commit 200d52a162
3 changed files with 42 additions and 0 deletions
@@ -17,6 +17,7 @@ import { AccountAuthApiExtension } from "./auth.ts";
import { ProfileApiExtension } from "./profile.ts"; import { ProfileApiExtension } from "./profile.ts";
import { ExtrasApi } from "./extras.ts"; import { ExtrasApi } from "./extras.ts";
import { BuiltinsApi } from "./builtins.ts"; import { BuiltinsApi } from "./builtins.ts";
import { StoresApi } from "./stores.ts";
import { ClientApi } from "./client.ts"; import { ClientApi } from "./client.ts";
/** /**
@@ -124,6 +125,11 @@ export interface Api
*/ */
readonly extras: ExtrasApi; readonly extras: ExtrasApi;
/**
* Allows modules to access a limited functionality of certain stores from Element Web.
*/
readonly stores: StoresApi;
/** /**
* Access some very specific functionality from the client. * Access some very specific functionality from the client.
*/ */
@@ -0,0 +1,35 @@
/*
Copyright 2025 New Vector Ltd.
SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
Please see LICENSE files in the repository root for full details.
*/
import type { Room } from "../models/Room";
/**
* Provides some basic functionality of the Room List Store from element-web.
* @public
*/
export interface RoomListStoreApi {
/**
* Get a flat list of sorted room from the RLS.
*/
getRooms(): Room[];
/**
* Returns a promise that resolves when RLS is ready.
*/
waitForReady(): Promise<void>;
}
/**
* Provides access to certain stores from element-web.
* @public
*/
export interface StoresApi {
/**
* Use this to access limited functionality of the RLS from element-web.
*/
getRoomListStore(): RoomListStoreApi;
}
@@ -20,5 +20,6 @@ export type * from "./api/dialog";
export type * from "./api/profile"; export type * from "./api/profile";
export type * from "./api/navigation"; export type * from "./api/navigation";
export type * from "./api/builtins"; export type * from "./api/builtins";
export type * from "./api/stores";
export type * from "./api/client"; export type * from "./api/client";
export * from "./api/watchable"; export * from "./api/watchable";