diff --git a/js/modules/messages_data_migrator.js b/js/modules/messages_data_migrator.js index 2071f69df..7357b9a6b 100644 --- a/js/modules/messages_data_migrator.js +++ b/js/modules/messages_data_migrator.js @@ -110,6 +110,12 @@ exports.processAll = async ({ return; } + let numTotalMessages = null; + // eslint-disable-next-line more/no-then + getNumMessages({ connection }).then((numMessages) => { + numTotalMessages = numMessages; + }); + const migrationStartTime = Date.now(); let unprocessedMessages = []; let totalMessagesProcessed = 0; @@ -165,6 +171,7 @@ exports.processAll = async ({ lastProcessedIndex, numUnprocessedMessages, numCumulativeMessagesProcessed: totalMessagesProcessed, + numTotalMessages, fetchDuration, saveDuration, upgradeDuration, @@ -266,3 +273,16 @@ const _dangerouslyFetchMessagesRequiringSchemaUpgradeWithoutIndex = reject(event.target.error); }); }; + +const getNumMessages = async ({ connection } = {}) => { + if (!isObject(connection)) { + throw new TypeError('"connection" is required'); + } + + const transaction = connection.transaction(MESSAGES_STORE_NAME, 'readonly'); + const messagesStore = transaction.objectStore(MESSAGES_STORE_NAME); + const numTotalMessages = await database.getCount({ store: messagesStore }); + await database.completeTransaction(transaction); + + return numTotalMessages; +};