From bd9a900a1b628523dc940bb0db4bad00e885bf2f Mon Sep 17 00:00:00 2001 From: sachaaaaa Date: Thu, 14 Nov 2019 17:07:52 +1100 Subject: [PATCH] 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() {