From f914556e4ce2f93ffcd320d0448fd0e8a7b4064f Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Mon, 18 Oct 2021 17:09:55 -0700 Subject: [PATCH] Ensure conversation is in left pane when creating a draft message --- ts/views/conversation_view.ts | 37 +++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/ts/views/conversation_view.ts b/ts/views/conversation_view.ts index 715da3792..6ace6e124 100644 --- a/ts/views/conversation_view.ts +++ b/ts/views/conversation_view.ts @@ -1,6 +1,8 @@ // Copyright 2020-2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only +/* eslint-disable camelcase */ + import { unstable_batchedUpdates as batchedUpdates } from 'react-dom'; import { debounce, flatten, omit, throttle } from 'lodash'; import { render } from 'mustache'; @@ -1344,10 +1346,14 @@ export class ConversationView extends window.Backbone.View { if (this.model.get('draftChanged')) { if (this.model.hasDraft()) { + const now = Date.now(); + const active_at = this.model.get('active_at') || now; + this.model.set({ + active_at, draftChanged: false, - draftTimestamp: Date.now(), - timestamp: Date.now(), + draftTimestamp: now, + timestamp: now, }); } else { this.model.set({ @@ -1498,6 +1504,7 @@ export class ConversationView extends window.Backbone.View { const onSave = (caption?: string) => { const attachments = this.model.get('draftAttachments') || []; + this.model.set({ draftAttachments: attachments.map((item: AttachmentType) => { if (item.pending || attachment.pending) { @@ -3119,9 +3126,20 @@ export class ConversationView extends window.Backbone.View { const existing = model.get('quotedMessageId'); if (existing !== messageId) { + const now = Date.now(); + let active_at = this.model.get('active_at'); + let timestamp = this.model.get('timestamp'); + + if (!active_at && messageId) { + active_at = now; + timestamp = now; + } + this.model.set({ - quotedMessageId: messageId, + active_at, draftChanged: true, + quotedMessageId: messageId, + timestamp, }); await this.saveModel(); @@ -3346,10 +3364,21 @@ export class ConversationView extends window.Backbone.View { } if (messageText !== model.get('draft')) { + const now = Date.now(); + let active_at = this.model.get('active_at'); + let timestamp = this.model.get('timestamp'); + + if (!active_at) { + active_at = now; + timestamp = now; + } + this.model.set({ + active_at, draft: messageText, - draftChanged: true, draftBodyRanges: bodyRanges, + draftChanged: true, + timestamp, }); await this.saveModel(); }