More changes

This commit is contained in:
R Midhun Suresh 2025-10-29 23:45:39 +05:30
parent 254ecd9b2d
commit 10622a2af9
No known key found for this signature in database
5 changed files with 21 additions and 14 deletions

View File

@ -14,7 +14,7 @@ import Timer from "../../utils/Timer";
import AutoHideScrollbar from "./AutoHideScrollbar";
import { getKeyBindingsManager } from "../../KeyBindingsManager";
import { KeyBindingAction } from "../../accessibility/KeyboardShortcuts";
import type { SDKContext } from "../../contexts/SDKContext";
import { SDKContext } from "../../contexts/SDKContext";
// The amount of extra scroll distance to allow prior to unfilling.
// See getExcessHeight.
@ -184,6 +184,7 @@ export default class ScrollPanel extends React.Component<IProps> {
private heightUpdateInProgress = false;
public divScroll: HTMLDivElement | null = null;
public static contextType = SDKContext;
declare public context: React.ContextType<typeof SDKContext>;
public constructor(props: IProps, context: React.ContextType<typeof SDKContext>) {

View File

@ -8,22 +8,24 @@ Please see LICENSE files in the repository root for full details.
import { Watchable, type AccountDataApi as IAccountDataApi } from "@element-hq/element-web-module-api";
import { ClientEvent, type MatrixEvent, type MatrixClient } from "matrix-js-sdk/src/matrix";
import { getSafeCli } from "./common";
import { MatrixClientPeg } from "../MatrixClientPeg";
export class AccountDataApi implements IAccountDataApi {
public get(eventType: string): Watchable<unknown> {
const cli = getSafeCli();
const cli = MatrixClientPeg.safeGet();
return new AccountDataWatchable(cli, eventType);
}
public async set(eventType: string, content: any): Promise<void> {
const cli = MatrixClientPeg.safeGet();
//@ts-expect-error: JS-SDK accepts known event-types, intentionally allow arbitrary types.
await getSafeCli().setAccountData(eventType, content);
await cli.setAccountData(eventType, content);
}
public async delete(eventType: string): Promise<void> {
const cli = MatrixClientPeg.safeGet();
//@ts-expect-error: JS-SDK accepts known event-types, intentionally allow arbitrary types.
getSafeCli().deleteAccountData(eventType);
cli.deleteAccountData(eventType);
}
}

View File

@ -9,10 +9,14 @@ import React from "react";
import { type RoomViewProps, type BuiltinsApi } from "@element-hq/element-web-module-api";
import RoomAvatar from "../components/views/avatars/RoomAvatar";
import { getSafeCli } from "./common";
import { MatrixClientPeg } from "../MatrixClientPeg";
interface RoomViewPropsWithRoomId extends RoomViewProps {
roomId: string;
}
export class ElementWebBuiltinsApi implements BuiltinsApi {
private _roomView?: React.ComponentType<RoomViewProps>;
private _roomView?: React.ComponentType<RoomViewPropsWithRoomId>;
/**
* Sets the components used to render a RoomView
@ -23,11 +27,11 @@ export class ElementWebBuiltinsApi implements BuiltinsApi {
*
* @param component The RoomView component
*/
public setRoomViewComponent(component: React.ComponentType<RoomViewProps>): void {
public setRoomViewComponent(component: React.ComponentType<RoomViewPropsWithRoomId>): void {
this._roomView = component;
}
public getRoomViewComponent(): React.ComponentType<RoomViewProps> {
public getRoomViewComponent(): React.ComponentType<RoomViewPropsWithRoomId> {
if (!this._roomView) {
throw new Error("No RoomView component has been set");
}
@ -41,7 +45,7 @@ export class ElementWebBuiltinsApi implements BuiltinsApi {
}
public renderRoomAvatar(roomId: string, size?: string): React.ReactNode {
const room = getSafeCli().getRoom(roomId);
const room = MatrixClientPeg.safeGet().getRoom(roomId);
if (!room) {
throw new Error(`No room such room: ${roomId}`);
}

View File

@ -7,13 +7,13 @@ Please see LICENSE files in the repository root for full details.
import type { ClientApi as IClientApi, Room } from "@element-hq/element-web-module-api";
import { Room as ModuleRoom } from "./models/Room";
import { AccountDataApi } from "./AccountDataApi";
import { getSafeCli } from "./common";
import { MatrixClientPeg } from "../MatrixClientPeg";
export class ClientApi implements IClientApi {
private accountDataApi?: AccountDataApi;
public getRoom(roomId: string): Room | null {
const sdkRoom = getSafeCli().getRoom(roomId);
const sdkRoom = MatrixClientPeg.safeGet().getRoom(roomId);
if (sdkRoom) return new ModuleRoom(sdkRoom);
return null;
}

View File

@ -6,7 +6,7 @@ Please see LICENSE files in the repository root for full details.
*/
import type { MatrixClient } from "matrix-js-sdk/src/matrix";
import { SdkContextClass } from "../contexts/SDKContext";
import { MatrixClientPeg } from "../MatrixClientPeg";
/**
* Get MatrixClient instance from SdkContextClass.
@ -14,7 +14,7 @@ import { SdkContextClass } from "../contexts/SDKContext";
* @returns MatrixClient object
*/
export function getSafeCli(): MatrixClient {
const cli = SdkContextClass.instance.client;
const cli = MatrixClientPeg.get();
if (!cli) {
throw new Error("Could not get MatrixClient from SdkContextClass");
}