From fd826749e43fa370c27caae5bfa70bee8099cd86 Mon Sep 17 00:00:00 2001 From: Clark Date: Wed, 24 May 2023 10:58:02 -0400 Subject: [PATCH] Edit message design tweaks. --- .../conversation/ConversationFragment.java | 15 +++++++++++++-- .../conversation/ConversationParentFragment.java | 5 +++-- .../mutiselect/ConversationItemAnimator.kt | 7 ++++--- .../conversation/v2/ConversationFragment.kt | 3 +++ .../main/res/layout/conversation_input_panel.xml | 6 +++--- app/src/main/res/values/strings.xml | 2 +- 6 files changed, 27 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java index fa5a94e284..0825b35c24 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java @@ -76,6 +76,7 @@ import org.signal.core.util.concurrent.LifecycleDisposable; import org.signal.core.util.concurrent.SignalExecutors; import org.signal.core.util.concurrent.SimpleTask; import org.signal.core.util.logging.Log; +import org.thoughtcrime.securesms.BindableConversationItem; import org.thoughtcrime.securesms.LoggingFragment; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.badges.gifts.OpenableGift; @@ -318,7 +319,17 @@ public class ConversationFragment extends LoggingFragment implements Multiselect } }, () -> conversationViewModel.shouldPlayMessageAnimations() && list.getScrollState() == RecyclerView.SCROLL_STATE_IDLE, - () -> list.canScrollVertically(1) || list.canScrollVertically(-1)); + () -> list.canScrollVertically(1) || list.canScrollVertically(-1), + (viewHolder) -> { + if (viewHolder instanceof ConversationAdapter.ConversationViewHolder) { + ConversationAdapter.ConversationViewHolder conversationViewHolder = (ConversationAdapter.ConversationViewHolder) viewHolder; + BindableConversationItem conversationItem = conversationViewHolder.getBindable(); + if (conversationItem != null) { + return !MessageRecordUtil.isEditMessage(conversationItem.getConversationMessage().getMessageRecord()); + } + } + return true; + }); multiselectItemDecoration = new MultiselectItemDecoration(requireContext(), () -> chatWallpaper); @@ -1189,7 +1200,7 @@ public class ConversationFragment extends LoggingFragment implements Multiselect } public void stageOutgoingMessage(OutgoingMessage message) { - if (message.getScheduledDate() != -1) { + if (message.getScheduledDate() != -1 || message.isMessageEdit()) { return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java index 784d1093d6..4bf6b2429e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationParentFragment.java @@ -2806,8 +2806,9 @@ public class ConversationParentFragment extends Fragment fragment.reload(recipient.get(), threadId); setVisibleThread(threadId); } - - fragment.scrollToBottom(); + if (!inputPanel.inEditMessageMode()) { + fragment.scrollToBottom(); + } attachmentManager.cleanup(); updateLinkPreviewState(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/ConversationItemAnimator.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/ConversationItemAnimator.kt index 2f063ffad0..81aa9d14ab 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/ConversationItemAnimator.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/mutiselect/ConversationItemAnimator.kt @@ -17,7 +17,8 @@ import org.thoughtcrime.securesms.conversation.ConversationAdapter class ConversationItemAnimator( private val isInMultiSelectMode: () -> Boolean, private val shouldPlayMessageAnimations: () -> Boolean, - private val isParentFilled: () -> Boolean + private val isParentFilled: () -> Boolean, + private val shouldUseSlideAnimation: (RecyclerView.ViewHolder) -> Boolean ) : RecyclerView.ItemAnimator() { private data class TweeningInfo( @@ -54,7 +55,7 @@ class ConversationItemAnimator( } override fun animateAppearance(viewHolder: RecyclerView.ViewHolder, preLayoutInfo: ItemHolderInfo?, postLayoutInfo: ItemHolderInfo): Boolean { - if (viewHolder.absoluteAdapterPosition > 1) { + if (viewHolder.absoluteAdapterPosition > 1 || !shouldUseSlideAnimation(viewHolder)) { dispatchAnimationFinished(viewHolder) return false } @@ -95,7 +96,7 @@ class ConversationItemAnimator( override fun animatePersistence(viewHolder: RecyclerView.ViewHolder, preLayoutInfo: ItemHolderInfo, postLayoutInfo: ItemHolderInfo): Boolean { return if (!isInMultiSelectMode() && shouldPlayMessageAnimations() && isParentFilled()) { - if (pendingSlideAnimations.contains(viewHolder) || slideAnimations.containsKey(viewHolder)) { + if (pendingSlideAnimations.contains(viewHolder) || slideAnimations.containsKey(viewHolder) || !shouldUseSlideAnimation(viewHolder)) { dispatchAnimationFinished(viewHolder) false } else { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt index 8fb653ed28..d1daf56527 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt @@ -700,6 +700,9 @@ class ConversationFragment : LoggingFragment(R.layout.v2_conversation_fragment) }, isParentFilled = { binding.conversationItemRecycler.canScrollVertically(1) || binding.conversationItemRecycler.canScrollVertically(-1) + }, + shouldUseSlideAnimation = { viewHolder -> + true } ) } diff --git a/app/src/main/res/layout/conversation_input_panel.xml b/app/src/main/res/layout/conversation_input_panel.xml index f795533ce5..f434ff3738 100644 --- a/app/src/main/res/layout/conversation_input_panel.xml +++ b/app/src/main/res/layout/conversation_input_panel.xml @@ -32,11 +32,11 @@ Can\'t download video. You will need to send it again. - edited %1$s + edited\u2000%1$s Add attachment