From 3bbb9f535a8219ec970074ba4bbc785a6130adfb Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Fri, 13 Apr 2018 16:17:17 -0700 Subject: [PATCH] Load thumbnail even if we have the full message in hand This is important for now, when we aren't generating our own thumbnails --- js/models/conversations.js | 21 ++++++++++++++++++--- js/views/message_view.js | 17 +++++++++++------ 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/js/models/conversations.js b/js/models/conversations.js index 81ce3435db..d4a8f17a9b 100644 --- a/js/models/conversations.js +++ b/js/models/conversations.js @@ -1124,7 +1124,6 @@ // eslint-disable-next-line no-param-reassign message.quotedMessageFromDatabase = queryMessage; - this.forceRender(message); return true; }, async loadQuotedMessage(message, quotedMessage) { @@ -1174,7 +1173,6 @@ // eslint-disable-next-line no-param-reassign message.quoteThumbnail = thumbnailWithData; - this.forceRender(message); return true; }, async processQuotes(messages) { @@ -1201,6 +1199,13 @@ if (quotedMessage) { // eslint-disable-next-line no-param-reassign await this.loadQuotedMessage(message, quotedMessage); + + // Note: in the future when we generate our own thumbnail we won't need to rely + // on incoming thumbnail if we have our local message in hand. + if (!message.quotedMessage.imageUrl) { + await this.loadQuoteThumbnail(message, quote); + } + this.forceRender(message); return; } @@ -1222,11 +1227,21 @@ // 2. Go to the database for the real referenced attachment const loaded = await this.loadQuotedMessageFromDatabase(message, id); if (loaded) { + // Note: in the future when we generate our own thumbnail we won't need to rely + // on incoming thumbnail if we have our local message in hand. + if (!message.quotedMessageFromDatabase.imageUrl) { + await this.loadQuoteThumbnail(message, quote); + } + + this.forceRender(message); return; } // 3. Finally, use the provided thumbnail - await this.loadQuoteThumbnail(message, quote); + const gotThumbnail = await this.loadQuoteThumbnail(message, quote); + if (gotThumbnail) { + this.forceRender(message); + } }); return Promise.all(promises); diff --git a/js/views/message_view.js b/js/views/message_view.js index 871163f6fd..8d745dc517 100644 --- a/js/views/message_view.js +++ b/js/views/message_view.js @@ -366,14 +366,19 @@ this.timerView.update(); }, getQuoteObjectUrl() { - if (this.model.quotedMessageFromDatabase) { - return this.model.quotedMessageFromDatabase.imageUrl; + const fromDB = this.model.quotedMessageFromDatabase; + if (fromDB && fromDB.imageUrl) { + return fromDB.imageUrl; } - if (this.model.quotedMessage) { - return this.model.quotedMessage.imageUrl; + + const inMemory = this.model.quotedMessage; + if (inMemory && inMemory.imageUrl) { + return inMemory.imageUrl; } - if (this.model.quoteThumbnail) { - return this.model.quoteThumbnail.objectUrl; + + const thumbnail = this.model.quoteThumbnail; + if (thumbnail && thumbnail.objectUrl) { + return thumbnail.objectUrl; } return null;