From bd9a900a1b628523dc940bb0db4bad00e885bf2f Mon Sep 17 00:00:00 2001 From: sachaaaaa <sacha@loki.network> Date: Thu, 14 Nov 2019 17:07:52 +1100 Subject: [PATCH 1/2] Prevent instantiating a new BulkEdit react component with every click --- js/views/bulk_edit_view.js | 29 +++++++++++------------------ js/views/conversation_view.js | 2 +- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/js/views/bulk_edit_view.js b/js/views/bulk_edit_view.js index c886ff023..c29f8401c 100644 --- a/js/views/bulk_edit_view.js +++ b/js/views/bulk_edit_view.js @@ -8,33 +8,26 @@ Whisper.BulkEditView = Whisper.View.extend({ initialize(options) { - this.selectedMessages = new Set(); - this.render(); - this.onCancel = options.onCancel; - this.onDelete = options.onDelete; - }, - render() { - if (this.memberView) { - this.memberView.remove(); - this.memberView = null; - } + this.props = { + onCancel: options.onCancel, + onDelete: options.onDelete, + messageCount: 0, + }; this.memberView = new Whisper.ReactWrapperView({ className: 'bulk-edit-view', Component: window.Signal.Components.BulkEdit, - props: { - messageCount: this.selectedMessages.size, - onCancel: this.onCancel, - onDelete: this.onDelete, - }, + props: this.props, }); this.$el.append(this.memberView.el); - return this; + }, + render() { + this.memberView.update(this.props); }, - update(selectedMessages) { - this.selectedMessages = selectedMessages; + update(selectionSize) { + this.props.messageCount = selectionSize; this.render(); }, }); diff --git a/js/views/conversation_view.js b/js/views/conversation_view.js index 6a798cf78..f53f7cb1d 100644 --- a/js/views/conversation_view.js +++ b/js/views/conversation_view.js @@ -1797,7 +1797,7 @@ $('.compose').show(); } - this.bulkEditView.update(this.model.selectedMessages); + this.bulkEditView.update(selectionSize); }, resetMessageSelection() { From 7f96b4c95cfbbc105baeef28193a575e5e3db4c8 Mon Sep 17 00:00:00 2001 From: sachaaaaa <sacha@loki.network> Date: Fri, 15 Nov 2019 10:02:11 +1100 Subject: [PATCH 2/2] lazy instantiation --- js/views/bulk_edit_view.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/js/views/bulk_edit_view.js b/js/views/bulk_edit_view.js index c29f8401c..ec6b37301 100644 --- a/js/views/bulk_edit_view.js +++ b/js/views/bulk_edit_view.js @@ -8,12 +8,18 @@ Whisper.BulkEditView = Whisper.View.extend({ initialize(options) { + this.memberView = null; this.props = { onCancel: options.onCancel, onDelete: options.onDelete, messageCount: 0, }; - + }, + render() { + if (this.memberView) { + this.memberView.update(this.props); + return; + } this.memberView = new Whisper.ReactWrapperView({ className: 'bulk-edit-view', Component: window.Signal.Components.BulkEdit, @@ -22,9 +28,6 @@ this.$el.append(this.memberView.el); }, - render() { - this.memberView.update(this.props); - }, update(selectionSize) { this.props.messageCount = selectionSize;