forked from mystiq/hydrogen-web
store account data in storage
needs a resync, need to think how to handle this
This commit is contained in:
parent
00eade1c16
commit
abfde76e24
5 changed files with 26 additions and 3 deletions
|
@ -289,6 +289,16 @@ export class Session {
|
|||
if (Array.isArray(toDeviceEvents)) {
|
||||
this._deviceMessageHandler.writeSync(toDeviceEvents, txn);
|
||||
}
|
||||
|
||||
// store account data
|
||||
const accountData = syncResponse["account_data"];
|
||||
if (Array.isArray(accountData?.events)) {
|
||||
for (const event of accountData.events) {
|
||||
if (typeof event.type === "string") {
|
||||
txn.accountData.set(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
return changes;
|
||||
}
|
||||
|
||||
|
|
|
@ -228,7 +228,8 @@ export class Sync {
|
|||
// to discard outbound session when somebody leaves a room
|
||||
// and to create room key messages when somebody leaves
|
||||
storeNames.outboundGroupSessions,
|
||||
storeNames.operations
|
||||
storeNames.operations,
|
||||
storeNames.accountData,
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
|
@ -28,7 +28,8 @@ export const STORE_NAMES = Object.freeze([
|
|||
"inboundGroupSessions",
|
||||
"outboundGroupSessions",
|
||||
"groupSessionDecryptions",
|
||||
"operations"
|
||||
"operations",
|
||||
"accountData",
|
||||
]);
|
||||
|
||||
export const STORE_MAP = Object.freeze(STORE_NAMES.reduce((nameMap, name) => {
|
||||
|
|
|
@ -31,6 +31,7 @@ import {InboundGroupSessionStore} from "./stores/InboundGroupSessionStore.js";
|
|||
import {OutboundGroupSessionStore} from "./stores/OutboundGroupSessionStore.js";
|
||||
import {GroupSessionDecryptionStore} from "./stores/GroupSessionDecryptionStore.js";
|
||||
import {OperationStore} from "./stores/OperationStore.js";
|
||||
import {AccountDataStore} from "./stores/AccountDataStore.js";
|
||||
|
||||
export class Transaction {
|
||||
constructor(txn, allowedStoreNames) {
|
||||
|
@ -111,6 +112,10 @@ export class Transaction {
|
|||
return this._store("operations", idbStore => new OperationStore(idbStore));
|
||||
}
|
||||
|
||||
get accountData() {
|
||||
return this._store("accountData", idbStore => new AccountDataStore(idbStore));
|
||||
}
|
||||
|
||||
complete() {
|
||||
return txnAsPromise(this._txn);
|
||||
}
|
||||
|
|
|
@ -10,7 +10,8 @@ export const schema = [
|
|||
createMemberStore,
|
||||
migrateSession,
|
||||
createE2EEStores,
|
||||
migrateEncryptionFlag
|
||||
migrateEncryptionFlag,
|
||||
createAccountDataStore
|
||||
];
|
||||
// TODO: how to deal with git merge conflicts of this array?
|
||||
|
||||
|
@ -97,3 +98,8 @@ async function migrateEncryptionFlag(db, txn) {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// v6
|
||||
function createAccountDataStore(db) {
|
||||
db.createObjectStore("accountData", {keyPath: "type"});
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue