diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/ConversationItemFooter.java b/app/src/main/java/org/thoughtcrime/securesms/components/ConversationItemFooter.java index 8897c87b30..369c600b51 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/ConversationItemFooter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/ConversationItemFooter.java @@ -327,7 +327,7 @@ public class ConversationItemFooter extends ConstraintLayout { } } String date = DateUtils.getSimpleRelativeTimeSpanString(getContext(), locale, timestamp); - if (displayMode != ConversationItemDisplayMode.DETAILED && messageRecord.isEditMessage()) { + if (displayMode != ConversationItemDisplayMode.DETAILED && messageRecord.isEditMessage() && messageRecord.isLatestRevision()) { date = getContext().getString(R.string.ConversationItem_edited_timestamp_footer, date); } dateView.setText(date); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java index f6c588e3b5..4f560b42bd 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java @@ -1765,7 +1765,11 @@ public final class ConversationItem extends RelativeLayout implements BindableCo } private boolean forceFooter(@NonNull MessageRecord messageRecord) { - return hasAudio(messageRecord) || MessageRecordUtil.isEditMessage(messageRecord); + return hasAudio(messageRecord) || MessageRecordUtil.isEditMessage(messageRecord) || displayMode == ConversationItemDisplayMode.EDIT_HISTORY; + } + + private boolean forceGroupHeader(@NonNull MessageRecord messageRecord) { + return displayMode == ConversationItemDisplayMode.EDIT_HISTORY; } private ConversationItemFooter getActiveFooter(@NonNull MessageRecord messageRecord) { @@ -1811,7 +1815,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo contactPhotoHolder.setVisibility(VISIBLE); if (!previous.isPresent() || previous.get().isUpdate() || !current.getFromRecipient().equals(previous.get().getFromRecipient()) || - !DateUtils.isSameDay(previous.get().getTimestamp(), current.getTimestamp()) || !isWithinClusteringTime(current, previous.get())) + !DateUtils.isSameDay(previous.get().getTimestamp(), current.getTimestamp()) || !isWithinClusteringTime(current, previous.get()) || forceGroupHeader(current)) { groupSenderHolder.setVisibility(VISIBLE); @@ -1825,7 +1829,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo groupSenderHolder.setVisibility(GONE); } - if (!next.isPresent() || next.get().isUpdate() || !current.getFromRecipient().equals(next.get().getFromRecipient()) || !isWithinClusteringTime(current, next.get())) { + if (!next.isPresent() || next.get().isUpdate() || !current.getFromRecipient().equals(next.get().getFromRecipient()) || !isWithinClusteringTime(current, next.get()) || forceGroupHeader(current)) { contactPhoto.setVisibility(VISIBLE); badgeImageView.setVisibility(VISIBLE); } else { diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java b/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java index 7d1f33b42b..b2e8ad93ad 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/model/MessageRecord.java @@ -738,6 +738,13 @@ public abstract class MessageRecord extends DisplayRecord { return originalMessageId != null; } + public boolean isLatestRevision() { + if (this instanceof MediaMmsMessageRecord) { + return ((MediaMmsMessageRecord) this).getLatestRevisionId() == null; + } + return true; + } + public @Nullable MessageId getOriginalMessageId() { return originalMessageId; }