From 50ad005e7cab3ef7e540fe17805e94ac9b6c9d59 Mon Sep 17 00:00:00 2001 From: Clark Date: Mon, 15 May 2023 10:00:11 -0400 Subject: [PATCH] Update edit message history dialog to match designs. --- .../securesms/conversation/ConversationItem.java | 4 ---- .../conversation/ConversationItemDisplayMode.kt | 2 +- .../conversation/quotes/MessageQuotesBottomSheet.kt | 2 +- ...coration.kt => OriginalMessageSeparatorDecoration.kt} | 9 ++++++--- .../conversation/ui/edit/EditMessageHistoryDialog.kt | 5 ++++- .../conversation/ui/edit/EditMessageHistoryRepository.kt | 8 ++++---- .../org/thoughtcrime/securesms/database/MessageTable.kt | 2 +- .../res/layout/message_edit_history_bottom_sheet.xml | 8 -------- ...ion.xml => original_message_separator_decoration.xml} | 2 +- 9 files changed, 18 insertions(+), 24 deletions(-) rename app/src/main/java/org/thoughtcrime/securesms/conversation/quotes/{MessageQuoteHeaderDecoration.kt => OriginalMessageSeparatorDecoration.kt} (85%) rename app/src/main/res/layout/{message_quote_header_decoration.xml => original_message_separator_decoration.xml} (87%) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java index 80e7f8ae33..34002b46b7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java @@ -1933,10 +1933,6 @@ public final class ConversationItem extends RelativeLayout implements BindableCo } private boolean isFooterVisible(@NonNull MessageRecord current, @NonNull Optional next, boolean isGroupThread) { - if (displayMode == ConversationItemDisplayMode.EXTRA_CONDENSED) { - return false; - } - boolean differentTimestamps = next.isPresent() && !DateUtils.isSameExtendedRelativeTimestamp(next.get().getTimestamp(), current.getTimestamp()); return forceFooter(messageRecord) || current.getExpiresIn() > 0 || !current.isSecure() || current.isPending() || current.isPendingInsecureSmsFallback() || diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItemDisplayMode.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItemDisplayMode.kt index 9a300a8ff6..a4de38c704 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItemDisplayMode.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItemDisplayMode.kt @@ -7,7 +7,7 @@ enum class ConversationItemDisplayMode { /** Smaller bubbles, often trimming text and shrinking images. Used for quote threads. */ CONDENSED, - /** Smaller bubbles, no footers */ + /** Smaller bubbles, always singular bubbles, with a footer. Used for edit message history. */ EXTRA_CONDENSED, /** Less length restrictions. Used to show more info in message details. */ diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/quotes/MessageQuotesBottomSheet.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/quotes/MessageQuotesBottomSheet.kt index 01ba25143f..9ea98f6c8d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/quotes/MessageQuotesBottomSheet.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/quotes/MessageQuotesBottomSheet.kt @@ -80,7 +80,7 @@ class MessageQuotesBottomSheet : FixedRoundedCornerBottomSheetDialogFragment() { layoutManager = SmoothScrollingLinearLayoutManager(requireContext(), true) adapter = messageAdapter itemAnimator = null - addItemDecoration(MessageQuoteHeaderDecoration(context)) + addItemDecoration(OriginalMessageSeparatorDecoration(context, R.string.MessageQuotesBottomSheet_replies)) doOnNextLayout { // Adding this without waiting for a layout pass would result in an indeterminate amount of padding added to the top of the view diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/quotes/MessageQuoteHeaderDecoration.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/quotes/OriginalMessageSeparatorDecoration.kt similarity index 85% rename from app/src/main/java/org/thoughtcrime/securesms/conversation/quotes/MessageQuoteHeaderDecoration.kt rename to app/src/main/java/org/thoughtcrime/securesms/conversation/quotes/OriginalMessageSeparatorDecoration.kt index 6bd452f6ea..87578d3724 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/quotes/MessageQuoteHeaderDecoration.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/quotes/OriginalMessageSeparatorDecoration.kt @@ -7,6 +7,7 @@ import android.graphics.Rect import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.TextView import androidx.core.view.children import androidx.core.view.marginLeft import androidx.recyclerview.widget.RecyclerView @@ -14,9 +15,9 @@ import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.util.ViewUtil /** - * Serves as the separator between the original message and the messages that quote it in [MessageQuotesBottomSheet] + * Serves as the separator between the original message and other messages. Used in [MessageQuotesBottomSheet] and [EditMessageHistoryDialog] */ -class MessageQuoteHeaderDecoration(context: Context) : RecyclerView.ItemDecoration() { +class OriginalMessageSeparatorDecoration(context: Context, val titleRes: Int) : RecyclerView.ItemDecoration() { private val dividerMargin = ViewUtil.dpToPx(context, 32) private val dividerHeight = ViewUtil.dpToPx(context, 2) @@ -56,7 +57,9 @@ class MessageQuoteHeaderDecoration(context: Context) : RecyclerView.ItemDecorati return it } - val header: View = LayoutInflater.from(parent.context).inflate(R.layout.message_quote_header_decoration, parent, false) + val header: View = LayoutInflater.from(parent.context).inflate(R.layout.original_message_separator_decoration, parent, false) + val titleView: TextView = header.findViewById(R.id.separator_title) + titleView.setText(titleRes) val widthSpec = View.MeasureSpec.makeMeasureSpec(parent.width, View.MeasureSpec.EXACTLY) val heightSpec = View.MeasureSpec.makeMeasureSpec(parent.height, View.MeasureSpec.UNSPECIFIED) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/edit/EditMessageHistoryDialog.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/edit/EditMessageHistoryDialog.kt index 8a1cecd80e..a995f97ef6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/edit/EditMessageHistoryDialog.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/edit/EditMessageHistoryDialog.kt @@ -10,6 +10,7 @@ import androidx.fragment.app.viewModels import androidx.recyclerview.widget.LinearLayoutManager import io.reactivex.rxjava3.kotlin.subscribeBy import org.signal.core.util.concurrent.LifecycleDisposable +import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.components.FixedRoundedCornerBottomSheetDialogFragment import org.thoughtcrime.securesms.components.ViewBinderDelegate import org.thoughtcrime.securesms.conversation.ConversationAdapter @@ -19,6 +20,7 @@ import org.thoughtcrime.securesms.conversation.ConversationMessage import org.thoughtcrime.securesms.conversation.colors.Colorizer import org.thoughtcrime.securesms.conversation.colors.RecyclerViewColorizer import org.thoughtcrime.securesms.conversation.mutiselect.MultiselectPart +import org.thoughtcrime.securesms.conversation.quotes.OriginalMessageSeparatorDecoration import org.thoughtcrime.securesms.database.model.MessageRecord import org.thoughtcrime.securesms.database.model.MmsMessageRecord import org.thoughtcrime.securesms.databinding.MessageEditHistoryBottomSheetBinding @@ -76,9 +78,10 @@ class EditMessageHistoryDialog : FixedRoundedCornerBottomSheetDialogFragment() { } binding.editHistoryList.apply { - layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false) + layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, true) adapter = messageAdapter itemAnimator = null + addItemDecoration(OriginalMessageSeparatorDecoration(context, R.string.EditMessageHistoryDialog_title)) } val recyclerViewColorizer = RecyclerViewColorizer(binding.editHistoryList) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/edit/EditMessageHistoryRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/edit/EditMessageHistoryRepository.kt index c47746705b..f480fd5d47 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/edit/EditMessageHistoryRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ui/edit/EditMessageHistoryRepository.kt @@ -36,16 +36,16 @@ object EditMessageHistoryRepository { .getMessageEditHistory(messageId) .toList() + if (records.isEmpty()) { + return emptyList() + } + val attachmentHelper = AttachmentHelper() .apply { addAll(records) fetchAttachments() } - if (records.isEmpty()) { - return emptyList() - } - val threadRecipient: Recipient = requireNotNull(SignalDatabase.threads.getRecipientForThreadId(records[0].threadId)) return attachmentHelper diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt index f1b5cc824c..403ddbff6d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MessageTable.kt @@ -1943,7 +1943,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat val cursor = readableDatabase.select(*MMS_PROJECTION) .from(TABLE_NAME) .where("$TABLE_NAME.$ID = ? OR $TABLE_NAME.$LATEST_REVISION_ID = ?", id, id) - .orderBy("$TABLE_NAME.$ID DESC") + .orderBy("$TABLE_NAME.$DATE_SENT ASC") .run() return mmsReaderFor(cursor) diff --git a/app/src/main/res/layout/message_edit_history_bottom_sheet.xml b/app/src/main/res/layout/message_edit_history_bottom_sheet.xml index e1637bd7ce..c53ee917b3 100644 --- a/app/src/main/res/layout/message_edit_history_bottom_sheet.xml +++ b/app/src/main/res/layout/message_edit_history_bottom_sheet.xml @@ -13,14 +13,6 @@ android:layout_marginTop="16dp" android:background="@color/signal_icon_tint_tab_unselected" /> - - \ No newline at end of file