Edit message design tweaks.

This commit is contained in:
Clark
2023-05-24 10:58:02 -04:00
committed by Nicholas
parent 627e15c3dd
commit fd826749e4
6 changed files with 27 additions and 11 deletions

View File

@@ -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;
}

View File

@@ -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();

View File

@@ -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 {

View File

@@ -700,6 +700,9 @@ class ConversationFragment : LoggingFragment(R.layout.v2_conversation_fragment)
},
isParentFilled = {
binding.conversationItemRecycler.canScrollVertically(1) || binding.conversationItemRecycler.canScrollVertically(-1)
},
shouldUseSlideAnimation = { viewHolder ->
true
}
)
}

View File

@@ -32,11 +32,11 @@
<androidx.appcompat.widget.AppCompatImageButton
android:id="@+id/input_panel_exit_edit_mode"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="bottom"
android:layout_marginEnd="12dp"
android:layout_marginBottom="6dp"
android:layout_marginBottom="2dp"
android:background="@drawable/circle_tintable"
android:backgroundTint="@color/signal_colorOnSurfaceVariant"
android:foreground="?attr/selectableItemBackgroundBorderless"

View File

@@ -315,7 +315,7 @@
<!-- Dialog error message shown when user can\'t download a their own video message via a linked device due to a permanent failure (e.g., unable to decrypt) -->
<string name="ConversationItem_cant_download_video_you_will_need_to_send_it_again">Can\'t download video. You will need to send it again.</string>
<!-- Display as the timestamp footer in a message bubble in a conversation when a message has been edited. The timestamp will go from \'11m\' to \'edited 11m\' -->
<string name="ConversationItem_edited_timestamp_footer">edited %1$s</string>
<string name="ConversationItem_edited_timestamp_footer">edited\u2000%1$s</string>
<!-- ConversationActivity -->
<string name="ConversationActivity_add_attachment">Add attachment</string>