diff --git a/src/client.ts b/src/client.ts index 9682459ce..254cfb0e0 100644 --- a/src/client.ts +++ b/src/client.ts @@ -3106,7 +3106,7 @@ export class MatrixClient extends EventEmitter { * data event. * @return {module:http-api.MatrixError} Rejects: with an error response. */ - public async getAccountDataFromServer(eventType: string): Promise { + public async getAccountDataFromServer(eventType: string): Promise { if (this.isInitialSyncComplete()) { const event = this.store.getAccountData(eventType); if (!event) { diff --git a/src/crypto/SecretStorage.ts b/src/crypto/SecretStorage.ts index 877d7507c..9be7ab66c 100644 --- a/src/crypto/SecretStorage.ts +++ b/src/crypto/SecretStorage.ts @@ -37,7 +37,7 @@ export interface ISecretRequest { export interface IAccountDataClient extends EventEmitter { // Subset of MatrixClient (which also uses any for the event content) - getAccountDataFromServer: (eventType: string) => Promise; + getAccountDataFromServer: (eventType: string) => Promise; getAccountData: (eventType: string) => MatrixEvent; setAccountData: (eventType: string, content: any) => Promise<{}>; } @@ -54,6 +54,13 @@ interface IDecryptors { decrypt: (ciphertext: IEncryptedPayload) => Promise; } +interface ISecretInfo { + encrypted: { + // eslint-disable-next-line camelcase + key_id: IEncryptedPayload; + }; +} + /** * Implements Secure Secret Storage and Sharing (MSC1946) * @module crypto/SecretStorage @@ -149,7 +156,7 @@ export class SecretStorage { do { keyId = randomString(32); } while ( - await this.accountDataAdapter.getAccountDataFromServer( + await this.accountDataAdapter.getAccountDataFromServer( `m.secret_storage.key.${keyId}`, ) ); @@ -182,9 +189,9 @@ export class SecretStorage { return null; } - const keyInfo = await this.accountDataAdapter.getAccountDataFromServer( + const keyInfo = await this.accountDataAdapter.getAccountDataFromServer( "m.secret_storage.key." + keyId, - ) as ISecretStorageKeyInfo; + ); return keyInfo ? [keyId, keyInfo] : null; } @@ -277,7 +284,7 @@ export class SecretStorage { * @return {string} the contents of the secret */ public async get(name: string): Promise { - const secretInfo = await this.accountDataAdapter.getAccountDataFromServer(name); // TODO types + const secretInfo = await this.accountDataAdapter.getAccountDataFromServer(name); if (!secretInfo) { return; } @@ -339,7 +346,7 @@ export class SecretStorage { */ public async isStored(name: string, checkKey: boolean): Promise> { // check if secret exists - const secretInfo = await this.accountDataAdapter.getAccountDataFromServer(name); // TODO types + const secretInfo = await this.accountDataAdapter.getAccountDataFromServer(name); if (!secretInfo) return null; if (!secretInfo.encrypted) { return null; @@ -352,7 +359,7 @@ export class SecretStorage { // filter secret encryption keys with supported algorithm for (const keyId of Object.keys(secretInfo.encrypted)) { // get key information from key storage - const keyInfo = await this.accountDataAdapter.getAccountDataFromServer( // TODO types + const keyInfo = await this.accountDataAdapter.getAccountDataFromServer( "m.secret_storage.key." + keyId, ); if (!keyInfo) continue; diff --git a/src/crypto/index.ts b/src/crypto/index.ts index 828067461..860c2acfe 100644 --- a/src/crypto/index.ts +++ b/src/crypto/index.ts @@ -58,7 +58,7 @@ import { BackupManager } from "./backup"; import { IStore } from "../store"; import { Room } from "../models/room"; import { RoomMember } from "../models/room-member"; -import { MatrixEvent, EventStatus, IClearEvent } from "../models/event"; +import { MatrixEvent, EventStatus, IClearEvent, IEvent } from "../models/event"; import { MatrixClient, IKeysUploadResponse, SessionStore, ISignedKey, ICrossSigningKey } from "../client"; import type { EncryptionAlgorithm, DecryptionAlgorithm } from "./algorithms/base"; import type { IRoomEncryption, RoomList } from "./RoomList"; @@ -2791,7 +2791,7 @@ export class Crypto extends EventEmitter { type: "m.room.message", content: {}, unsigned: { - redacted_because: decryptedEvent.clearEvent, + redacted_because: decryptedEvent.clearEvent as IEvent, }, }, }; diff --git a/src/models/event.ts b/src/models/event.ts index 29f2df904..f488d7434 100644 --- a/src/models/event.ts +++ b/src/models/event.ts @@ -35,6 +35,7 @@ import { RoomMember } from "./room-member"; import { Thread, ThreadEvent } from "./thread"; import { IActionsObject } from '../pushprocessor'; import { ReEmitter } from '../ReEmitter'; +import { MatrixError } from "../http-api"; /** * Enum for event statuses. @@ -85,7 +86,7 @@ export interface IUnsigned { age?: number; prev_sender?: string; prev_content?: IContent; - redacted_because?: IClearEvent; + redacted_because?: IEvent; transaction_id?: string; invite_room_state?: StrippedState[]; } @@ -203,7 +204,7 @@ export class MatrixEvent extends EventEmitter { public sender: RoomMember = null; public target: RoomMember = null; public status: EventStatus = null; - public error: Error = null; + public error: MatrixError = null; public forwardLooking = true; /* If the event is a `m.key.verification.request` (or to_device `m.key.verification.start`) event,