synchronize around notification update from corrected messages

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/parser/MessageParser.java         | 2 
src/main/java/eu/siacs/conversations/services/NotificationService.java | 8 
2 files changed, 8 insertions(+), 2 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/parser/MessageParser.java 🔗

@@ -543,7 +543,6 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
                             }
                             extractChatState(mXmppConnectionService.find(account, counterpart.asBareJid()), isTypeGroupChat, packet);
                             mXmppConnectionService.updateMessage(replacedMessage, uuid);
-                            mXmppConnectionService.getNotificationService().updateNotification(false);
                             if (mXmppConnectionService.confirmMessages()
                                     && replacedMessage.getStatus() == Message.STATUS_RECEIVED
                                     && (replacedMessage.trusted() || replacedMessage.getType() == Message.TYPE_PRIVATE)
@@ -557,6 +556,7 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
                                 conversation.getAccount().getPgpDecryptionService().decrypt(replacedMessage, false);
                             }
                         }
+                        mXmppConnectionService.getNotificationService().updateNotification();
                         return;
                     } else {
                         Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received message correction but verification didn't check out");

src/main/java/eu/siacs/conversations/services/NotificationService.java 🔗

@@ -366,7 +366,13 @@ public class NotificationService {
         mBuilder.setColor(ContextCompat.getColor(mXmppConnectionService, R.color.green600));
     }
 
-    public void updateNotification(final boolean notify) {
+    public void updateNotification() {
+        synchronized (notifications) {
+            updateNotification(false);
+        }
+    }
+
+    private void updateNotification(final boolean notify) {
         updateNotification(notify, null, false);
     }