mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-24 04:58:45 +00:00
Update edit message history dialog to match designs.
This commit is contained in:
@@ -1933,10 +1933,6 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
|
||||
}
|
||||
|
||||
private boolean isFooterVisible(@NonNull MessageRecord current, @NonNull Optional<MessageRecord> 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() ||
|
||||
|
||||
@@ -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. */
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -13,14 +13,6 @@
|
||||
android:layout_marginTop="16dp"
|
||||
android:background="@color/signal_icon_tint_tab_unselected" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/edit_history_title"
|
||||
style="@style/Signal.Text.TitleMedium"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="18dp"
|
||||
android:text="@string/EditMessageHistoryDialog_title" />
|
||||
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
|
||||
@@ -8,5 +8,5 @@
|
||||
android:paddingHorizontal="24dp"
|
||||
android:maxLines="2"
|
||||
android:ellipsize="end"
|
||||
android:text="@string/MessageQuotesBottomSheet_replies"
|
||||
android:id="@+id/separator_title"
|
||||
style="@style/Signal.Text.TitleSmall"/>
|
||||
Reference in New Issue
Block a user