mirror of
https://github.com/vector-im/element-web.git
synced 2026-05-05 12:16:53 +02:00
More changes
This commit is contained in:
parent
254ecd9b2d
commit
10622a2af9
@ -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>) {
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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}`);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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");
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user