From 279f149408074bd87308476ea4af02a9716981b3 Mon Sep 17 00:00:00 2001 From: Danila Fedorin Date: Wed, 11 Aug 2021 16:53:34 -0700 Subject: [PATCH] Add type annotations to DeviceIdentityStore --- .../storage/idb/stores/DeviceIdentityStore.ts | 43 ++++++++++++------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/src/matrix/storage/idb/stores/DeviceIdentityStore.ts b/src/matrix/storage/idb/stores/DeviceIdentityStore.ts index 207cfb20..12f98d88 100644 --- a/src/matrix/storage/idb/stores/DeviceIdentityStore.ts +++ b/src/matrix/storage/idb/stores/DeviceIdentityStore.ts @@ -15,33 +15,46 @@ limitations under the License. */ import {MAX_UNICODE, MIN_UNICODE} from "./common"; +import {Store} from "../Store" -function encodeKey(userId, deviceId) { +interface DeviceIdentity { + userId: string + deviceId: string + ed25519Key: string + curve25519Key: string + algorithms: string[] + displayName: string + key: string +} + +function encodeKey(userId: string, deviceId: string): string { return `${userId}|${deviceId}`; } -function decodeKey(key) { +function decodeKey(key: string): { userId: string, deviceId: string } { const [userId, deviceId] = key.split("|"); return {userId, deviceId}; } export class DeviceIdentityStore { - constructor(store) { + private _store: Store + + constructor(store: Store) { this._store = store; } - getAllForUserId(userId) { + getAllForUserId(userId: string): Promise { const range = this._store.IDBKeyRange.lowerBound(encodeKey(userId, "")); return this._store.selectWhile(range, device => { return device.userId === userId; }); } - async getAllDeviceIds(userId) { - const deviceIds = []; + async getAllDeviceIds(userId: string): Promise { + const deviceIds: string[] = []; const range = this._store.IDBKeyRange.lowerBound(encodeKey(userId, "")); await this._store.iterateKeys(range, key => { - const decodedKey = decodeKey(key); + const decodedKey = decodeKey(key as string); // prevent running into the next room if (decodedKey.userId === userId) { deviceIds.push(decodedKey.deviceId); @@ -52,27 +65,27 @@ export class DeviceIdentityStore { return deviceIds; } - get(userId, deviceId) { + get(userId: string, deviceId: string): Promise { return this._store.get(encodeKey(userId, deviceId)); } - set(deviceIdentity) { + set(deviceIdentity: DeviceIdentity): Promise { deviceIdentity.key = encodeKey(deviceIdentity.userId, deviceIdentity.deviceId); - this._store.put(deviceIdentity); + return this._store.put(deviceIdentity); } - getByCurve25519Key(curve25519Key) { + getByCurve25519Key(curve25519Key: string): Promise { return this._store.index("byCurve25519Key").get(curve25519Key); } - remove(userId, deviceId) { - this._store.delete(encodeKey(userId, deviceId)); + remove(userId: string, deviceId: string): Promise { + return this._store.delete(encodeKey(userId, deviceId)); } - removeAllForUser(userId) { + removeAllForUser(userId: string): Promise { // exclude both keys as they are theoretical min and max, // but we should't have a match for just the room id, or room id with max const range = this._store.IDBKeyRange.bound(encodeKey(userId, MIN_UNICODE), encodeKey(userId, MAX_UNICODE), true, true); - this._store.delete(range); + return this._store.delete(range); } }