forked from mystiq/hydrogen-web
Migrate GroupSessionDecryptionStore to TypeScript
This commit is contained in:
parent
33d94b9497
commit
8c966627bc
2 changed files with 17 additions and 8 deletions
|
@ -31,7 +31,7 @@ import {DeviceIdentityStore} from "./stores/DeviceIdentityStore.js";
|
|||
import {OlmSessionStore} from "./stores/OlmSessionStore.js";
|
||||
import {InboundGroupSessionStore} from "./stores/InboundGroupSessionStore.js";
|
||||
import {OutboundGroupSessionStore} from "./stores/OutboundGroupSessionStore";
|
||||
import {GroupSessionDecryptionStore} from "./stores/GroupSessionDecryptionStore.js";
|
||||
import {GroupSessionDecryptionStore} from "./stores/GroupSessionDecryptionStore";
|
||||
import {OperationStore} from "./stores/OperationStore.js";
|
||||
import {AccountDataStore} from "./stores/AccountDataStore.js";
|
||||
|
||||
|
|
|
@ -15,30 +15,39 @@ limitations under the License.
|
|||
*/
|
||||
|
||||
import {MIN_UNICODE, MAX_UNICODE} from "./common";
|
||||
import {Store} from "../Store";
|
||||
|
||||
function encodeKey(roomId, sessionId, messageIndex) {
|
||||
function encodeKey(roomId: string, sessionId: string, messageIndex: number | string): string {
|
||||
return `${roomId}|${sessionId}|${messageIndex}`;
|
||||
}
|
||||
|
||||
interface GroupSessionDecryption {
|
||||
eventId: string;
|
||||
timestamp: number;
|
||||
key: string;
|
||||
}
|
||||
|
||||
export class GroupSessionDecryptionStore {
|
||||
constructor(store) {
|
||||
private _store: Store<GroupSessionDecryption>;
|
||||
|
||||
constructor(store: Store<GroupSessionDecryption>) {
|
||||
this._store = store;
|
||||
}
|
||||
|
||||
get(roomId, sessionId, messageIndex) {
|
||||
get(roomId: string, sessionId: string, messageIndex: number): Promise<GroupSessionDecryption | null> {
|
||||
return this._store.get(encodeKey(roomId, sessionId, messageIndex));
|
||||
}
|
||||
|
||||
set(roomId, sessionId, messageIndex, decryption) {
|
||||
set(roomId: string, sessionId: string, messageIndex: number, decryption: GroupSessionDecryption): Promise<IDBValidKey> {
|
||||
decryption.key = encodeKey(roomId, sessionId, messageIndex);
|
||||
this._store.put(decryption);
|
||||
return this._store.put(decryption);
|
||||
}
|
||||
|
||||
removeAllForRoom(roomId) {
|
||||
removeAllForRoom(roomId: string): Promise<undefined> {
|
||||
const range = this._store.IDBKeyRange.bound(
|
||||
encodeKey(roomId, MIN_UNICODE, MIN_UNICODE),
|
||||
encodeKey(roomId, MAX_UNICODE, MAX_UNICODE)
|
||||
);
|
||||
this._store.delete(range);
|
||||
return this._store.delete(range);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue