From 0e1b534d3c9c3b8ae9b740eeb5b605c6c752385d Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Wed, 31 May 2017 11:32:17 -0700 Subject: [PATCH] Make MessageView.render() idempotent Re-renders happen when we re-fetch messages from the database, and our previous technique for loading attachments resulted in a new attachment view added for every call to render() This change ensures that a second call to render() does not add any more attachment views. FREEBIE --- js/views/message_view.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/js/views/message_view.js b/js/views/message_view.js index cc579d610..c99b418c5 100644 --- a/js/views/message_view.js +++ b/js/views/message_view.js @@ -261,6 +261,11 @@ this.$('.avatar').replaceWith(avatarView.render().$('.avatar')); }, loadAttachments: function() { + if (this.loadedAttachments) { + return; + } + this.loadedAttachments = []; + this.model.get('attachments').forEach(function(attachment) { var view = new Whisper.AttachmentView({ model: attachment, @@ -274,6 +279,7 @@ } }); view.render(); + this.loadedAttachments.push(view); }.bind(this)); } });