Load attachments before writing them upon export

This commit is contained in:
Daniel Gasienica 2018-04-03 21:16:24 -04:00
parent 7eeabb5b1a
commit 43ab320d31
2 changed files with 7 additions and 3 deletions

View file

@ -506,9 +506,11 @@ async function writeAttachment(attachment, options) {
await stream.close();
}
async function writeAttachments(attachments, options) {
async function writeAttachments(rawAttachments, options) {
const { name } = options;
const { loadAttachmentData } = Signal.Migrations;
const attachments = await Promise.all(rawAttachments.map(loadAttachmentData));
const promises = _.map(
attachments,
(attachment, index) => writeAttachment(attachment, Object.assign({}, options, {
@ -626,7 +628,7 @@ async function exportConversation(db, conversation, options) {
const jsonString = JSON.stringify(stringify(message));
stream.write(jsonString);
if (attachments && attachments.length) {
if (attachments && attachments.length > 0) {
const exportAttachments = () => writeAttachments(attachments, {
dir: attachmentsDir,
name,

View file

@ -116,6 +116,8 @@ const readAttachmentData = Attachments.createReader(attachmentsPath);
const writeNewAttachmentData = Attachments.createWriterForNew(attachmentsPath);
const writeExistingAttachmentData = Attachments.createWriterForExisting(attachmentsPath);
const loadAttachmentData = Attachment.loadData(readAttachmentData);
// Injected context functions to keep `Message` agnostic from Electron:
const upgradeSchemaContext = {
writeNewAttachmentData,
@ -140,7 +142,7 @@ window.Signal.Migrations.deleteAttachmentData =
window.Signal.Migrations.getPlaceholderMigrations = getPlaceholderMigrations;
window.Signal.Migrations.importMessage =
Message.createImporter(writeExistingAttachmentData);
window.Signal.Migrations.loadAttachmentData = Attachment.loadData(readAttachmentData);
window.Signal.Migrations.loadAttachmentData = loadAttachmentData;
window.Signal.Migrations.Migrations0DatabaseWithAttachmentData =
require('./js/modules/migrations/migrations_0_database_with_attachment_data');
window.Signal.Migrations.Migrations1DatabaseWithoutAttachmentData =