From 6699571910b6e29d74bf8db29a6cb1cbbc49df78 Mon Sep 17 00:00:00 2001 From: lilia Date: Wed, 16 Nov 2016 12:36:50 +0100 Subject: [PATCH] Don't load group contacts unnecessarily There are some cases when we want to initialize a group object without loading its contacts, such as while processing delivery receipts. We really only need to load the contacts for a group/convo when we are rendering it, so let the front end handle those cases (which most of them do already). --- js/models/conversations.js | 13 ++++++------- js/views/conversation_view.js | 12 +++++++----- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/js/models/conversations.js b/js/models/conversations.js index aa7c547264..beef40de31 100644 --- a/js/models/conversations.js +++ b/js/models/conversations.js @@ -41,13 +41,12 @@ this.on('change:avatar', this.updateAvatarUrl); this.on('destroy', this.revokeAvatarUrl); this.on('read', this.onReadMessage); - this.fetchContacts().then(function() { - this.contactCollection.each(function(contact) { - textsecure.storage.protocol.on('keychange:' + contact.id, function() { - this.addKeyChange(contact.id); - }.bind(this)); + var members = this.get('members') || []; + members.map(function(number) { + textsecure.storage.protocol.on('keychange:' + m.id, function() { + this.conversation.addKeyChange(m.id); }.bind(this)); - }.bind(this)); + }); }, addKeyChange: function(id) { @@ -324,7 +323,7 @@ } else { var promises = []; var members = this.get('members') || []; - this.contactCollection.reset( + this.contactCollection.add( members.map(function(number) { var c = ConversationController.create({ id : number, diff --git a/js/views/conversation_view.js b/js/views/conversation_view.js index 65825b0e2a..d29349f2d3 100644 --- a/js/views/conversation_view.js +++ b/js/views/conversation_view.js @@ -269,12 +269,14 @@ }, messageDetail: function(e, data) { - var view = new Whisper.MessageDetailView({ - model: data.message, - conversation: this.model + return this.model.fetchContacts().then(function() { + var view = new Whisper.MessageDetailView({ + model: data.message, + conversation: this.model + }); + this.listenBack(view); + view.render(); }); - this.listenBack(view); - view.render(); }, listenBack: function(view) {