diff --git a/js/models/conversations.js b/js/models/conversations.js index 19e701c98..ab1429e5c 100644 --- a/js/models/conversations.js +++ b/js/models/conversations.js @@ -460,13 +460,13 @@ } } }, - async onFriendRequestAccepted(updateUnread = false) { + async onFriendRequestAccepted({ updateUnread }) { // Make sure we don't keep incrementing the unread count const unreadCount = this.isKeyExchangeCompleted() || !updateUnread ? {} : { unreadCount: this.get('unreadCount') + 1 }; this.set({ friendRequestStatus: null, keyExchangeCompleted: true, - ...unreadCount + ...unreadCount, }); await window.Signal.Data.updateConversation(this.id, this.attributes, { @@ -478,16 +478,17 @@ // Update any pending outgoing messages const pending = await this.getPendingFriendRequests('outgoing'); - for (const request of pending) { - // Only update successfully sent requests - if (request.hasErrors()) continue; + await Promise.all( + pending.map(async request => { + if (request.hasErrors()) return; - request.set({ friendStatus: 'accepted' }); - await window.Signal.Data.saveMessage(request.attributes, { - Message: Whisper.Message, - }); - this.trigger('updateMessage', request); - } + request.set({ friendStatus: 'accepted' }); + await window.Signal.Data.saveMessage(request.attributes, { + Message: Whisper.Message, + }); + this.trigger('updateMessage', request); + }) + ); await this.updatePendingFriendRequests(); @@ -2034,7 +2035,8 @@ notify(message) { if (!message.isIncoming()) { - if (message.isFriendRequest()) return this.notifyFriendRequest(message.get('source'), 'requested'); + if (message.isFriendRequest()) + return this.notifyFriendRequest(message.get('source'), 'requested'); return Promise.resolve(); } const conversationId = this.id; diff --git a/js/models/messages.js b/js/models/messages.js index bce16382f..95b6afe73 100644 --- a/js/models/messages.js +++ b/js/models/messages.js @@ -192,7 +192,8 @@ getNotificationText() { const description = this.getDescription(); if (description) { - if (this.isFriendRequest()) return `Friend Request: ${description}`; + if (this.isFriendRequest()) + return `Friend Request: ${description}`; return description; } if (this.get('attachments').length > 0) { diff --git a/libtextsecure/message_receiver.js b/libtextsecure/message_receiver.js index 080b22888..ac67f1b10 100644 --- a/libtextsecure/message_receiver.js +++ b/libtextsecure/message_receiver.js @@ -1024,11 +1024,11 @@ MessageReceiver.prototype.extend({ if (savePreKey) { await this.handlePreKeyBundleMessage( envelope.source, - this.decodePreKeyBundleMessage(content.preKeyBundleMessage), + this.decodePreKeyBundleMessage(content.preKeyBundleMessage) ); // Update the conversation - await conversation.onFriendRequestAccepted(true); + await conversation.onFriendRequestAccepted({ updateUnread: true }); } } }