@@ -16,6 +16,7 @@ import {
|
||||
IUsageLimit,
|
||||
SyncStateData,
|
||||
SyncState,
|
||||
EventType,
|
||||
} from "matrix-js-sdk/src/matrix";
|
||||
import { MatrixCall } from "matrix-js-sdk/src/webrtc/call";
|
||||
import classNames from "classnames";
|
||||
@@ -161,7 +162,7 @@ class LoggedInView extends React.Component<IProps, IState> {
|
||||
|
||||
this._matrixClient.on(ClientEvent.AccountData, this.onAccountData);
|
||||
// check push rules on start up as well
|
||||
monitorSyncedPushRules(this._matrixClient.getAccountData("m.push_rules"), this._matrixClient);
|
||||
monitorSyncedPushRules(this._matrixClient.getAccountData(EventType.PushRules), this._matrixClient);
|
||||
this._matrixClient.on(ClientEvent.Sync, this.onSync);
|
||||
// Call `onSync` with the current state as well
|
||||
this.onSync(this._matrixClient.getSyncState(), null, this._matrixClient.getSyncStateData() ?? undefined);
|
||||
|
||||
@@ -116,7 +116,7 @@ export const useOwnDevices = (): DevicesState => {
|
||||
|
||||
const notificationSettings = new Map<string, LocalNotificationSettings>();
|
||||
Object.keys(devices).forEach((deviceId) => {
|
||||
const eventType = `${LOCAL_NOTIFICATION_SETTINGS_PREFIX.name}.${deviceId}`;
|
||||
const eventType = `${LOCAL_NOTIFICATION_SETTINGS_PREFIX.name}.${deviceId}` as const;
|
||||
const event = matrixClient.getAccountData(eventType);
|
||||
if (event) {
|
||||
notificationSettings.set(deviceId, event.getContent());
|
||||
|
||||
@@ -7,14 +7,14 @@ Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
import { useCallback, useState } from "react";
|
||||
import { ClientEvent, MatrixClient, MatrixEvent } from "matrix-js-sdk/src/matrix";
|
||||
import { AccountDataEvents, ClientEvent, MatrixClient, MatrixEvent } from "matrix-js-sdk/src/matrix";
|
||||
|
||||
import { useTypedEventEmitter } from "./useEventEmitter";
|
||||
|
||||
const tryGetContent = <T extends {}>(ev?: MatrixEvent): T | undefined => ev?.getContent<T>();
|
||||
|
||||
// Hook to simplify listening to Matrix account data
|
||||
export const useAccountData = <T extends {}>(cli: MatrixClient, eventType: string): T => {
|
||||
export const useAccountData = <T extends {}>(cli: MatrixClient, eventType: keyof AccountDataEvents): T => {
|
||||
const [value, setValue] = useState<T | undefined>(() => tryGetContent<T>(cli.getAccountData(eventType)));
|
||||
|
||||
const handler = useCallback(
|
||||
|
||||
@@ -144,7 +144,7 @@ export default class AccountSettingsHandler extends MatrixClientBackedSettingsHa
|
||||
eventType: K,
|
||||
field: F,
|
||||
value: AccountDataEvents[K][F],
|
||||
legacyEventType?: string,
|
||||
legacyEventType?: keyof AccountDataEvents,
|
||||
): Promise<void> {
|
||||
let content = this.getSettings(eventType);
|
||||
if (legacyEventType && !content?.[field]) {
|
||||
@@ -213,7 +213,7 @@ export default class AccountSettingsHandler extends MatrixClientBackedSettingsHa
|
||||
return this.client && !this.client.isGuest();
|
||||
}
|
||||
|
||||
private getSettings(eventType = "im.vector.web.settings"): any {
|
||||
private getSettings(eventType: keyof AccountDataEvents = "im.vector.web.settings"): any {
|
||||
// TODO: [TS] Types on return
|
||||
if (!this.client) return null;
|
||||
|
||||
|
||||
@@ -338,19 +338,18 @@ describe("<RoomSummaryCard />", () => {
|
||||
});
|
||||
|
||||
it("does not show public room label for a DM", async () => {
|
||||
mockClient.getAccountData.mockImplementation(
|
||||
(eventType) =>
|
||||
({
|
||||
[EventType.Direct]: new MatrixEvent({
|
||||
type: EventType.Direct,
|
||||
content: {
|
||||
"@bob:sesame.st": ["some-room-id"],
|
||||
// this room is a DM with ernie
|
||||
"@ernie:sesame.st": ["some-other-room-id", room.roomId],
|
||||
},
|
||||
}),
|
||||
})[eventType],
|
||||
);
|
||||
mockClient.getAccountData.mockImplementation((eventType) => {
|
||||
if (eventType === EventType.Direct) {
|
||||
return new MatrixEvent({
|
||||
type: EventType.Direct,
|
||||
content: {
|
||||
"@bob:sesame.st": ["some-room-id"],
|
||||
// this room is a DM with ernie
|
||||
"@ernie:sesame.st": ["some-other-room-id", room.roomId],
|
||||
},
|
||||
});
|
||||
}
|
||||
});
|
||||
getComponent();
|
||||
|
||||
await flushPromises();
|
||||
|
||||
Reference in New Issue
Block a user