From 9d9a797bda9698ec0e1d1a29625717ba99bb51e8 Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Mon, 25 Jun 2018 15:58:55 -0700 Subject: [PATCH] Handle timer updates along with group updates --- _locales/en/messages.json | 2 +- js/models/conversations.js | 6 +++--- js/models/messages.js | 13 ++++++++++--- js/views/message_view.js | 5 ++++- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 1d5e9893b..3cbd56ce0 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -1087,7 +1087,7 @@ }, "timerSetTo": { "message": "Timer set to $time$", - "description": "Displayed in the conversation list when the timer is updated.", + "description": "Displayed in the conversation list when the timer is updated by some automatic action.", "placeholders": { "time": { "content": "$1", diff --git a/js/models/conversations.js b/js/models/conversations.js index 26a63e6ba..41a0f12e4 100644 --- a/js/models/conversations.js +++ b/js/models/conversations.js @@ -899,13 +899,12 @@ providedExpireTimer, providedSource, receivedAt, - providedOptions + options = {} ) { - const options = providedOptions || {}; let expireTimer = providedExpireTimer; let source = providedSource; - _.defaults(options, { fromSync: false }); + _.defaults(options, { fromSync: false, fromGroupUpdate: false }); if (!expireTimer) { expireTimer = null; @@ -942,6 +941,7 @@ expireTimer, source, fromSync: options.fromSync, + fromGroupUpdate: options.fromGroupUpdate, }, }); if (this.isPrivate()) { diff --git a/js/models/messages.js b/js/models/messages.js index 927b92bfb..c841cae21 100644 --- a/js/models/messages.js +++ b/js/models/messages.js @@ -641,7 +641,7 @@ }); } - if (!message.isEndSession() && !message.isGroupUpdate()) { + if (!message.isEndSession()) { if (dataMessage.expireTimer) { if ( dataMessage.expireTimer !== conversation.get('expireTimer') @@ -649,10 +649,17 @@ conversation.updateExpirationTimer( dataMessage.expireTimer, source, - message.get('received_at') + message.get('received_at'), + { + fromGroupUpdate: message.isGroupUpdate(), + } ); } - } else if (conversation.get('expireTimer')) { + } else if ( + conversation.get('expireTimer') && + // We only turn off timers if it's not a group update + !message.isGroupUpdate() + ) { conversation.updateExpirationTimer( null, source, diff --git a/js/views/message_view.js b/js/views/message_view.js index 1209b1d26..3b4a48505 100644 --- a/js/views/message_view.js +++ b/js/views/message_view.js @@ -103,7 +103,10 @@ const timerUpdate = this.model.get('expirationTimerUpdate'); const prettySeconds = Whisper.ExpirationTimerOptions.getName(seconds); - if (timerUpdate && timerUpdate.fromSync) { + if ( + timerUpdate && + (timerUpdate.fromSync || timerUpdate.fromGroupUpdate) + ) { timerMessage = i18n('timerSetOnSync', prettySeconds); } else if (this.conversation.id === textsecure.storage.user.getNumber()) { timerMessage = i18n('youChangedTheTimer', prettySeconds);