~singpolyma/cheogram-android

38797177c7ec41923daaff4091af50c173418009 — Daniel Gultsch 6 years ago a686487
ChatMarkers: parse own account from true counterpart
M src/main/java/eu/siacs/conversations/parser/MessageParser.java => src/main/java/eu/siacs/conversations/parser/MessageParser.java +5 -4
@@ 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() + "'");

M src/main/java/eu/siacs/conversations/ui/ConversationFragment.java => src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +0 -3
@@ 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);