clear history cache to purge potential timeline corruption from #515
This commit is contained in:
parent
e0b9a3fa50
commit
3556878a1e
1 changed files with 29 additions and 1 deletions
|
@ -30,7 +30,8 @@ export const schema: MigrationFunc[] = [
|
|||
createTimelineRelationsStore,
|
||||
fixMissingRoomsInUserIdentities,
|
||||
changeSSSSKeyPrefix,
|
||||
backupAndRestoreE2EEAccountToLocalStorage
|
||||
backupAndRestoreE2EEAccountToLocalStorage,
|
||||
clearAllStores
|
||||
];
|
||||
// TODO: how to deal with git merge conflicts of this array?
|
||||
|
||||
|
@ -243,3 +244,30 @@ async function backupAndRestoreE2EEAccountToLocalStorage(db: IDBDatabase, txn: I
|
|||
const restored = await sessionStore.tryRestoreE2EEIdentityFromLocalStorage(log);
|
||||
log.set("restored", restored);
|
||||
}
|
||||
// v14 clear all stores apart from e2ee keys because of possible timeline corruption in #515, will trigger initial sync
|
||||
async function clearAllStores(db: IDBDatabase, txn: IDBTransaction) {
|
||||
for (const storeName of db.objectStoreNames) {
|
||||
const store = txn.objectStore(storeName);
|
||||
switch (storeName) {
|
||||
case "inboundGroupSessions":
|
||||
case "outboundGroupSessions":
|
||||
case "olmSessions":
|
||||
case "operations":
|
||||
continue;
|
||||
case "session": {
|
||||
await iterateCursor(store.openCursor(), (value, key, cursor) => {
|
||||
if (!(key as string).startsWith(SESSION_E2EE_KEY_PREFIX)) {
|
||||
console.log("deleting", key);
|
||||
cursor.delete();
|
||||
}
|
||||
return NOT_DONE;
|
||||
})
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
store.clear();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Reference in a new issue