improved logging for messages waiting for join

Daniel Gultsch created

Change summary

build.gradle                                                             |  4 
src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java  |  2 
src/main/java/eu/siacs/conversations/parser/MessageParser.java           |  3 
src/main/java/eu/siacs/conversations/services/XmppConnectionService.java | 23 
4 files changed, 23 insertions(+), 9 deletions(-)

Detailed changes

build.gradle 🔗

@@ -66,8 +66,8 @@ dependencies {
     implementation 'org.conscrypt:conscrypt-android:2.1.0'
     implementation 'me.drakeet.support:toastcompat:1.1.0'
     implementation "com.leinardi.android:speed-dial:2.0.1"
-    implementation 'com.squareup.retrofit2:retrofit:2.6.0'
-    implementation 'com.squareup.retrofit2:converter-gson:2.6.0'
+    implementation 'com.squareup.retrofit2:retrofit:2.6.1'
+    implementation 'com.squareup.retrofit2:converter-gson:2.6.1'
     implementation 'com.google.guava:guava:27.1-android'
     quicksyImplementation 'io.michaelrocks:libphonenumber-android:8.10.1'
 }

src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java 🔗

@@ -1484,7 +1484,7 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded {
 		while (iterator.hasNext()) {
 			final XmppAxolotlSession session = iterator.next();
 			if (trustedOrPreviouslyResponded(session)) {
-				completeSession(iterator.next());
+				completeSession(session);
 			}
 			iterator.remove();
 		}

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

@@ -803,9 +803,8 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
                                 mXmppConnectionService.markRead(conversation);
                             }
                         } else if (!counterpart.isBareJid() && trueJid != null) {
-                            ReadByMarker readByMarker = ReadByMarker.from(counterpart, trueJid);
+                            final ReadByMarker readByMarker = ReadByMarker.from(counterpart, trueJid);
                             if (message.addReadByMarker(readByMarker)) {
-                                Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": added read by (" + readByMarker.getRealJid() + ") to message '" + message.getBody() + "'");
                                 mXmppConnectionService.updateMessage(message, false);
                             }
                         }

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

@@ -1383,10 +1383,8 @@ public class XmppConnectionService extends Service {
             }
         }
 
-        final boolean inProgressJoin;
-        synchronized (account.inProgressConferenceJoins) {
-            inProgressJoin = conversation.getMode() == Conversational.MODE_MULTI && (account.inProgressConferenceJoins.contains(conversation) || account.pendingConferenceJoins.contains(conversation));
-        }
+        final boolean inProgressJoin = isJoinInProgress(conversation);
+
 
         if (account.isOnlineAndConnected() && !inProgressJoin) {
             switch (message.getEncryption()) {
@@ -1516,6 +1514,23 @@ public class XmppConnectionService extends Service {
         }
     }
 
+    private boolean isJoinInProgress(final Conversation conversation) {
+        final Account account = conversation.getAccount();
+        synchronized (account.inProgressConferenceJoins) {
+            if (conversation.getMode() == Conversational.MODE_MULTI) {
+                final boolean inProgress = account.inProgressConferenceJoins.contains(conversation);
+                final boolean pending = account.pendingConferenceJoins.contains(conversation);
+                final boolean inProgressJoin = inProgress || pending;
+                if (inProgressJoin) {
+                    Log.d(Config.LOGTAG,account.getJid().asBareJid()+": holding back message to group. inProgress="+inProgress+", pending="+pending);
+                }
+                return inProgressJoin;
+            } else {
+                return false;
+            }
+        }
+    }
+
     private void sendUnsentMessages(final Conversation conversation) {
         conversation.findWaitingMessages(message -> resendMessage(message, true));
     }