From 5d4454734af5a03bfa186b441a23512cef0f9b90 Mon Sep 17 00:00:00 2001 From: Danila Fedorin Date: Wed, 11 Aug 2021 14:22:17 -0700 Subject: [PATCH] Migrate RoomStateStore.js to TypeScript --- src/matrix/storage/idb/Transaction.js | 2 +- .../{RoomStateStore.js => RoomStateStore.ts} | 22 ++++++++++++++----- 2 files changed, 17 insertions(+), 7 deletions(-) rename src/matrix/storage/idb/stores/{RoomStateStore.js => RoomStateStore.ts} (68%) diff --git a/src/matrix/storage/idb/Transaction.js b/src/matrix/storage/idb/Transaction.js index 71513730..4a7b66fe 100644 --- a/src/matrix/storage/idb/Transaction.js +++ b/src/matrix/storage/idb/Transaction.js @@ -22,7 +22,7 @@ import {RoomSummaryStore} from "./stores/RoomSummaryStore"; import {InviteStore} from "./stores/InviteStore"; import {TimelineEventStore} from "./stores/TimelineEventStore"; import {TimelineRelationStore} from "./stores/TimelineRelationStore"; -import {RoomStateStore} from "./stores/RoomStateStore.js"; +import {RoomStateStore} from "./stores/RoomStateStore"; import {RoomMemberStore} from "./stores/RoomMemberStore"; import {TimelineFragmentStore} from "./stores/TimelineFragmentStore.js"; import {PendingEventStore} from "./stores/PendingEventStore.js"; diff --git a/src/matrix/storage/idb/stores/RoomStateStore.js b/src/matrix/storage/idb/stores/RoomStateStore.ts similarity index 68% rename from src/matrix/storage/idb/stores/RoomStateStore.js rename to src/matrix/storage/idb/stores/RoomStateStore.ts index db54458f..d88240a7 100644 --- a/src/matrix/storage/idb/stores/RoomStateStore.js +++ b/src/matrix/storage/idb/stores/RoomStateStore.ts @@ -16,31 +16,41 @@ limitations under the License. */ import {MAX_UNICODE} from "./common"; +import {Store} from "../Store"; +import {StateEvent} from "../../types"; -function encodeKey(roomId, eventType, stateKey) { +function encodeKey(roomId: string, eventType: string, stateKey: string) { return `${roomId}|${eventType}|${stateKey}`; } +export interface RoomStateEntry { + roomId: string; + event: StateEvent; + key: string; +} + export class RoomStateStore { - constructor(idbStore) { + private _roomStateStore: Store; + + constructor(idbStore: Store) { this._roomStateStore = idbStore; } - get(roomId, type, stateKey) { + get(roomId: string, type: string, stateKey: string): Promise { const key = encodeKey(roomId, type, stateKey); return this._roomStateStore.get(key); } - set(roomId, event) { + set(roomId: string, event: StateEvent): Promise { const key = encodeKey(roomId, event.type, event.state_key); const entry = {roomId, event, key}; return this._roomStateStore.put(entry); } - removeAllForRoom(roomId) { + removeAllForRoom(roomId: 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._roomStateStore.IDBKeyRange.bound(roomId, `${roomId}|${MAX_UNICODE}`, true, true); - this._roomStateStore.delete(range); + return this._roomStateStore.delete(range); } }