From 5df75525063a16ce0314aec6be4950ea2d1a3001 Mon Sep 17 00:00:00 2001 From: Michelle Tang Date: Wed, 1 Apr 2026 16:01:43 -0400 Subject: [PATCH] Improve collapsed events with wallpapers. --- .../conversation/ConversationUpdateItem.java | 51 +++++++++++-------- .../res/layout/conversation_item_update.xml | 3 +- 2 files changed, 30 insertions(+), 24 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 0177992666..49a7fd0021 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java @@ -32,6 +32,7 @@ import com.bumptech.glide.RequestManager; import com.google.android.material.button.MaterialButton; import com.google.common.collect.Sets; +import org.signal.core.util.DimensionUnit; import org.signal.core.util.concurrent.ListenableFuture; import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.BindableConversationItem; @@ -863,29 +864,35 @@ public final class ConversationUpdateItem extends FrameLayout } private void presentCollapsedHead(CollapsedState collapsedState) { - CollapsibleEvents.CollapsibleType collapsibleType = CollapsibleEvents.getCollapsibleType(messageRecord.getType(), messageRecord.getMessageExtras()); - if (CollapsedState.isHead(collapsedState) && conversationMessage.getCollapsedSize() > 1 && collapsibleType != null) { - SpannableStringBuilder text = new SpannableStringBuilder() - .append(SignalSymbols.getSpannedString(getContext(), SignalSymbols.Weight.BOLD, getCollapsibleSymbol(collapsibleType), org.signal.core.ui.R.color.signal_colorOnSurfaceVariant)) - .append(" ") - .append(getCollapsibleString(collapsibleType)) - .append(" ") - .append(SignalSymbols.getSpannedString(getContext(), SignalSymbols.Weight.BOLD, collapsedState == CollapsedState.HEAD_EXPANDED ? SignalSymbols.Glyph.CHEVRON_UP : SignalSymbols.Glyph.CHEVRON_DOWN, org.signal.core.ui.R.color.signal_colorOnSurfaceVariant)); - collapsedButton.setText(text); - collapsedButton.setOnClickListener(v -> { - if (eventListener != null) { - if (CollapsedState.isCollapsed(collapsedState)) { - eventListener.onExpandEvents(conversationMessage.getMessageRecord().getId(), ConversationUpdateItem.this, conversationMessage.getCollapsedSize()); - } else if (!anyCollapsibleChildrenSelected()) { - eventListener.onCollapseEvents(conversationMessage.getMessageRecord().getId(), ConversationUpdateItem.this, conversationMessage.getCollapsedSize()); - } - } else { - passthroughClickListener.onClick(v); - } - }); - collapsedButton.setVisibility(VISIBLE); - } else { + if (!conversationMessage.isActiveCollapsibleHead()) { collapsedButton.setVisibility(GONE); + } else { + CollapsibleEvents.CollapsibleType collapsibleType = CollapsibleEvents.getCollapsibleType(messageRecord.getType(), messageRecord.getMessageExtras()); + if (collapsibleType != null) { + SpannableStringBuilder text = new SpannableStringBuilder() + .append(SignalSymbols.getSpannedString(getContext(), SignalSymbols.Weight.BOLD, getCollapsibleSymbol(collapsibleType), org.signal.core.ui.R.color.signal_colorOnSurfaceVariant)) + .append(" ") + .append(getCollapsibleString(collapsibleType)) + .append(" ") + .append(SignalSymbols.getSpannedString(getContext(), SignalSymbols.Weight.BOLD, collapsedState == CollapsedState.HEAD_EXPANDED ? SignalSymbols.Glyph.CHEVRON_UP : SignalSymbols.Glyph.CHEVRON_DOWN, org.signal.core.ui.R.color.signal_colorOnSurfaceVariant)); + collapsedButton.setText(text); + collapsedButton.setOnClickListener(v -> { + if (eventListener != null) { + if (CollapsedState.isCollapsed(collapsedState)) { + eventListener.onExpandEvents(conversationMessage.getMessageRecord().getId(), ConversationUpdateItem.this, conversationMessage.getCollapsedSize()); + } else if (!anyCollapsibleChildrenSelected()) { + eventListener.onCollapseEvents(conversationMessage.getMessageRecord().getId(), ConversationUpdateItem.this, conversationMessage.getCollapsedSize()); + } + } else { + passthroughClickListener.onClick(v); + } + }); + ViewUtil.setBottomMargin(collapsedButton, (int) DimensionUnit.DP.toPixels(conversationMessage.isActiveCollapsedHead() ? 0 : 12)); + collapsedButton.setVisibility(VISIBLE); + } else { + Log.w(TAG, "Found a message that is a collapsible head but does not have a collapsible type."); + collapsedButton.setVisibility(GONE); + } } } diff --git a/app/src/main/res/layout/conversation_item_update.xml b/app/src/main/res/layout/conversation_item_update.xml index 3e83d558b5..a245b216c3 100644 --- a/app/src/main/res/layout/conversation_item_update.xml +++ b/app/src/main/res/layout/conversation_item_update.xml @@ -30,13 +30,12 @@ android:layout_height="wrap_content" android:minHeight="0dp" android:paddingVertical="6dp" - android:layout_marginBottom="12dp" android:background="@drawable/rounded_rectangle_38" android:paddingHorizontal="16dp" android:textColor="@color/signal_colorOnSurfaceVariant" android:textAllCaps="false" style="?android:attr/borderlessButtonStyle" - android:backgroundTint="@color/signal_colorSurfaceVariant" + android:backgroundTint="@color/signal_colorSurface1" tools:text="12 group updates" />