You've already forked matrix-js-sdk
mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-07-31 15:24:23 +03:00
Apply lint rule @typescript-eslint/no-empty-object-type (#4679)
This commit is contained in:
committed by
GitHub
parent
72519a0eb4
commit
ea34cce00a
@ -112,8 +112,13 @@ module.exports = {
|
|||||||
"@typescript-eslint/ban-ts-comment": "off",
|
"@typescript-eslint/ban-ts-comment": "off",
|
||||||
// We're okay with assertion errors when we ask for them
|
// We're okay with assertion errors when we ask for them
|
||||||
"@typescript-eslint/no-non-null-assertion": "off",
|
"@typescript-eslint/no-non-null-assertion": "off",
|
||||||
|
"@typescript-eslint/no-empty-object-type": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
// We do this sometimes to brand interfaces
|
// We do this sometimes to brand interfaces
|
||||||
"@typescript-eslint/no-empty-object-type": "off",
|
allowInterfaces: "with-single-extends",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
|
||||||
"quotes": "off",
|
"quotes": "off",
|
||||||
// We use a `logger` intermediary module
|
// We use a `logger` intermediary module
|
||||||
@ -147,6 +152,7 @@ module.exports = {
|
|||||||
// We don't need super strict typing in test utilities
|
// We don't need super strict typing in test utilities
|
||||||
"@typescript-eslint/explicit-function-return-type": "off",
|
"@typescript-eslint/explicit-function-return-type": "off",
|
||||||
"@typescript-eslint/explicit-member-accessibility": "off",
|
"@typescript-eslint/explicit-member-accessibility": "off",
|
||||||
|
"@typescript-eslint/no-empty-object-type": "off",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -17,6 +17,7 @@ limitations under the License.
|
|||||||
import {
|
import {
|
||||||
ClientEvent,
|
ClientEvent,
|
||||||
ClientEventHandlerMap,
|
ClientEventHandlerMap,
|
||||||
|
EmptyObject,
|
||||||
EventType,
|
EventType,
|
||||||
GroupCall,
|
GroupCall,
|
||||||
GroupCallIntent,
|
GroupCallIntent,
|
||||||
@ -466,7 +467,7 @@ export class MockCallMatrixClient extends TypedEventEmitter<EmittedEvents, Emitt
|
|||||||
[roomId: string, eventType: EventType, content: any, statekey: string]
|
[roomId: string, eventType: EventType, content: any, statekey: string]
|
||||||
>();
|
>();
|
||||||
public sendToDevice = jest.fn<
|
public sendToDevice = jest.fn<
|
||||||
Promise<{}>,
|
Promise<EmptyObject>,
|
||||||
[eventType: string, contentMap: SendToDeviceContentMap, txnId?: string]
|
[eventType: string, contentMap: SendToDeviceContentMap, txnId?: string]
|
||||||
>();
|
>();
|
||||||
|
|
||||||
|
@ -33,6 +33,7 @@ import {
|
|||||||
AccountDataEvents,
|
AccountDataEvents,
|
||||||
Device,
|
Device,
|
||||||
DeviceVerification,
|
DeviceVerification,
|
||||||
|
EmptyObject,
|
||||||
encodeBase64,
|
encodeBase64,
|
||||||
HttpApiEvent,
|
HttpApiEvent,
|
||||||
HttpApiEventHandlerMap,
|
HttpApiEventHandlerMap,
|
||||||
@ -2348,7 +2349,7 @@ class DummyAccountDataClient
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async setAccountData(eventType: string, content: any): Promise<{}> {
|
public async setAccountData(eventType: string, content: any): Promise<EmptyObject> {
|
||||||
this.storage.set(eventType, content);
|
this.storage.set(eventType, content);
|
||||||
this.emit(
|
this.emit(
|
||||||
ClientEvent.AccountData,
|
ClientEvent.AccountData,
|
||||||
|
@ -20,3 +20,5 @@ export type NonEmptyArray<T> = [T, ...T[]];
|
|||||||
export type Without<T, U> = { [P in Exclude<keyof T, keyof U>]?: never };
|
export type Without<T, U> = { [P in Exclude<keyof T, keyof U>]?: never };
|
||||||
export type XOR<T, U> = T | U extends object ? (Without<T, U> & U) | (Without<U, T> & T) : T | U;
|
export type XOR<T, U> = T | U extends object ? (Without<T, U> & U) | (Without<U, T> & T) : T | U;
|
||||||
export type Writeable<T> = { -readonly [P in keyof T]: T[P] };
|
export type Writeable<T> = { -readonly [P in keyof T]: T[P] };
|
||||||
|
|
||||||
|
export type EmptyObject = Record<PropertyKey, never>;
|
||||||
|
@ -38,7 +38,7 @@ import {
|
|||||||
import { IGroupCallRoomMemberState, IGroupCallRoomState } from "../webrtc/groupCall.ts";
|
import { IGroupCallRoomMemberState, IGroupCallRoomState } from "../webrtc/groupCall.ts";
|
||||||
import { MSC3089EventContent } from "../models/MSC3089Branch.ts";
|
import { MSC3089EventContent } from "../models/MSC3089Branch.ts";
|
||||||
import { M_BEACON, M_BEACON_INFO, MBeaconEventContent, MBeaconInfoEventContent } from "./beacon.ts";
|
import { M_BEACON, M_BEACON_INFO, MBeaconEventContent, MBeaconInfoEventContent } from "./beacon.ts";
|
||||||
import { XOR } from "./common.ts";
|
import { EmptyObject } from "./common.ts";
|
||||||
import { ReactionEventContent, RoomMessageEventContent, StickerEventContent } from "./events.ts";
|
import { ReactionEventContent, RoomMessageEventContent, StickerEventContent } from "./events.ts";
|
||||||
import {
|
import {
|
||||||
MCallAnswer,
|
MCallAnswer,
|
||||||
@ -337,7 +337,7 @@ export interface StateEvents {
|
|||||||
[EventType.RoomJoinRules]: RoomJoinRulesEventContent;
|
[EventType.RoomJoinRules]: RoomJoinRulesEventContent;
|
||||||
[EventType.RoomMember]: RoomMemberEventContent;
|
[EventType.RoomMember]: RoomMemberEventContent;
|
||||||
// XXX: Spec says this event has 3 required fields but kicking such an invitation requires sending `{}`
|
// XXX: Spec says this event has 3 required fields but kicking such an invitation requires sending `{}`
|
||||||
[EventType.RoomThirdPartyInvite]: XOR<RoomThirdPartyInviteEventContent, {}>;
|
[EventType.RoomThirdPartyInvite]: RoomThirdPartyInviteEventContent | EmptyObject;
|
||||||
[EventType.RoomPowerLevels]: RoomPowerLevelsEventContent;
|
[EventType.RoomPowerLevels]: RoomPowerLevelsEventContent;
|
||||||
[EventType.RoomName]: RoomNameEventContent;
|
[EventType.RoomName]: RoomNameEventContent;
|
||||||
[EventType.RoomTopic]: RoomTopicEventContent;
|
[EventType.RoomTopic]: RoomTopicEventContent;
|
||||||
@ -351,13 +351,13 @@ export interface StateEvents {
|
|||||||
[EventType.SpaceChild]: SpaceChildEventContent;
|
[EventType.SpaceChild]: SpaceChildEventContent;
|
||||||
[EventType.SpaceParent]: SpaceParentEventContent;
|
[EventType.SpaceParent]: SpaceParentEventContent;
|
||||||
|
|
||||||
[EventType.PolicyRuleUser]: XOR<PolicyRuleEventContent, {}>;
|
[EventType.PolicyRuleUser]: PolicyRuleEventContent | EmptyObject;
|
||||||
[EventType.PolicyRuleRoom]: XOR<PolicyRuleEventContent, {}>;
|
[EventType.PolicyRuleRoom]: PolicyRuleEventContent | EmptyObject;
|
||||||
[EventType.PolicyRuleServer]: XOR<PolicyRuleEventContent, {}>;
|
[EventType.PolicyRuleServer]: PolicyRuleEventContent | EmptyObject;
|
||||||
|
|
||||||
// MSC3401
|
// MSC3401
|
||||||
[EventType.GroupCallPrefix]: IGroupCallRoomState;
|
[EventType.GroupCallPrefix]: IGroupCallRoomState;
|
||||||
[EventType.GroupCallMemberPrefix]: XOR<IGroupCallRoomMemberState, XOR<SessionMembershipData, {}>>;
|
[EventType.GroupCallMemberPrefix]: IGroupCallRoomMemberState | SessionMembershipData | EmptyObject;
|
||||||
|
|
||||||
// MSC3089
|
// MSC3089
|
||||||
[UNSTABLE_MSC3089_BRANCH.name]: MSC3089EventContent;
|
[UNSTABLE_MSC3089_BRANCH.name]: MSC3089EventContent;
|
||||||
@ -372,7 +372,7 @@ export interface StateEvents {
|
|||||||
export interface AccountDataEvents extends SecretStorageAccountDataEvents {
|
export interface AccountDataEvents extends SecretStorageAccountDataEvents {
|
||||||
[EventType.PushRules]: IPushRules;
|
[EventType.PushRules]: IPushRules;
|
||||||
[EventType.Direct]: { [userId: string]: string[] };
|
[EventType.Direct]: { [userId: string]: string[] };
|
||||||
[EventType.IgnoredUserList]: { [userId: string]: {} };
|
[EventType.IgnoredUserList]: { ignored_users: { [userId: string]: EmptyObject } };
|
||||||
"m.secret_storage.default_key": { key: string };
|
"m.secret_storage.default_key": { key: string };
|
||||||
// Flag set by the rust SDK (Element X) and also used by us to mark that the user opted out of backup
|
// Flag set by the rust SDK (Element X) and also used by us to mark that the user opted out of backup
|
||||||
// (I don't know why it's m.org.matrix...)
|
// (I don't know why it's m.org.matrix...)
|
||||||
|
@ -97,12 +97,12 @@ export type AnyRelation = TSNamespace<typeof REFERENCE_RELATION> | string;
|
|||||||
/**
|
/**
|
||||||
* An m.relates_to relationship
|
* An m.relates_to relationship
|
||||||
*/
|
*/
|
||||||
export type RelatesToRelationship<R = never, C = never> = {
|
export type RelatesToRelationship<R = never> = {
|
||||||
"m.relates_to": {
|
"m.relates_to": {
|
||||||
// See https://github.com/microsoft/TypeScript/issues/23182#issuecomment-379091887 for array syntax
|
// See https://github.com/microsoft/TypeScript/issues/23182#issuecomment-379091887 for array syntax
|
||||||
rel_type: [R] extends [never] ? AnyRelation : TSNamespace<R>;
|
rel_type: [R] extends [never] ? AnyRelation : TSNamespace<R>;
|
||||||
event_id: string;
|
event_id: string;
|
||||||
} & DefaultNever<C, {}>;
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
1
src/@types/global.d.ts
vendored
1
src/@types/global.d.ts
vendored
@ -60,6 +60,7 @@ declare global {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
||||||
interface DummyInterfaceWeShouldntBeUsingThis {}
|
interface DummyInterfaceWeShouldntBeUsingThis {}
|
||||||
|
|
||||||
interface Navigator {
|
interface Navigator {
|
||||||
|
@ -22,6 +22,7 @@ import {
|
|||||||
RelatesToRelationship,
|
RelatesToRelationship,
|
||||||
TSNamespace,
|
TSNamespace,
|
||||||
} from "./extensible_events.ts";
|
} from "./extensible_events.ts";
|
||||||
|
import { EmptyObject } from "./common.ts";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Identifier for a disclosed poll.
|
* Identifier for a disclosed poll.
|
||||||
@ -109,7 +110,7 @@ export const M_POLL_END = new UnstableValue("m.poll.end", "org.matrix.msc3381.po
|
|||||||
/**
|
/**
|
||||||
* The event definition for an m.poll.end event (in content)
|
* The event definition for an m.poll.end event (in content)
|
||||||
*/
|
*/
|
||||||
export type PollEndEvent = EitherAnd<{ [M_POLL_END.name]: {} }, { [M_POLL_END.altName]: {} }>;
|
export type PollEndEvent = EitherAnd<{ [M_POLL_END.name]: EmptyObject }, { [M_POLL_END.altName]: EmptyObject }>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The content for an m.poll.end event
|
* The content for an m.poll.end event
|
||||||
|
105
src/client.ts
105
src/client.ts
@ -249,6 +249,7 @@ import { Capabilities, ServerCapabilities } from "./serverCapabilities.ts";
|
|||||||
import { sha256 } from "./digest.ts";
|
import { sha256 } from "./digest.ts";
|
||||||
import { keyFromAuthData } from "./common-crypto/key-passphrase.ts";
|
import { keyFromAuthData } from "./common-crypto/key-passphrase.ts";
|
||||||
import { discoverAndValidateOIDCIssuerWellKnown, OidcClientConfig, validateAuthMetadataAndKeys } from "./oidc/index.ts";
|
import { discoverAndValidateOIDCIssuerWellKnown, OidcClientConfig, validateAuthMetadataAndKeys } from "./oidc/index.ts";
|
||||||
|
import { EmptyObject } from "./@types/common.ts";
|
||||||
|
|
||||||
export type Store = IStore;
|
export type Store = IStore;
|
||||||
|
|
||||||
@ -4251,7 +4252,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
public setAccountData<K extends keyof AccountDataEvents>(
|
public setAccountData<K extends keyof AccountDataEvents>(
|
||||||
eventType: K,
|
eventType: K,
|
||||||
content: AccountDataEvents[K] | Record<string, never>,
|
content: AccountDataEvents[K] | Record<string, never>,
|
||||||
): Promise<{}> {
|
): Promise<EmptyObject> {
|
||||||
const path = utils.encodeUri("/user/$userId/account_data/$type", {
|
const path = utils.encodeUri("/user/$userId/account_data/$type", {
|
||||||
$userId: this.credentials.userId!,
|
$userId: this.credentials.userId!,
|
||||||
$type: eventType,
|
$type: eventType,
|
||||||
@ -4338,8 +4339,8 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: an empty object
|
* @returns Promise which resolves: an empty object
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public setIgnoredUsers(userIds: string[]): Promise<{}> {
|
public setIgnoredUsers(userIds: string[]): Promise<EmptyObject> {
|
||||||
const content = { ignored_users: {} as Record<string, object> };
|
const content = { ignored_users: {} as Record<string, EmptyObject> };
|
||||||
userIds.forEach((u) => {
|
userIds.forEach((u) => {
|
||||||
content.ignored_users[u] = {};
|
content.ignored_users[u] = {};
|
||||||
});
|
});
|
||||||
@ -4520,7 +4521,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: to an empty object
|
* @returns Promise which resolves: to an empty object
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public setRoomTag(roomId: string, tagName: string, metadata: ITagMetadata = {}): Promise<{}> {
|
public setRoomTag(roomId: string, tagName: string, metadata: ITagMetadata = {}): Promise<EmptyObject> {
|
||||||
const path = utils.encodeUri("/user/$userId/rooms/$roomId/tags/$tag", {
|
const path = utils.encodeUri("/user/$userId/rooms/$roomId/tags/$tag", {
|
||||||
$userId: this.credentials.userId!,
|
$userId: this.credentials.userId!,
|
||||||
$roomId: roomId,
|
$roomId: roomId,
|
||||||
@ -4534,7 +4535,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: to an empty object
|
* @returns Promise which resolves: to an empty object
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public deleteRoomTag(roomId: string, tagName: string): Promise<{}> {
|
public deleteRoomTag(roomId: string, tagName: string): Promise<EmptyObject> {
|
||||||
const path = utils.encodeUri("/user/$userId/rooms/$roomId/tags/$tag", {
|
const path = utils.encodeUri("/user/$userId/rooms/$roomId/tags/$tag", {
|
||||||
$userId: this.credentials.userId!,
|
$userId: this.credentials.userId!,
|
||||||
$roomId: roomId,
|
$roomId: roomId,
|
||||||
@ -4549,7 +4550,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: to an empty object `{}`
|
* @returns Promise which resolves: to an empty object `{}`
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public setRoomAccountData(roomId: string, eventType: string, content: Record<string, any>): Promise<{}> {
|
public setRoomAccountData(roomId: string, eventType: string, content: Record<string, any>): Promise<EmptyObject> {
|
||||||
const path = utils.encodeUri("/user/$userId/rooms/$roomId/account_data/$type", {
|
const path = utils.encodeUri("/user/$userId/rooms/$roomId/account_data/$type", {
|
||||||
$userId: this.credentials.userId!,
|
$userId: this.credentials.userId!,
|
||||||
$roomId: roomId,
|
$roomId: roomId,
|
||||||
@ -5449,7 +5450,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* Check progress on [MSC4140](https://github.com/matrix-org/matrix-spec-proposals/pull/4140) for more details.
|
* Check progress on [MSC4140](https://github.com/matrix-org/matrix-spec-proposals/pull/4140) for more details.
|
||||||
*/
|
*/
|
||||||
// eslint-disable-next-line
|
// eslint-disable-next-line
|
||||||
public async _unstable_updateDelayedEvent(delayId: string, action: UpdateDelayedEventAction): Promise<{}> {
|
public async _unstable_updateDelayedEvent(delayId: string, action: UpdateDelayedEventAction): Promise<EmptyObject> {
|
||||||
if (!(await this.doesServerSupportUnstableFeature(UNSTABLE_MSC4140_DELAYED_EVENTS))) {
|
if (!(await this.doesServerSupportUnstableFeature(UNSTABLE_MSC4140_DELAYED_EVENTS))) {
|
||||||
throw Error("Server does not support the delayed events API");
|
throw Error("Server does not support the delayed events API");
|
||||||
}
|
}
|
||||||
@ -5480,7 +5481,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
receiptType: ReceiptType,
|
receiptType: ReceiptType,
|
||||||
body?: Record<string, any>,
|
body?: Record<string, any>,
|
||||||
unthreaded = false,
|
unthreaded = false,
|
||||||
): Promise<{}> {
|
): Promise<EmptyObject> {
|
||||||
if (this.isGuest()) {
|
if (this.isGuest()) {
|
||||||
return Promise.resolve({}); // guests cannot send receipts so don't bother.
|
return Promise.resolve({}); // guests cannot send receipts so don't bother.
|
||||||
}
|
}
|
||||||
@ -5496,7 +5497,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
const shouldAddThreadId = !unthreaded && this.supportsThreads();
|
const shouldAddThreadId = !unthreaded && this.supportsThreads();
|
||||||
const fullBody = shouldAddThreadId ? { ...body, thread_id: threadIdForReceipt(event) } : body;
|
const fullBody = shouldAddThreadId ? { ...body, thread_id: threadIdForReceipt(event) } : body;
|
||||||
|
|
||||||
const promise = this.http.authedRequest<{}>(Method.Post, path, undefined, fullBody || {});
|
const promise = this.http.authedRequest<EmptyObject>(Method.Post, path, undefined, fullBody || {});
|
||||||
|
|
||||||
const room = this.getRoom(event.getRoomId());
|
const room = this.getRoom(event.getRoomId());
|
||||||
if (room && this.credentials.userId) {
|
if (room && this.credentials.userId) {
|
||||||
@ -5516,7 +5517,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
event: MatrixEvent | null,
|
event: MatrixEvent | null,
|
||||||
receiptType = ReceiptType.Read,
|
receiptType = ReceiptType.Read,
|
||||||
unthreaded = false,
|
unthreaded = false,
|
||||||
): Promise<{} | undefined> {
|
): Promise<EmptyObject | undefined> {
|
||||||
if (!event) return;
|
if (!event) return;
|
||||||
const eventId = event.getId()!;
|
const eventId = event.getId()!;
|
||||||
const room = this.getRoom(event.getRoomId());
|
const room = this.getRoom(event.getRoomId());
|
||||||
@ -5546,7 +5547,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
rmEventId: string,
|
rmEventId: string,
|
||||||
rrEvent?: MatrixEvent,
|
rrEvent?: MatrixEvent,
|
||||||
rpEvent?: MatrixEvent,
|
rpEvent?: MatrixEvent,
|
||||||
): Promise<{}> {
|
): Promise<EmptyObject> {
|
||||||
const room = this.getRoom(roomId);
|
const room = this.getRoom(roomId);
|
||||||
if (room?.hasPendingEvent(rmEventId)) {
|
if (room?.hasPendingEvent(rmEventId)) {
|
||||||
throw new Error(`Cannot set read marker to a pending event (${rmEventId})`);
|
throw new Error(`Cannot set read marker to a pending event (${rmEventId})`);
|
||||||
@ -5627,7 +5628,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: to an empty object `{}`
|
* @returns Promise which resolves: to an empty object `{}`
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public sendTyping(roomId: string, isTyping: boolean, timeoutMs: number): Promise<{}> {
|
public sendTyping(roomId: string, isTyping: boolean, timeoutMs: number): Promise<EmptyObject> {
|
||||||
if (this.isGuest()) {
|
if (this.isGuest()) {
|
||||||
return Promise.resolve({}); // guests cannot send typing notifications so don't bother.
|
return Promise.resolve({}); // guests cannot send typing notifications so don't bother.
|
||||||
}
|
}
|
||||||
@ -5745,7 +5746,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: `{}` an empty object.
|
* @returns Promise which resolves: `{}` an empty object.
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public invite(roomId: string, userId: string, reason?: string): Promise<{}> {
|
public invite(roomId: string, userId: string, reason?: string): Promise<EmptyObject> {
|
||||||
return this.membershipChange(roomId, userId, KnownMembership.Invite, reason);
|
return this.membershipChange(roomId, userId, KnownMembership.Invite, reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5756,7 +5757,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: `{}` an empty object.
|
* @returns Promise which resolves: `{}` an empty object.
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public inviteByEmail(roomId: string, email: string): Promise<{}> {
|
public inviteByEmail(roomId: string, email: string): Promise<EmptyObject> {
|
||||||
return this.inviteByThreePid(roomId, "email", email);
|
return this.inviteByThreePid(roomId, "email", email);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5768,7 +5769,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: `{}` an empty object.
|
* @returns Promise which resolves: `{}` an empty object.
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public async inviteByThreePid(roomId: string, medium: string, address: string): Promise<{}> {
|
public async inviteByThreePid(roomId: string, medium: string, address: string): Promise<EmptyObject> {
|
||||||
const path = utils.encodeUri("/rooms/$roomId/invite", { $roomId: roomId });
|
const path = utils.encodeUri("/rooms/$roomId/invite", { $roomId: roomId });
|
||||||
|
|
||||||
const identityServerUrl = this.getIdentityServerUrl(true);
|
const identityServerUrl = this.getIdentityServerUrl(true);
|
||||||
@ -5800,7 +5801,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: `{}` an empty object.
|
* @returns Promise which resolves: `{}` an empty object.
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public leave(roomId: string): Promise<{}> {
|
public leave(roomId: string): Promise<EmptyObject> {
|
||||||
return this.membershipChange(roomId, undefined, KnownMembership.Leave);
|
return this.membershipChange(roomId, undefined, KnownMembership.Leave);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5858,7 +5859,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: TODO
|
* @returns Promise which resolves: TODO
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public ban(roomId: string, userId: string, reason?: string): Promise<{}> {
|
public ban(roomId: string, userId: string, reason?: string): Promise<EmptyObject> {
|
||||||
return this.membershipChange(roomId, userId, KnownMembership.Ban, reason);
|
return this.membershipChange(roomId, userId, KnownMembership.Ban, reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5868,12 +5869,12 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: `{}` an empty object.
|
* @returns Promise which resolves: `{}` an empty object.
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public async forget(roomId: string, deleteRoom = true): Promise<{}> {
|
public async forget(roomId: string, deleteRoom = true): Promise<EmptyObject> {
|
||||||
// API returns an empty object
|
// API returns an empty object
|
||||||
const path = utils.encodeUri("/rooms/$room_id/forget", {
|
const path = utils.encodeUri("/rooms/$room_id/forget", {
|
||||||
$room_id: roomId,
|
$room_id: roomId,
|
||||||
});
|
});
|
||||||
const response = await this.http.authedRequest<{}>(Method.Post, path);
|
const response = await this.http.authedRequest<EmptyObject>(Method.Post, path);
|
||||||
if (deleteRoom) {
|
if (deleteRoom) {
|
||||||
this.store.removeRoom(roomId);
|
this.store.removeRoom(roomId);
|
||||||
this.emit(ClientEvent.DeleteRoom, roomId);
|
this.emit(ClientEvent.DeleteRoom, roomId);
|
||||||
@ -5885,7 +5886,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: Object (currently empty)
|
* @returns Promise which resolves: Object (currently empty)
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public unban(roomId: string, userId: string): Promise<{}> {
|
public unban(roomId: string, userId: string): Promise<EmptyObject> {
|
||||||
// unbanning != set their state to leave: this used to be
|
// unbanning != set their state to leave: this used to be
|
||||||
// the case, but was then changed so that leaving was always
|
// the case, but was then changed so that leaving was always
|
||||||
// a revoking of privilege, otherwise two people racing to
|
// a revoking of privilege, otherwise two people racing to
|
||||||
@ -5905,7 +5906,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: `{}` an empty object.
|
* @returns Promise which resolves: `{}` an empty object.
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public kick(roomId: string, userId: string, reason?: string): Promise<{}> {
|
public kick(roomId: string, userId: string, reason?: string): Promise<EmptyObject> {
|
||||||
const path = utils.encodeUri("/rooms/$roomId/kick", {
|
const path = utils.encodeUri("/rooms/$roomId/kick", {
|
||||||
$roomId: roomId,
|
$roomId: roomId,
|
||||||
});
|
});
|
||||||
@ -5921,7 +5922,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
userId: string | undefined,
|
userId: string | undefined,
|
||||||
membership: Membership,
|
membership: Membership,
|
||||||
reason?: string,
|
reason?: string,
|
||||||
): Promise<{}> {
|
): Promise<EmptyObject> {
|
||||||
// API returns an empty object
|
// API returns an empty object
|
||||||
const path = utils.encodeUri("/rooms/$room_id/$membership", {
|
const path = utils.encodeUri("/rooms/$room_id/$membership", {
|
||||||
$room_id: roomId,
|
$room_id: roomId,
|
||||||
@ -5972,9 +5973,9 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
// eslint-disable-next-line camelcase
|
// eslint-disable-next-line camelcase
|
||||||
public setProfileInfo(info: "avatar_url", data: { avatar_url: string }): Promise<{}>;
|
public setProfileInfo(info: "avatar_url", data: { avatar_url: string }): Promise<EmptyObject>;
|
||||||
public setProfileInfo(info: "displayname", data: { displayname: string }): Promise<{}>;
|
public setProfileInfo(info: "displayname", data: { displayname: string }): Promise<EmptyObject>;
|
||||||
public setProfileInfo(info: "avatar_url" | "displayname", data: object): Promise<{}> {
|
public setProfileInfo(info: "avatar_url" | "displayname", data: object): Promise<EmptyObject> {
|
||||||
const path = utils.encodeUri("/profile/$userId/$info", {
|
const path = utils.encodeUri("/profile/$userId/$info", {
|
||||||
$userId: this.credentials.userId!,
|
$userId: this.credentials.userId!,
|
||||||
$info: info,
|
$info: info,
|
||||||
@ -5986,7 +5987,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: `{}` an empty object.
|
* @returns Promise which resolves: `{}` an empty object.
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public async setDisplayName(name: string): Promise<{}> {
|
public async setDisplayName(name: string): Promise<EmptyObject> {
|
||||||
const prom = await this.setProfileInfo("displayname", { displayname: name });
|
const prom = await this.setProfileInfo("displayname", { displayname: name });
|
||||||
// XXX: synthesise a profile update for ourselves because Synapse is broken and won't
|
// XXX: synthesise a profile update for ourselves because Synapse is broken and won't
|
||||||
const user = this.getUser(this.getUserId()!);
|
const user = this.getUser(this.getUserId()!);
|
||||||
@ -6001,7 +6002,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: `{}` an empty object.
|
* @returns Promise which resolves: `{}` an empty object.
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public async setAvatarUrl(url: string): Promise<{}> {
|
public async setAvatarUrl(url: string): Promise<EmptyObject> {
|
||||||
const prom = await this.setProfileInfo("avatar_url", { avatar_url: url });
|
const prom = await this.setProfileInfo("avatar_url", { avatar_url: url });
|
||||||
// XXX: synthesise a profile update for ourselves because Synapse is broken and won't
|
// XXX: synthesise a profile update for ourselves because Synapse is broken and won't
|
||||||
const user = this.getUser(this.getUserId()!);
|
const user = this.getUser(this.getUserId()!);
|
||||||
@ -8363,7 +8364,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @param stopClient - whether to stop the client before calling /logout to prevent invalid token errors.
|
* @param stopClient - whether to stop the client before calling /logout to prevent invalid token errors.
|
||||||
* @returns Promise which resolves: On success, the empty object `{}`
|
* @returns Promise which resolves: On success, the empty object `{}`
|
||||||
*/
|
*/
|
||||||
public async logout(stopClient = false): Promise<{}> {
|
public async logout(stopClient = false): Promise<EmptyObject> {
|
||||||
if (this.crypto?.backupManager?.getKeyBackupEnabled()) {
|
if (this.crypto?.backupManager?.getKeyBackupEnabled()) {
|
||||||
try {
|
try {
|
||||||
while ((await this.crypto.backupManager.backupPendingKeys(200)) > 0);
|
while ((await this.crypto.backupManager.backupPendingKeys(200)) > 0);
|
||||||
@ -8421,7 +8422,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* or UIA auth data.
|
* or UIA auth data.
|
||||||
*/
|
*/
|
||||||
public async requestLoginToken(auth?: AuthDict): Promise<UIAResponse<LoginTokenPostResponse>> {
|
public async requestLoginToken(auth?: AuthDict): Promise<UIAResponse<LoginTokenPostResponse>> {
|
||||||
const body: UIARequest<{}> = { auth };
|
const body: UIARequest<unknown> = { auth };
|
||||||
return this.http.authedRequest<UIAResponse<LoginTokenPostResponse>>(
|
return this.http.authedRequest<UIAResponse<LoginTokenPostResponse>>(
|
||||||
Method.Post,
|
Method.Post,
|
||||||
"/login/get_token",
|
"/login/get_token",
|
||||||
@ -8662,7 +8663,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
rmEventId: string,
|
rmEventId: string,
|
||||||
rrEventId?: string,
|
rrEventId?: string,
|
||||||
rpEventId?: string,
|
rpEventId?: string,
|
||||||
): Promise<{}> {
|
): Promise<EmptyObject> {
|
||||||
const path = utils.encodeUri("/rooms/$roomId/read_markers", {
|
const path = utils.encodeUri("/rooms/$roomId/read_markers", {
|
||||||
$roomId: roomId,
|
$roomId: roomId,
|
||||||
});
|
});
|
||||||
@ -8737,7 +8738,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: an empty object `{}`
|
* @returns Promise which resolves: an empty object `{}`
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public createAlias(alias: string, roomId: string): Promise<{}> {
|
public createAlias(alias: string, roomId: string): Promise<EmptyObject> {
|
||||||
const path = utils.encodeUri("/directory/room/$alias", {
|
const path = utils.encodeUri("/directory/room/$alias", {
|
||||||
$alias: alias,
|
$alias: alias,
|
||||||
});
|
});
|
||||||
@ -8754,7 +8755,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: an empty object `{}`.
|
* @returns Promise which resolves: an empty object `{}`.
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public deleteAlias(alias: string): Promise<{}> {
|
public deleteAlias(alias: string): Promise<EmptyObject> {
|
||||||
const path = utils.encodeUri("/directory/room/$alias", {
|
const path = utils.encodeUri("/directory/room/$alias", {
|
||||||
$alias: alias,
|
$alias: alias,
|
||||||
});
|
});
|
||||||
@ -8808,7 +8809,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: to an empty object `{}`
|
* @returns Promise which resolves: to an empty object `{}`
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public setRoomDirectoryVisibility(roomId: string, visibility: Visibility): Promise<{}> {
|
public setRoomDirectoryVisibility(roomId: string, visibility: Visibility): Promise<EmptyObject> {
|
||||||
const path = utils.encodeUri("/directory/list/room/$roomId", {
|
const path = utils.encodeUri("/directory/list/room/$roomId", {
|
||||||
$roomId: roomId,
|
$roomId: roomId,
|
||||||
});
|
});
|
||||||
@ -9083,7 +9084,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: to an empty object `{}`
|
* @returns Promise which resolves: to an empty object `{}`
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public async addThreePidOnly(data: IAddThreePidOnlyBody): Promise<{}> {
|
public async addThreePidOnly(data: IAddThreePidOnlyBody): Promise<EmptyObject> {
|
||||||
const path = "/account/3pid/add";
|
const path = "/account/3pid/add";
|
||||||
return this.http.authedRequest(Method.Post, path, undefined, data);
|
return this.http.authedRequest(Method.Post, path, undefined, data);
|
||||||
}
|
}
|
||||||
@ -9099,7 +9100,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: to an empty object `{}`
|
* @returns Promise which resolves: to an empty object `{}`
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public async bindThreePid(data: IBindThreePidBody): Promise<{}> {
|
public async bindThreePid(data: IBindThreePidBody): Promise<EmptyObject> {
|
||||||
const path = "/account/3pid/bind";
|
const path = "/account/3pid/bind";
|
||||||
return this.http.authedRequest(Method.Post, path, undefined, data);
|
return this.http.authedRequest(Method.Post, path, undefined, data);
|
||||||
}
|
}
|
||||||
@ -9153,7 +9154,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: to an empty object `{}`
|
* @returns Promise which resolves: to an empty object `{}`
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public setPassword(authDict: AuthDict, newPassword: string, logoutDevices?: boolean): Promise<{}> {
|
public setPassword(authDict: AuthDict, newPassword: string, logoutDevices?: boolean): Promise<EmptyObject> {
|
||||||
const path = "/account/password";
|
const path = "/account/password";
|
||||||
const data = {
|
const data = {
|
||||||
auth: authDict,
|
auth: authDict,
|
||||||
@ -9161,7 +9162,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
logout_devices: logoutDevices,
|
logout_devices: logoutDevices,
|
||||||
};
|
};
|
||||||
|
|
||||||
return this.http.authedRequest<{}>(Method.Post, path, undefined, data);
|
return this.http.authedRequest<EmptyObject>(Method.Post, path, undefined, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -9195,7 +9196,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
// eslint-disable-next-line camelcase
|
// eslint-disable-next-line camelcase
|
||||||
public setDeviceDetails(deviceId: string, body: { display_name: string }): Promise<{}> {
|
public setDeviceDetails(deviceId: string, body: { display_name: string }): Promise<EmptyObject> {
|
||||||
const path = utils.encodeUri("/devices/$device_id", {
|
const path = utils.encodeUri("/devices/$device_id", {
|
||||||
$device_id: deviceId,
|
$device_id: deviceId,
|
||||||
});
|
});
|
||||||
@ -9211,7 +9212,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: result object
|
* @returns Promise which resolves: result object
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public deleteDevice(deviceId: string, auth?: AuthDict): Promise<{}> {
|
public deleteDevice(deviceId: string, auth?: AuthDict): Promise<EmptyObject> {
|
||||||
const path = utils.encodeUri("/devices/$device_id", {
|
const path = utils.encodeUri("/devices/$device_id", {
|
||||||
$device_id: deviceId,
|
$device_id: deviceId,
|
||||||
});
|
});
|
||||||
@ -9233,7 +9234,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: result object
|
* @returns Promise which resolves: result object
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public deleteMultipleDevices(devices: string[], auth?: AuthDict): Promise<{}> {
|
public deleteMultipleDevices(devices: string[], auth?: AuthDict): Promise<EmptyObject> {
|
||||||
const body: Body = { devices };
|
const body: Body = { devices };
|
||||||
|
|
||||||
if (auth) {
|
if (auth) {
|
||||||
@ -9274,7 +9275,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: Empty json object on success
|
* @returns Promise which resolves: Empty json object on success
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public setPusher(pusher: IPusherRequest): Promise<{}> {
|
public setPusher(pusher: IPusherRequest): Promise<EmptyObject> {
|
||||||
const path = "/pushers/set";
|
const path = "/pushers/set";
|
||||||
return this.http.authedRequest(Method.Post, path, undefined, pusher);
|
return this.http.authedRequest(Method.Post, path, undefined, pusher);
|
||||||
}
|
}
|
||||||
@ -9286,7 +9287,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: Empty json object on success
|
* @returns Promise which resolves: Empty json object on success
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public removePusher(pushKey: string, appId: string): Promise<{}> {
|
public removePusher(pushKey: string, appId: string): Promise<EmptyObject> {
|
||||||
const path = "/pushers/set";
|
const path = "/pushers/set";
|
||||||
const body = {
|
const body = {
|
||||||
pushkey: pushKey,
|
pushkey: pushKey,
|
||||||
@ -9304,7 +9305,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
public setLocalNotificationSettings(
|
public setLocalNotificationSettings(
|
||||||
deviceId: string,
|
deviceId: string,
|
||||||
notificationSettings: LocalNotificationSettings,
|
notificationSettings: LocalNotificationSettings,
|
||||||
): Promise<{}> {
|
): Promise<EmptyObject> {
|
||||||
const key = `${LOCAL_NOTIFICATION_SETTINGS_PREFIX.name}.${deviceId}` as const;
|
const key = `${LOCAL_NOTIFICATION_SETTINGS_PREFIX.name}.${deviceId}` as const;
|
||||||
return this.setAccountData(key, notificationSettings);
|
return this.setAccountData(key, notificationSettings);
|
||||||
}
|
}
|
||||||
@ -9341,7 +9342,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
kind: PushRuleKind,
|
kind: PushRuleKind,
|
||||||
ruleId: Exclude<string, RuleId>,
|
ruleId: Exclude<string, RuleId>,
|
||||||
body: Pick<IPushRule, "actions" | "conditions" | "pattern">,
|
body: Pick<IPushRule, "actions" | "conditions" | "pattern">,
|
||||||
): Promise<{}> {
|
): Promise<EmptyObject> {
|
||||||
// NB. Scope not uri encoded because devices need the '/'
|
// NB. Scope not uri encoded because devices need the '/'
|
||||||
const path = utils.encodeUri("/pushrules/" + scope + "/$kind/$ruleId", {
|
const path = utils.encodeUri("/pushrules/" + scope + "/$kind/$ruleId", {
|
||||||
$kind: kind,
|
$kind: kind,
|
||||||
@ -9354,7 +9355,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @returns Promise which resolves: an empty object `{}`
|
* @returns Promise which resolves: an empty object `{}`
|
||||||
* @returns Rejects: with an error response.
|
* @returns Rejects: with an error response.
|
||||||
*/
|
*/
|
||||||
public deletePushRule(scope: string, kind: PushRuleKind, ruleId: Exclude<string, RuleId>): Promise<{}> {
|
public deletePushRule(scope: string, kind: PushRuleKind, ruleId: Exclude<string, RuleId>): Promise<EmptyObject> {
|
||||||
// NB. Scope not uri encoded because devices need the '/'
|
// NB. Scope not uri encoded because devices need the '/'
|
||||||
const path = utils.encodeUri("/pushrules/" + scope + "/$kind/$ruleId", {
|
const path = utils.encodeUri("/pushrules/" + scope + "/$kind/$ruleId", {
|
||||||
$kind: kind,
|
$kind: kind,
|
||||||
@ -9373,7 +9374,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
kind: PushRuleKind,
|
kind: PushRuleKind,
|
||||||
ruleId: RuleId | string,
|
ruleId: RuleId | string,
|
||||||
enabled: boolean,
|
enabled: boolean,
|
||||||
): Promise<{}> {
|
): Promise<EmptyObject> {
|
||||||
const path = utils.encodeUri("/pushrules/" + scope + "/$kind/$ruleId/enabled", {
|
const path = utils.encodeUri("/pushrules/" + scope + "/$kind/$ruleId/enabled", {
|
||||||
$kind: kind,
|
$kind: kind,
|
||||||
$ruleId: ruleId,
|
$ruleId: ruleId,
|
||||||
@ -9391,7 +9392,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
kind: PushRuleKind,
|
kind: PushRuleKind,
|
||||||
ruleId: RuleId | string,
|
ruleId: RuleId | string,
|
||||||
actions: PushRuleAction[],
|
actions: PushRuleAction[],
|
||||||
): Promise<{}> {
|
): Promise<EmptyObject> {
|
||||||
const path = utils.encodeUri("/pushrules/" + scope + "/$kind/$ruleId/actions", {
|
const path = utils.encodeUri("/pushrules/" + scope + "/$kind/$ruleId/actions", {
|
||||||
$kind: kind,
|
$kind: kind,
|
||||||
$ruleId: ruleId,
|
$ruleId: ruleId,
|
||||||
@ -9517,7 +9518,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
return this.http.authedRequest(Method.Get, "/keys/changes", qps);
|
return this.http.authedRequest(Method.Get, "/keys/changes", qps);
|
||||||
}
|
}
|
||||||
|
|
||||||
public uploadDeviceSigningKeys(auth?: AuthDict, keys?: CrossSigningKeys): Promise<{}> {
|
public uploadDeviceSigningKeys(auth?: AuthDict, keys?: CrossSigningKeys): Promise<EmptyObject> {
|
||||||
// API returns empty object
|
// API returns empty object
|
||||||
const data = Object.assign({}, keys);
|
const data = Object.assign({}, keys);
|
||||||
if (auth) Object.assign(data, { auth });
|
if (auth) Object.assign(data, { auth });
|
||||||
@ -9857,7 +9858,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
medium: string;
|
medium: string;
|
||||||
mxid: string;
|
mxid: string;
|
||||||
}
|
}
|
||||||
| {}
|
| EmptyObject
|
||||||
> {
|
> {
|
||||||
// Note: we're using the V2 API by calling this function, but our
|
// Note: we're using the V2 API by calling this function, but our
|
||||||
// function contract requires a V1 response. We therefore have to
|
// function contract requires a V1 response. We therefore have to
|
||||||
@ -9953,7 +9954,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* supplied.
|
* supplied.
|
||||||
* @returns Promise which resolves: to an empty object `{}`
|
* @returns Promise which resolves: to an empty object `{}`
|
||||||
*/
|
*/
|
||||||
public sendToDevice(eventType: string, contentMap: SendToDeviceContentMap, txnId?: string): Promise<{}> {
|
public sendToDevice(eventType: string, contentMap: SendToDeviceContentMap, txnId?: string): Promise<EmptyObject> {
|
||||||
const path = utils.encodeUri("/sendToDevice/$eventType/$txnId", {
|
const path = utils.encodeUri("/sendToDevice/$eventType/$txnId", {
|
||||||
$eventType: eventType,
|
$eventType: eventType,
|
||||||
$txnId: txnId ? txnId : this.makeTxnId(),
|
$txnId: txnId ? txnId : this.makeTxnId(),
|
||||||
@ -10047,7 +10048,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
baseUrl: string,
|
baseUrl: string,
|
||||||
accessToken: string,
|
accessToken: string,
|
||||||
termsUrls: string[],
|
termsUrls: string[],
|
||||||
): Promise<{}> {
|
): Promise<EmptyObject> {
|
||||||
const url = this.termsUrlForService(serviceType, baseUrl);
|
const url = this.termsUrlForService(serviceType, baseUrl);
|
||||||
const headers = {
|
const headers = {
|
||||||
Authorization: "Bearer " + accessToken,
|
Authorization: "Bearer " + accessToken,
|
||||||
@ -10070,7 +10071,7 @@ export class MatrixClient extends TypedEventEmitter<EmittedEvents, ClientEventHa
|
|||||||
* @param reason - The reason the content is being reported. May be blank.
|
* @param reason - The reason the content is being reported. May be blank.
|
||||||
* @returns Promise which resolves to an empty object if successful
|
* @returns Promise which resolves to an empty object if successful
|
||||||
*/
|
*/
|
||||||
public reportEvent(roomId: string, eventId: string, score: number, reason: string): Promise<{}> {
|
public reportEvent(roomId: string, eventId: string, score: number, reason: string): Promise<EmptyObject> {
|
||||||
const path = utils.encodeUri("/rooms/$roomId/report/$eventId", {
|
const path = utils.encodeUri("/rooms/$roomId/report/$eventId", {
|
||||||
$roomId: roomId,
|
$roomId: roomId,
|
||||||
$eventId: eventId,
|
$eventId: eventId,
|
||||||
|
@ -18,6 +18,7 @@ import { CryptoEvent } from "./CryptoEvent.ts";
|
|||||||
import { VerificationRequest } from "./verification.ts";
|
import { VerificationRequest } from "./verification.ts";
|
||||||
import { UserVerificationStatus } from "./index.ts";
|
import { UserVerificationStatus } from "./index.ts";
|
||||||
import { RustBackupCryptoEventMap } from "../rust-crypto/backup.ts";
|
import { RustBackupCryptoEventMap } from "../rust-crypto/backup.ts";
|
||||||
|
import { EmptyObject } from "../@types/common.ts";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A map of the {@link CryptoEvent} fired by the {@link CryptoApi} and their payloads.
|
* A map of the {@link CryptoEvent} fired by the {@link CryptoApi} and their payloads.
|
||||||
@ -26,7 +27,7 @@ export type CryptoEventHandlerMap = {
|
|||||||
[CryptoEvent.VerificationRequestReceived]: (request: VerificationRequest) => void;
|
[CryptoEvent.VerificationRequestReceived]: (request: VerificationRequest) => void;
|
||||||
[CryptoEvent.UserTrustStatusChanged]: (userId: string, userTrustLevel: UserVerificationStatus) => void;
|
[CryptoEvent.UserTrustStatusChanged]: (userId: string, userTrustLevel: UserVerificationStatus) => void;
|
||||||
[CryptoEvent.KeyBackupDecryptionKeyCached]: (version: string) => void;
|
[CryptoEvent.KeyBackupDecryptionKeyCached]: (version: string) => void;
|
||||||
[CryptoEvent.KeysChanged]: (data: {}) => void;
|
[CryptoEvent.KeysChanged]: (data: EmptyObject) => void;
|
||||||
[CryptoEvent.WillUpdateDevices]: (users: string[], initialFetch: boolean) => void;
|
[CryptoEvent.WillUpdateDevices]: (users: string[], initialFetch: boolean) => void;
|
||||||
[CryptoEvent.DevicesUpdated]: (users: string[], initialFetch: boolean) => void;
|
[CryptoEvent.DevicesUpdated]: (users: string[], initialFetch: boolean) => void;
|
||||||
[CryptoEvent.LegacyCryptoStoreMigrationProgress]: (progress: number, total: number) => void;
|
[CryptoEvent.LegacyCryptoStoreMigrationProgress]: (progress: number, total: number) => void;
|
||||||
|
@ -26,6 +26,7 @@ import { TypedEventEmitter } from "../models/typed-event-emitter.ts";
|
|||||||
import { AccountDataClient, SecretStorageKeyDescription } from "../secret-storage.ts";
|
import { AccountDataClient, SecretStorageKeyDescription } from "../secret-storage.ts";
|
||||||
import { BootstrapCrossSigningOpts, CrossSigningKeyInfo } from "../crypto-api/index.ts";
|
import { BootstrapCrossSigningOpts, CrossSigningKeyInfo } from "../crypto-api/index.ts";
|
||||||
import { AccountDataEvents } from "../@types/event.ts";
|
import { AccountDataEvents } from "../@types/event.ts";
|
||||||
|
import { EmptyObject } from "../@types/common.ts";
|
||||||
|
|
||||||
interface ICrossSigningKeys {
|
interface ICrossSigningKeys {
|
||||||
authUpload: BootstrapCrossSigningOpts["authUploadDeviceSigningKeys"];
|
authUpload: BootstrapCrossSigningOpts["authUploadDeviceSigningKeys"];
|
||||||
@ -267,7 +268,7 @@ class AccountDataClientAdapter
|
|||||||
public setAccountData<K extends keyof AccountDataEvents>(
|
public setAccountData<K extends keyof AccountDataEvents>(
|
||||||
type: K,
|
type: K,
|
||||||
content: AccountDataEvents[K] | Record<string, never>,
|
content: AccountDataEvents[K] | Record<string, never>,
|
||||||
): Promise<{}> {
|
): Promise<EmptyObject> {
|
||||||
const event = new MatrixEvent({ type, content });
|
const event = new MatrixEvent({ type, content });
|
||||||
const lastEvent = this.values.get(type);
|
const lastEvent = this.values.get(type);
|
||||||
this.values.set(type, event);
|
this.values.set(type, event);
|
||||||
|
@ -22,6 +22,7 @@ import { IRoomKeyRequestBody, IRoomKeyRequestRecipient } from "./index.ts";
|
|||||||
import { CryptoStore, OutgoingRoomKeyRequest } from "./store/base.ts";
|
import { CryptoStore, OutgoingRoomKeyRequest } from "./store/base.ts";
|
||||||
import { EventType, ToDeviceMessageId } from "../@types/event.ts";
|
import { EventType, ToDeviceMessageId } from "../@types/event.ts";
|
||||||
import { MapWithDefault } from "../utils.ts";
|
import { MapWithDefault } from "../utils.ts";
|
||||||
|
import { EmptyObject } from "../@types/common.ts";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Internal module. Management of outgoing room key requests.
|
* Internal module. Management of outgoing room key requests.
|
||||||
@ -460,7 +461,7 @@ export class OutgoingRoomKeyRequestManager {
|
|||||||
message: RequestMessage,
|
message: RequestMessage,
|
||||||
recipients: IRoomKeyRequestRecipient[],
|
recipients: IRoomKeyRequestRecipient[],
|
||||||
txnId?: string,
|
txnId?: string,
|
||||||
): Promise<{}> {
|
): Promise<EmptyObject> {
|
||||||
const contentMap = new MapWithDefault<string, Map<string, Record<string, any>>>(() => new Map());
|
const contentMap = new MapWithDefault<string, Map<string, Record<string, any>>>(() => new Map());
|
||||||
for (const recip of recipients) {
|
for (const recip of recipients) {
|
||||||
const userDeviceMap = contentMap.getOrCreate(recip.userId);
|
const userDeviceMap = contentMap.getOrCreate(recip.userId);
|
||||||
|
@ -57,7 +57,7 @@ import { ToDeviceBatch, ToDevicePayload } from "./models/ToDeviceMessage.ts";
|
|||||||
import { DeviceInfo } from "./crypto/deviceinfo.ts";
|
import { DeviceInfo } from "./crypto/deviceinfo.ts";
|
||||||
import { IOlmDevice } from "./crypto/algorithms/megolm.ts";
|
import { IOlmDevice } from "./crypto/algorithms/megolm.ts";
|
||||||
import { MapWithDefault, recursiveMapToObject } from "./utils.ts";
|
import { MapWithDefault, recursiveMapToObject } from "./utils.ts";
|
||||||
import { TypedEventEmitter } from "./matrix.ts";
|
import { EmptyObject, TypedEventEmitter } from "./matrix.ts";
|
||||||
|
|
||||||
interface IStateEventRequest {
|
interface IStateEventRequest {
|
||||||
eventType: string;
|
eventType: string;
|
||||||
@ -431,15 +431,16 @@ export class RoomWidgetClient extends MatrixClient {
|
|||||||
* @experimental This currently relies on an unstable MSC (MSC4140).
|
* @experimental This currently relies on an unstable MSC (MSC4140).
|
||||||
*/
|
*/
|
||||||
// eslint-disable-next-line
|
// eslint-disable-next-line
|
||||||
public async _unstable_updateDelayedEvent(delayId: string, action: UpdateDelayedEventAction): Promise<{}> {
|
public async _unstable_updateDelayedEvent(delayId: string, action: UpdateDelayedEventAction): Promise<EmptyObject> {
|
||||||
if (!(await this.doesServerSupportUnstableFeature(UNSTABLE_MSC4140_DELAYED_EVENTS))) {
|
if (!(await this.doesServerSupportUnstableFeature(UNSTABLE_MSC4140_DELAYED_EVENTS))) {
|
||||||
throw Error("Server does not support the delayed events API");
|
throw Error("Server does not support the delayed events API");
|
||||||
}
|
}
|
||||||
|
|
||||||
return await this.widgetApi.updateDelayedEvent(delayId, action);
|
await this.widgetApi.updateDelayedEvent(delayId, action);
|
||||||
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
public async sendToDevice(eventType: string, contentMap: SendToDeviceContentMap): Promise<{}> {
|
public async sendToDevice(eventType: string, contentMap: SendToDeviceContentMap): Promise<EmptyObject> {
|
||||||
await this.widgetApi.sendToDevice(eventType, false, recursiveMapToObject(contentMap));
|
await this.widgetApi.sendToDevice(eventType, false, recursiveMapToObject(contentMap));
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ export class FetchHttpApi<O extends IHttpOpts> {
|
|||||||
this.opts.idBaseUrl = url;
|
this.opts.idBaseUrl = url;
|
||||||
}
|
}
|
||||||
|
|
||||||
public idServerRequest<T extends {} = Record<string, unknown>>(
|
public idServerRequest<T extends object = Record<string, unknown>>(
|
||||||
method: Method,
|
method: Method,
|
||||||
path: string,
|
path: string,
|
||||||
params: Record<string, string | string[]> | undefined,
|
params: Record<string, string | string[]> | undefined,
|
||||||
|
@ -134,6 +134,7 @@ export type AuthDict =
|
|||||||
| RecaptchaDict
|
| RecaptchaDict
|
||||||
| EmailIdentityDict
|
| EmailIdentityDict
|
||||||
| { type: Exclude<string, AuthType>; [key: string]: any }
|
| { type: Exclude<string, AuthType>; [key: string]: any }
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
||||||
| {};
|
| {};
|
||||||
|
|
||||||
export class NoAuthFlowFoundError extends Error {
|
export class NoAuthFlowFoundError extends Error {
|
||||||
@ -421,10 +422,12 @@ export class InteractiveAuth<T> {
|
|||||||
// use the sessionid from the last request, if one is present.
|
// use the sessionid from the last request, if one is present.
|
||||||
let auth: AuthDict;
|
let auth: AuthDict;
|
||||||
if ((this.data as IAuthData)?.session) {
|
if ((this.data as IAuthData)?.session) {
|
||||||
auth = {
|
auth = Object.assign(
|
||||||
|
{
|
||||||
session: (this.data as IAuthData).session,
|
session: (this.data as IAuthData).session,
|
||||||
};
|
},
|
||||||
Object.assign(auth, authData);
|
authData,
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
auth = authData;
|
auth = authData;
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import { CallMembership, DEFAULT_EXPIRE_DURATION, SessionMembershipData } from "
|
|||||||
import { Focus } from "./focus.ts";
|
import { Focus } from "./focus.ts";
|
||||||
import { isLivekitFocusActive } from "./LivekitFocus.ts";
|
import { isLivekitFocusActive } from "./LivekitFocus.ts";
|
||||||
import { MembershipConfig } from "./MatrixRTCSession.ts";
|
import { MembershipConfig } from "./MatrixRTCSession.ts";
|
||||||
|
import { EmptyObject } from "../@types/common.ts";
|
||||||
/**
|
/**
|
||||||
* This interface defines what a MembershipManager uses and exposes.
|
* This interface defines what a MembershipManager uses and exposes.
|
||||||
* This interface is what we use to write tests and allows to change the actual implementation
|
* This interface is what we use to write tests and allows to change the actual implementation
|
||||||
@ -203,7 +204,7 @@ export class LegacyMembershipManager implements IMembershipManager {
|
|||||||
this.updateCallMembershipRunning = false;
|
this.updateCallMembershipRunning = false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
private makeNewMembership(deviceId: string): SessionMembershipData | {} {
|
private makeNewMembership(deviceId: string): SessionMembershipData | EmptyObject {
|
||||||
// If we're joined, add our own
|
// If we're joined, add our own
|
||||||
if (this.isJoined()) {
|
if (this.isJoined()) {
|
||||||
return this.makeMyMembership(deviceId);
|
return this.makeMyMembership(deviceId);
|
||||||
@ -239,7 +240,7 @@ export class LegacyMembershipManager implements IMembershipManager {
|
|||||||
const localDeviceId = this.client.getDeviceId();
|
const localDeviceId = this.client.getDeviceId();
|
||||||
if (!localUserId || !localDeviceId) throw new Error("User ID or device ID was null!");
|
if (!localUserId || !localDeviceId) throw new Error("User ID or device ID was null!");
|
||||||
|
|
||||||
let newContent: {} | SessionMembershipData = {};
|
let newContent: EmptyObject | SessionMembershipData = {};
|
||||||
// TODO: add back expiary logic to non-legacy events
|
// TODO: add back expiary logic to non-legacy events
|
||||||
// previously we checked here if the event is timed out and scheduled a check if not.
|
// previously we checked here if the event is timed out and scheduled a check if not.
|
||||||
// maybe there is a better way.
|
// maybe there is a better way.
|
||||||
|
@ -35,6 +35,7 @@ import { FileType } from "../http-api/index.ts";
|
|||||||
import { KnownMembership } from "../@types/membership.ts";
|
import { KnownMembership } from "../@types/membership.ts";
|
||||||
import { RoomPowerLevelsEventContent, SpaceChildEventContent } from "../@types/state_events.ts";
|
import { RoomPowerLevelsEventContent, SpaceChildEventContent } from "../@types/state_events.ts";
|
||||||
import type { EncryptedFile, FileContent } from "../@types/media.ts";
|
import type { EncryptedFile, FileContent } from "../@types/media.ts";
|
||||||
|
import { EmptyObject } from "../@types/common.ts";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The recommended defaults for a tree space's power levels. Note that this
|
* The recommended defaults for a tree space's power levels. Note that this
|
||||||
@ -81,7 +82,7 @@ export enum TreePermissions {
|
|||||||
|
|
||||||
declare module "../@types/media" {
|
declare module "../@types/media" {
|
||||||
interface FileContent {
|
interface FileContent {
|
||||||
[UNSTABLE_MSC3089_LEAF.name]?: {};
|
[UNSTABLE_MSC3089_LEAF.name]?: EmptyObject;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,6 +49,7 @@ import { EventTimeline } from "./event-timeline.ts";
|
|||||||
import { Membership } from "../@types/membership.ts";
|
import { Membership } from "../@types/membership.ts";
|
||||||
import { DecryptionFailureCode } from "../crypto-api/index.ts";
|
import { DecryptionFailureCode } from "../crypto-api/index.ts";
|
||||||
import { RoomState } from "./room-state.ts";
|
import { RoomState } from "./room-state.ts";
|
||||||
|
import { EmptyObject } from "../@types/common.ts";
|
||||||
|
|
||||||
export { EventStatus } from "./event-status.ts";
|
export { EventStatus } from "./event-status.ts";
|
||||||
|
|
||||||
@ -1376,7 +1377,7 @@ export class MatrixEvent extends TypedEventEmitter<MatrixEventEmittedEvents, Mat
|
|||||||
*
|
*
|
||||||
* @returns The redaction event JSON, or an empty object
|
* @returns The redaction event JSON, or an empty object
|
||||||
*/
|
*/
|
||||||
public getRedactionEvent(): IEvent | {} | null {
|
public getRedactionEvent(): IEvent | EmptyObject | null {
|
||||||
if (!this.isRedacted()) return null;
|
if (!this.isRedacted()) return null;
|
||||||
|
|
||||||
if (this.clearEvent?.unsigned) {
|
if (this.clearEvent?.unsigned) {
|
||||||
|
@ -29,6 +29,7 @@ import encryptAESSecretStorageItem from "./utils/encryptAESSecretStorageItem.ts"
|
|||||||
import decryptAESSecretStorageItem from "./utils/decryptAESSecretStorageItem.ts";
|
import decryptAESSecretStorageItem from "./utils/decryptAESSecretStorageItem.ts";
|
||||||
import { AESEncryptedSecretStoragePayload } from "./@types/AESEncryptedSecretStoragePayload.ts";
|
import { AESEncryptedSecretStoragePayload } from "./@types/AESEncryptedSecretStoragePayload.ts";
|
||||||
import { AccountDataEvents, SecretStorageAccountDataEvents } from "./@types/event.ts";
|
import { AccountDataEvents, SecretStorageAccountDataEvents } from "./@types/event.ts";
|
||||||
|
import { EmptyObject } from "./@types/common.ts";
|
||||||
|
|
||||||
export const SECRET_STORAGE_ALGORITHM_V1_AES = "m.secret_storage.v1.aes-hmac-sha2";
|
export const SECRET_STORAGE_ALGORITHM_V1_AES = "m.secret_storage.v1.aes-hmac-sha2";
|
||||||
|
|
||||||
@ -151,7 +152,7 @@ export interface AccountDataClient extends TypedEventEmitter<ClientEvent.Account
|
|||||||
setAccountData: <K extends keyof AccountDataEvents>(
|
setAccountData: <K extends keyof AccountDataEvents>(
|
||||||
eventType: K,
|
eventType: K,
|
||||||
content: AccountDataEvents[K] | Record<string, never>,
|
content: AccountDataEvents[K] | Record<string, never>,
|
||||||
) => Promise<{}>;
|
) => Promise<EmptyObject>;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -265,7 +265,7 @@ export enum ExtensionState {
|
|||||||
/**
|
/**
|
||||||
* An interface that must be satisfied to register extensions
|
* An interface that must be satisfied to register extensions
|
||||||
*/
|
*/
|
||||||
export interface Extension<Req extends {}, Res extends {}> {
|
export interface Extension<Req extends object, Res extends object> {
|
||||||
/**
|
/**
|
||||||
* The extension name to go under 'extensions' in the request body.
|
* The extension name to go under 'extensions' in the request body.
|
||||||
* @returns The JSON key.
|
* @returns The JSON key.
|
||||||
|
Reference in New Issue
Block a user