From fb2ebddaa326b283eed22d6175992ba8ecf2fee1 Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Tue, 23 Jan 2018 12:27:34 -0800 Subject: [PATCH 1/3] Remove expired message if it expired during database fetch (#1983) * Log SyncMessage destination, even if it's a group * Remove disappearing message even if deleted during fetch This change fixes a potential race condition with disappearing message removal from the UI. If the UI is in the middle of making a database request for messages to display, then we need to wait for that to complete before removing the newly-deleted expired message. --- js/views/conversation_view.js | 20 ++++++++++++++++++-- libtextsecure/message_receiver.js | 6 +++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/js/views/conversation_view.js b/js/views/conversation_view.js index f36be03024..d19ceb6360 100644 --- a/js/views/conversation_view.js +++ b/js/views/conversation_view.js @@ -645,8 +645,24 @@ } }, onExpiredCollection: function(message) { - console.log('removing message', message.get('sent_at'), 'from collection'); - this.model.messageCollection.remove(message.id); + var removeMessage = function() { + console.log( + 'removing message', + message.get('sent_at'), + 'from collection' + ); + this.model.messageCollection.remove(message.id); + }.bind(this); + + // If a fetch is in progress, then we need to wait until that's complete to + // do this removal. Otherwise we could remove from messageCollection, then + // the async database fetch could include the removed message. + + if (this.inProgressFetch) { + this.inProgressFetch.then(removeMessage); + } else { + removeMessage(); + } }, addMessage: function(message) { diff --git a/libtextsecure/message_receiver.js b/libtextsecure/message_receiver.js index 11434168a4..befba50d2c 100644 --- a/libtextsecure/message_receiver.js +++ b/libtextsecure/message_receiver.js @@ -595,8 +595,12 @@ MessageReceiver.prototype.extend({ } if (syncMessage.sent) { var sentMessage = syncMessage.sent; + var to = sentMessage.message.group + ? 'group(' + sentMessage.message.group.id.toBinary() + ')' + : sentMessage.destination; + console.log('sent message to', - sentMessage.destination, + to, sentMessage.timestamp.toNumber(), 'from', this.getEnvelopeId(envelope) From 5bb6b2f77fbf54aca6933352d5ebac2940da746d Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Tue, 23 Jan 2018 13:48:30 -0800 Subject: [PATCH 2/3] Update to latest Electron 1.7.x (#1996) Fixes #1991, related to IME input on Mac. --- package.json | 2 +- yarn.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index e01a4e8a20..641187c3b5 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "asar": "^0.14.0", "bower": "^1.8.2", "chai": "^4.1.2", - "electron": "1.7.10", + "electron": "1.7.11", "electron-builder": "^19.53.7", "electron-icon-maker": "0.0.3", "electron-publisher-s3": "^19.53.7", diff --git a/yarn.lock b/yarn.lock index e8fe4a8032..b618af367f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1516,9 +1516,9 @@ electron-updater@^2.19.0: semver "^5.4.1" source-map-support "^0.5.0" -electron@1.7.10: - version "1.7.10" - resolved "https://registry.yarnpkg.com/electron/-/electron-1.7.10.tgz#3a3e83d965fd7fafe473be8ddf8f472561b6253d" +electron@1.7.11: + version "1.7.11" + resolved "https://registry.yarnpkg.com/electron/-/electron-1.7.11.tgz#993b6aa79e0e79a7cfcc369f4c813fbd9a0b08d9" dependencies: "@types/node" "^7.0.18" electron-download "^3.0.1" From 9d9991e0f3955c9ad453bbb1b69d5560e8d0d8c7 Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Thu, 25 Jan 2018 10:57:41 -0800 Subject: [PATCH 3/3] v1.3.0-beta.1 Update to Electron 1.7.11 (#1996) Fixed: Crash during input via Chinese IME on Mac (#1996) Fixed: Expired disappearing messages would sometimes remain in conversation (#1983) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 641187c3b5..d2294b80b3 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "productName": "Signal", "description": "Private messaging from your desktop", "repository": "https://github.com/WhisperSystems/Signal-Desktop.git", - "version": "1.2.0-beta.2", + "version": "1.3.0-beta.1", "license": "GPL-3.0", "author": { "name": "Open Whisper Systems",