From bfe91427abe63cc3cde69e5f47f60deb48e268b9 Mon Sep 17 00:00:00 2001 From: ceokot Date: Fri, 3 Dec 2021 07:51:21 +0200 Subject: [PATCH] fix: Add date breaks on control messages --- .../conversation/v2/ConversationAdapter.kt | 7 +++-- .../v2/messages/ControlMessageView.kt | 10 +++++-- .../main/res/layout/view_control_message.xml | 28 +++++++++++++------ 3 files changed, 31 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationAdapter.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationAdapter.kt index 29f06e51ea..c033009ad1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationAdapter.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationAdapter.kt @@ -64,15 +64,16 @@ class ConversationAdapter(context: Context, cursor: Cursor, private val onItemPr override fun onBindItemViewHolder(viewHolder: ViewHolder, cursor: Cursor) { val message = getMessage(cursor)!! + val position = viewHolder.adapterPosition + val messageBefore = getMessageBefore(position, cursor) when (viewHolder) { is VisibleMessageViewHolder -> { val view = viewHolder.view val isSelected = selectedItems.contains(message) view.snIsSelected = isSelected view.messageTimestampTextView.isVisible = isSelected - val position = viewHolder.adapterPosition view.indexInAdapter = position - view.bind(message, getMessageBefore(position, cursor), getMessageAfter(position, cursor), glide, searchQuery) + view.bind(message, messageBefore, getMessageAfter(position, cursor), glide, searchQuery) if (!message.isDeleted) { view.onPress = { event -> onItemPress(message, viewHolder.adapterPosition, view, event) } view.onSwipeToReply = { onItemSwipeToReply(message, viewHolder.adapterPosition) } @@ -80,7 +81,7 @@ class ConversationAdapter(context: Context, cursor: Cursor, private val onItemPr } view.contentViewDelegate = visibleMessageContentViewDelegate } - is ControlMessageViewHolder -> viewHolder.view.bind(message) + is ControlMessageViewHolder -> viewHolder.view.bind(message, messageBefore) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/ControlMessageView.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/ControlMessageView.kt index 78e926d041..75f5af85f6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/ControlMessageView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/ControlMessageView.kt @@ -1,17 +1,18 @@ package org.thoughtcrime.securesms.conversation.v2.messages import android.content.Context -import android.content.res.Resources import android.util.AttributeSet -import android.view.Gravity import android.view.LayoutInflater import android.view.View import android.widget.LinearLayout import androidx.core.content.res.ResourcesCompat +import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.view_control_message.view.* import network.loki.messenger.R import org.thoughtcrime.securesms.database.model.MessageRecord +import org.thoughtcrime.securesms.util.DateUtils +import java.util.Locale class ControlMessageView : LinearLayout { @@ -27,7 +28,10 @@ class ControlMessageView : LinearLayout { // endregion // region Updating - fun bind(message: MessageRecord) { + fun bind(message: MessageRecord, previous: MessageRecord?) { + val showDateBreak = (previous == null || message.timestamp - previous.timestamp > VisibleMessageView.maxTimeBetweenBreaks) + dateBreakTextView.isVisible = showDateBreak + dateBreakTextView.text = if (showDateBreak) DateUtils.getDisplayFormattedTimeSpanString(context, Locale.getDefault(), message.timestamp) else "" iconImageView.visibility = View.GONE if (message.isExpirationTimerUpdate) { iconImageView.setImageDrawable(ResourcesCompat.getDrawable(resources, R.drawable.ic_timer, context.theme)) diff --git a/app/src/main/res/layout/view_control_message.xml b/app/src/main/res/layout/view_control_message.xml index cedf0dbca4..909bb83322 100644 --- a/app/src/main/res/layout/view_control_message.xml +++ b/app/src/main/res/layout/view_control_message.xml @@ -1,28 +1,40 @@ - + android:paddingVertical="@dimen/medium_spacing"> + + + app:tint="@color/text" + tools:src="@drawable/ic_timer" /> + tools:text="@string/MessageRecord_you_disabled_disappearing_messages" /> \ No newline at end of file