Add type annotations to GroupSessionDecryptionStore

This commit is contained in:
Danila Fedorin 2021-08-12 10:51:35 -07:00
parent 736b122fc7
commit c21b187683

View File

@ -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);
}
}