Document Message v4, remove data-free thumbnails

This commit is contained in:
Scott Nonnenberg 2018-04-23 16:43:25 -07:00
parent 6599535cbb
commit bf81c3db63
No known key found for this signature in database
GPG Key ID: 5F82280C35134661
2 changed files with 43 additions and 3 deletions

View File

@ -18,6 +18,9 @@ const PRIVATE = 'private';
// - Attachments: Sanitize Unicode order override characters.
// Version 3
// - Attachments: Write attachment data to disk and store relative path to it.
// Version 4
// - Quotes: Write thumbnail data to disk and store relative path to it.
const INITIAL_SCHEMA_VERSION = 0;
@ -158,13 +161,19 @@ exports._mapQuotedAttachments = upgradeAttachment => async (message, context) =>
}
const upgradeWithContext = async (attachment) => {
if (!attachment || !attachment.thumbnail) {
const { thumbnail } = attachment;
if (!thumbnail) {
return attachment;
}
const thumbnail = await upgradeAttachment(attachment.thumbnail, context);
if (!thumbnail.data) {
console.log('Quoted attachment did not have thumbnail data; removing it');
return omit(attachment, ['thumbnail']);
}
const upgradedThumbnail = await upgradeAttachment(thumbnail, context);
return Object.assign({}, attachment, {
thumbnail,
thumbnail: upgradedThumbnail,
});
};

View File

@ -410,6 +410,37 @@ describe('Message', () => {
assert.deepEqual(result, message);
});
it('eliminates thumbnails with no data fielkd', async () => {
const upgradeAttachment = sinon.stub().throws(new Error("Shouldn't be called"));
const upgradeVersion = Message._mapQuotedAttachments(upgradeAttachment);
const message = {
body: 'hey there!',
quote: {
text: 'hey!',
attachments: [{
fileName: 'cat.gif',
contentType: 'image/gif',
thumbnail: {
fileName: 'failed to download!',
},
}],
},
};
const expected = {
body: 'hey there!',
quote: {
text: 'hey!',
attachments: [{
contentType: 'image/gif',
fileName: 'cat.gif',
}],
},
};
const result = await upgradeVersion(message);
assert.deepEqual(result, expected);
});
it('calls provided async function for each quoted attachment', async () => {
const upgradeAttachment = sinon.stub().resolves({
path: '/new/path/on/disk',