diff --git a/src/client.ts b/src/client.ts index 0c2a83f39..7cc9c601a 100644 --- a/src/client.ts +++ b/src/client.ts @@ -490,6 +490,7 @@ interface IKeyBackupPath { } interface IMediaConfig { + [key: string]: any; // extensible "m.upload.size"?: number; } @@ -4374,14 +4375,12 @@ export class MatrixClient extends EventEmitter { // eslint-disable-next-line camelcase public setProfileInfo(info: "avatar_url", data: { avatar_url: string }, callback?: Callback): Promise<{}>; public setProfileInfo(info: "displayname", data: { displayname: string }, callback?: Callback): Promise<{}>; - public setProfileInfo(info: string, data: object, callback?: Callback): Promise<{}> { + public setProfileInfo(info: "avatar_url" | "displayname", data: object, callback?: Callback): Promise<{}> { const path = utils.encodeUri("/profile/$userId/$info", { $userId: this.credentials.userId, $info: info, }); - return this.http.authedRequest( - callback, "PUT", path, undefined, data, - ); + return this.http.authedRequest(callback, "PUT", path, undefined, data); } /** diff --git a/src/crypto/EncryptionSetup.ts b/src/crypto/EncryptionSetup.ts index 8b538afa2..faa4bd2e8 100644 --- a/src/crypto/EncryptionSetup.ts +++ b/src/crypto/EncryptionSetup.ts @@ -1,3 +1,19 @@ +/* +Copyright 2021 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + import { logger } from "../logger"; import { MatrixEvent } from "../models/event"; import { EventEmitter } from "events"; diff --git a/src/filter.ts b/src/filter.ts index 618c727c3..8cbd2a67e 100644 --- a/src/filter.ts +++ b/src/filter.ts @@ -86,7 +86,7 @@ export class Filter { * @param {Object} jsonObj * @return {Filter} */ - static fromJson(userId: string, filterId: string, jsonObj: IFilterDefinition): Filter { + public static fromJson(userId: string, filterId: string, jsonObj: IFilterDefinition): Filter { const filter = new Filter(userId, filterId); filter.setDefinition(jsonObj); return filter; diff --git a/src/models/room.ts b/src/models/room.ts index 716da1214..65abbd099 100644 --- a/src/models/room.ts +++ b/src/models/room.ts @@ -25,7 +25,7 @@ import { EventTimeline } from "./event-timeline"; import { getHttpUriForMxc } from "../content-repo"; import * as utils from "../utils"; import { normalize } from "../utils"; -import { EventStatus, MatrixEvent } from "./event"; +import { EventStatus, IEvent, MatrixEvent } from "./event"; import { RoomMember } from "./room-member"; import { IRoomSummary, RoomSummary } from "./room-summary"; import { logger } from '../logger'; @@ -35,6 +35,7 @@ import { IRoomVersionsCapability, MatrixClient, PendingEventOrdering, RoomVersio import { ResizeMethod } from "../@types/partials"; import { Filter } from "../filter"; import { RoomState } from "./room-state"; +import { IMinimalEvent } from "../sync-accumulator"; // These constants are used as sane defaults when the homeserver doesn't support // the m.room_versions capability. In practice, KNOWN_SAFE_ROOM_VERSION should be @@ -649,7 +650,7 @@ export class Room extends EventEmitter { } } - private async loadMembersFromServer(): Promise { + private async loadMembersFromServer(): Promise { const lastSyncToken = this.client.store.getSyncToken(); const queryString = utils.encodeParams({ not_membership: "leave", @@ -712,7 +713,7 @@ export class Room extends EventEmitter { if (fromServer) { const oobMembers = this.currentState.getMembers() .filter((m) => m.isOutOfBand()) - .map((m) => m.events.member.event); + .map((m) => m.events.member.event as IEvent); logger.log(`LL: telling store to write ${oobMembers.length}` + ` members for room ${this.roomId}`); const store = this.client.store; diff --git a/src/store/index.ts b/src/store/index.ts index e835d3791..01650f86a 100644 --- a/src/store/index.ts +++ b/src/store/index.ts @@ -18,7 +18,7 @@ import { EventType } from "../@types/event"; import { Group } from "../models/group"; import { Room } from "../models/room"; import { User } from "../models/user"; -import { MatrixEvent } from "../models/event"; +import { IEvent, MatrixEvent } from "../models/event"; import { Filter } from "../filter"; import { RoomSummary } from "../models/room-summary"; import { IMinimalEvent, IGroups, IRooms } from "../sync-accumulator"; @@ -225,9 +225,9 @@ export interface IStore { */ deleteAllData(): Promise; - getOutOfBandMembers(roomId: string): Promise; + getOutOfBandMembers(roomId: string): Promise; - setOutOfBandMembers(roomId: string, membershipEvents: object[]): Promise; + setOutOfBandMembers(roomId: string, membershipEvents: IEvent[]): Promise; clearOutOfBandMembers(roomId: string): Promise; diff --git a/src/store/indexeddb.ts b/src/store/indexeddb.ts index f7f9fb8b9..aed61dae2 100644 --- a/src/store/indexeddb.ts +++ b/src/store/indexeddb.ts @@ -22,7 +22,7 @@ import { MemoryStore, IOpts as IBaseOpts } from "./memory"; import { LocalIndexedDBStoreBackend } from "./indexeddb-local-backend.js"; import { RemoteIndexedDBStoreBackend } from "./indexeddb-remote-backend.js"; import { User } from "../models/user"; -import { MatrixEvent } from "../models/event"; +import { IEvent, MatrixEvent } from "../models/event"; import { logger } from '../logger'; import { ISavedSync } from "./index"; @@ -247,7 +247,7 @@ export class IndexedDBStore extends MemoryStore { * @returns {event[]} the events, potentially an empty array if OOB loading didn't yield any new members * @returns {null} in case the members for this room haven't been stored yet */ - public getOutOfBandMembers = this.degradable((roomId: string): Promise => { + public getOutOfBandMembers = this.degradable((roomId: string): Promise => { return this.backend.getOutOfBandMembers(roomId); }, "getOutOfBandMembers"); @@ -259,7 +259,7 @@ export class IndexedDBStore extends MemoryStore { * @param {event[]} membershipEvents the membership events to store * @returns {Promise} when all members have been stored */ - public setOutOfBandMembers = this.degradable((roomId: string, membershipEvents: MatrixEvent[]): Promise => { + public setOutOfBandMembers = this.degradable((roomId: string, membershipEvents: IEvent[]): Promise => { super.setOutOfBandMembers(roomId, membershipEvents); return this.backend.setOutOfBandMembers(roomId, membershipEvents); }, "setOutOfBandMembers"); diff --git a/src/store/memory.ts b/src/store/memory.ts index 94090f9c5..00dceb711 100644 --- a/src/store/memory.ts +++ b/src/store/memory.ts @@ -23,12 +23,13 @@ import { EventType } from "../@types/event"; import { Group } from "../models/group"; import { Room } from "../models/room"; import { User } from "../models/user"; -import { MatrixEvent } from "../models/event"; +import { IEvent, MatrixEvent } from "../models/event"; import { RoomState } from "../models/room-state"; import { RoomMember } from "../models/room-member"; import { Filter } from "../filter"; import { ISavedSync, IStore } from "./index"; import { RoomSummary } from "../models/room-summary"; +import { IMinimalEvent } from "../sync-accumulator"; function isValidFilterId(filterId: string): boolean { const isValidStr = typeof filterId === "string" && @@ -61,7 +62,7 @@ export class MemoryStore implements IStore { private filters: Record> = {}; public accountData: Record = {}; // type : content private readonly localStorage: Storage; - private oobMembers: Record = {}; // roomId: [member events] + private oobMembers: Record = {}; // roomId: [member events] private clientOptions = {}; constructor(opts: IOpts = {}) { @@ -415,7 +416,7 @@ export class MemoryStore implements IStore { * @returns {event[]} the events, potentially an empty array if OOB loading didn't yield any new members * @returns {null} in case the members for this room haven't been stored yet */ - public getOutOfBandMembers(roomId: string): Promise { + public getOutOfBandMembers(roomId: string): Promise { return Promise.resolve(this.oobMembers[roomId] || null); } @@ -427,7 +428,7 @@ export class MemoryStore implements IStore { * @param {event[]} membershipEvents the membership events to store * @returns {Promise} when all members have been stored */ - public setOutOfBandMembers(roomId: string, membershipEvents: MatrixEvent[]): Promise { + public setOutOfBandMembers(roomId: string, membershipEvents: IEvent[]): Promise { this.oobMembers[roomId] = membershipEvents; return Promise.resolve(); } diff --git a/src/store/stub.ts b/src/store/stub.ts index 97ed0165e..f7adb9b3e 100644 --- a/src/store/stub.ts +++ b/src/store/stub.ts @@ -23,7 +23,7 @@ import { EventType } from "../@types/event"; import { Group } from "../models/group"; import { Room } from "../models/room"; import { User } from "../models/user"; -import { MatrixEvent } from "../models/event"; +import { IEvent, MatrixEvent } from "../models/event"; import { Filter } from "../filter"; import { ISavedSync, IStore } from "./index"; import { RoomSummary } from "../models/room-summary"; @@ -265,11 +265,11 @@ export class StubStore implements IStore { return Promise.resolve(); } - public getOutOfBandMembers(): Promise { + public getOutOfBandMembers(): Promise { return Promise.resolve(null); } - public setOutOfBandMembers(roomId: string, membershipEvents: MatrixEvent[]): Promise { + public setOutOfBandMembers(roomId: string, membershipEvents: IEvent[]): Promise { return Promise.resolve(); }