ChatMarkers: parse own account from true counterpart

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/parser/MessageParser.java    | 9 
src/main/java/eu/siacs/conversations/ui/ConversationFragment.java | 3 
2 files changed, 5 insertions(+), 7 deletions(-)

Detailed changes

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

@@ -746,13 +746,14 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
 				if (conversation != null && id != null && sender != null) {
 					Message message = conversation.findMessageWithRemoteId(id, sender);
 					if (message != null) {
-						if (conversation.getMucOptions().isSelf(counterpart)) {
+						final Jid fallback = conversation.getMucOptions().getTrueCounterpart(counterpart);
+						final Jid trueJid = getTrueCounterpart((query != null && query.safeToExtractTrueCounterpart()) ? mucUserElement : null, fallback);
+						final boolean trueJidMatchesAccount = account.getJid().toBareJid().equals(trueJid == null ? null : trueJid.toBareJid());
+						if (trueJidMatchesAccount || conversation.getMucOptions().isSelf(counterpart)) {
 							if (!message.isRead() && (query == null || query.isCatchup())) { //checking if message is unread fixes race conditions with reflections
 								mXmppConnectionService.markRead(conversation);
 							}
-						} else {
-							final Jid fallback = conversation.getMucOptions().getTrueCounterpart(counterpart);
-							Jid trueJid = getTrueCounterpart((query != null && query.safeToExtractTrueCounterpart()) ? mucUserElement : null, fallback);
+						} else  if (!counterpart.isBareJid() && trueJid != null){
 							ReadByMarker readByMarker = ReadByMarker.from(counterpart, trueJid);
 							if (message.addReadByMarker(readByMarker)) {
 								Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": added read by (" + readByMarker.getRealJid() + ") to message '" + message.getBody() + "'");

src/main/java/eu/siacs/conversations/ui/ConversationFragment.java 🔗

@@ -1391,9 +1391,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
 					state = ChatState.PAUSED;
 					users = conversation.getMucOptions().getUsersWithChatState(state, 5);
 				}
-				int markersAdded = 0;
 				if (mucOptions.membersOnly() && mucOptions.nonanonymous()) {
-					//addedMarkers.addAll(ReadByMarker.from(users));
 					for (int i = this.messageList.size() - 1; i >= 0; --i) {
 						final Set<ReadByMarker> markersForMessage = messageList.get(i).getReadByMarkers();
 						final List<MucOptions.User> shownMarkers = new ArrayList<>();
@@ -1426,7 +1424,6 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
 							statusMessage = null;
 						}
 						if (statusMessage != null) {
-							++markersAdded;
 							this.messageList.add(i + 1, statusMessage);
 						}
 						addedMarkers.add(markerForSender);