Remove all IndexedDB migration code

This commit is contained in:
Scott Nonnenberg 2020-04-28 14:18:41 -07:00
parent 752cd75c54
commit 464c814a95
22 changed files with 69 additions and 1673 deletions

View file

@ -18,7 +18,6 @@ import {
import { arrayBufferToBase64, base64ToArrayBuffer } from '../Crypto';
import { CURRENT_SCHEMA_VERSION } from '../../js/modules/types/message';
import { createBatcher } from '../util/batcher';
import { v4 as getGuid } from 'uuid';
import {
AttachmentDownloadJobType,
@ -208,9 +207,6 @@ const dataInterface: ClientInterface = {
cleanupOrphanedAttachments,
ensureFilePermissions,
getLegacyMessagesNeedingUpgrade,
saveLegacyMessage,
// Client-side only, and test-only
_removeConversations,
@ -1330,97 +1326,3 @@ async function getMessagesWithFileAttachments(
limit,
});
}
// Legacy IndexedDB Support
async function getLegacyMessagesNeedingUpgrade(
limit: number,
{ maxVersion = CURRENT_SCHEMA_VERSION }: { maxVersion: number }
): Promise<MessageType> {
const db = await window.Whisper.Database.open();
try {
return new Promise((resolve, reject) => {
const transaction = db.transaction('messages', 'readonly');
const messages: Array<MessageType> = [];
transaction.onerror = () => {
window.Whisper.Database.handleDOMException(
'getLegacyMessagesNeedingUpgrade transaction error',
transaction.error,
reject
);
};
transaction.oncomplete = () => {
resolve(messages);
};
const store = transaction.objectStore('messages');
const index = store.index('schemaVersion');
const range = IDBKeyRange.upperBound(maxVersion, true);
const request = index.openCursor(range);
let count = 0;
request.onsuccess = event => {
// @ts-ignore
const cursor = event.target.result;
if (cursor) {
count += 1;
messages.push(cursor.value);
if (count >= limit) {
return;
}
cursor.continue();
}
};
request.onerror = () => {
window.Whisper.Database.handleDOMException(
'getLegacyMessagesNeedingUpgrade request error',
request.error,
reject
);
};
});
} finally {
db.close();
}
}
async function saveLegacyMessage(data: MessageType) {
const db = await window.Whisper.Database.open();
try {
await new Promise((resolve, reject) => {
const transaction = db.transaction('messages', 'readwrite');
transaction.onerror = () => {
window.Whisper.Database.handleDOMException(
'saveLegacyMessage transaction error',
transaction.error,
reject
);
};
transaction.oncomplete = resolve;
const store = transaction.objectStore('messages');
if (!data.id) {
data.id = getGuid();
}
const request = store.put(data, data.id);
request.onsuccess = resolve;
request.onerror = () => {
window.Whisper.Database.handleDOMException(
'saveLegacyMessage request error',
request.error,
reject
);
};
});
} finally {
db.close();
}
}