From 8ef809a02b9b50d2be1fc4fafa2bca84bc973a13 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Tue, 26 Jan 2021 11:35:12 -0500 Subject: [PATCH] Only cluster updates of the same type together. --- .../conversation/ConversationUpdateItem.java | 18 +++++++++++++++--- app/src/main/res/values/dimens.xml | 2 +- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java index 7e1dd3fde3..14186fc1ed 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java @@ -163,10 +163,12 @@ public final class ConversationUpdateItem extends FrameLayout hasWallpaper); } - private static boolean shouldCollapse(@NonNull MessageRecord current, @NonNull Optional candidate) { + private static boolean shouldCollapse(@NonNull MessageRecord current, @NonNull Optional candidate) + { return candidate.isPresent() && candidate.get().isUpdate() && - DateUtils.isSameDay(current.getTimestamp(), candidate.get().getTimestamp()); + DateUtils.isSameDay(current.getTimestamp(), candidate.get().getTimestamp()) && + isSameType(current, candidate.get()); } /** After a short delay, if the main data hasn't shown yet, then a loading message is displayed. */ @@ -229,7 +231,10 @@ public final class ConversationUpdateItem extends FrameLayout } } - private void present(ConversationMessage conversationMessage, @NonNull Optional nextMessageRecord, @NonNull Recipient conversationRecipient) { + private void present(@NonNull ConversationMessage conversationMessage, + @NonNull Optional nextMessageRecord, + @NonNull Recipient conversationRecipient) + { if (batchSelected.contains(conversationMessage)) setSelected(true); else setSelected(false); @@ -367,6 +372,13 @@ public final class ConversationUpdateItem extends FrameLayout } } + private static boolean isSameType(@NonNull MessageRecord current, @NonNull MessageRecord candidate) { + return (current.isGroupUpdate() && candidate.isGroupUpdate()) || + (current.isProfileChange() && candidate.isProfileChange()) || + (current.isGroupCall() && candidate.isGroupCall()) || + (current.isExpirationTimerUpdate() && candidate.isExpirationTimerUpdate()); + } + @Override public void setOnClickListener(View.OnClickListener l) { super.setOnClickListener(new InternalClickListener(l)); diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index c323d6c829..c960416686 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -163,7 +163,7 @@ 14.5dp - 2dp + 4dp 5dp 2dp