From 9ed3e8befb7bf15e4c1720f73b20e7fc19768776 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Mon, 11 Sep 2023 08:41:30 -0400 Subject: [PATCH] Fix infinite spinner on scheduled link preview bug. --- .../v2/items/V2ConversationItemShapeTest.kt | 2 +- .../components/ConversationItemFooter.java | 4 ++-- .../securesms/components/LinkPreviewView.java | 6 ++--- .../conversation/ConversationAdapter.java | 24 +++++++------------ .../conversation/ConversationItem.java | 18 +++++++------- .../ConversationItemDisplayMode.kt | 12 +++++----- .../ScheduledMessagesBottomSheet.kt | 3 +-- .../quotes/MessageQuotesBottomSheet.kt | 2 +- .../ui/edit/EditMessageHistoryDialog.kt | 2 +- .../conversation/v2/ConversationAdapterV2.kt | 4 ++-- .../V2ConversationItemTextOnlyViewHolder.kt | 4 ++-- .../items/V2OnDispatchTouchEventListener.kt | 2 +- .../longmessage/LongMessageFragment.java | 2 +- .../MessageHeaderViewHolder.java | 2 +- 14 files changed, 40 insertions(+), 47 deletions(-) diff --git a/app/src/androidTest/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShapeTest.kt b/app/src/androidTest/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShapeTest.kt index cec6475645..cb6582d2bf 100644 --- a/app/src/androidTest/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShapeTest.kt +++ b/app/src/androidTest/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemShapeTest.kt @@ -210,7 +210,7 @@ class V2ConversationItemShapeTest { private val colorizer = Colorizer() - override val displayMode: ConversationItemDisplayMode = ConversationItemDisplayMode.STANDARD + override val displayMode: ConversationItemDisplayMode = ConversationItemDisplayMode.Standard override val clickListener: ConversationAdapter.ItemClickListener = FakeConversationItemClickListener override val selectedItems: Set = emptySet() diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/ConversationItemFooter.java b/app/src/main/java/org/thoughtcrime/securesms/components/ConversationItemFooter.java index 8ca833d53c..2dcdca3297 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/ConversationItemFooter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/ConversationItemFooter.java @@ -322,12 +322,12 @@ public class ConversationItemFooter extends ConstraintLayout { } else { long timestamp = messageRecord.getTimestamp(); if (messageRecord.isEditMessage()) { - if (displayMode == ConversationItemDisplayMode.EDIT_HISTORY) { + if (displayMode == ConversationItemDisplayMode.EditHistory.INSTANCE) { timestamp = messageRecord.getDateSent(); } } String date = DateUtils.getDatelessRelativeTimeSpanString(getContext(), locale, timestamp); - if (displayMode != ConversationItemDisplayMode.DETAILED && messageRecord.isEditMessage() && messageRecord.isLatestRevision()) { + if (displayMode != ConversationItemDisplayMode.Detailed.INSTANCE && messageRecord.isEditMessage() && messageRecord.isLatestRevision()) { date = getContext().getString(R.string.ConversationItem_edited_timestamp_footer, date); } dateView.setText(date); diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/LinkPreviewView.java b/app/src/main/java/org/thoughtcrime/securesms/components/LinkPreviewView.java index eb3dcb961f..35d069b618 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/LinkPreviewView.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/LinkPreviewView.java @@ -163,10 +163,10 @@ public class LinkPreviewView extends FrameLayout { } public void setLinkPreview(@NonNull GlideRequests glideRequests, @NonNull LinkPreview linkPreview, boolean showThumbnail) { - setLinkPreview(glideRequests, linkPreview, showThumbnail, true); + setLinkPreview(glideRequests, linkPreview, showThumbnail, true, false); } - public void setLinkPreview(@NonNull GlideRequests glideRequests, @NonNull LinkPreview linkPreview, boolean showThumbnail, boolean showDescription) { + public void setLinkPreview(@NonNull GlideRequests glideRequests, @NonNull LinkPreview linkPreview, boolean showThumbnail, boolean showDescription, boolean scheduleMessageMode) { spinner.setVisibility(GONE); noPreview.setVisibility(GONE); @@ -216,7 +216,7 @@ public class LinkPreviewView extends FrameLayout { if (showThumbnail && linkPreview.getThumbnail().isPresent()) { thumbnail.setVisibility(VISIBLE); thumbnailState.applyState(thumbnail); - thumbnail.get().setImageResource(glideRequests, new ImageSlide(linkPreview.getThumbnail().get()), type == TYPE_CONVERSATION, false); + thumbnail.get().setImageResource(glideRequests, new ImageSlide(linkPreview.getThumbnail().get()), type == TYPE_CONVERSATION && !scheduleMessageMode, false); thumbnail.get().showDownloadText(false); } else if (callLinkRootKey != null) { thumbnail.setVisibility(VISIBLE); diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationAdapter.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationAdapter.java index bcdb0dfd0d..7ada26245f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationAdapter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationAdapter.java @@ -114,8 +114,7 @@ public class ConversationAdapter private ConversationMessage inlineContent; private Colorizer colorizer; private boolean isTypingViewEnabled; - private ConversationItemDisplayMode condensedMode; - private boolean scheduledMessagesMode; + private ConversationItemDisplayMode displayMode; private PulseRequest pulseRequest; public ConversationAdapter(@NonNull Context context, @@ -252,12 +251,7 @@ public class ConversationAdapter } public void setCondensedMode(ConversationItemDisplayMode condensedMode) { - this.condensedMode = condensedMode; - notifyDataSetChanged(); - } - - public void setScheduledMessagesMode(boolean scheduledMessagesMode) { - this.scheduledMessagesMode = scheduledMessagesMode; + this.displayMode = condensedMode; notifyDataSetChanged(); } @@ -276,7 +270,7 @@ public class ConversationAdapter ConversationMessage previousMessage = adapterPosition < getItemCount() - 1 && !isFooterPosition(adapterPosition + 1) ? getItem(adapterPosition + 1) : null; ConversationMessage nextMessage = adapterPosition > 0 && !isHeaderPosition(adapterPosition - 1) ? getItem(adapterPosition - 1) : null; - ConversationItemDisplayMode displayMode = condensedMode != null ? condensedMode : ConversationItemDisplayMode.STANDARD; + ConversationItemDisplayMode itemDisplayMode = displayMode != null ? displayMode : ConversationItemDisplayMode.Standard.INSTANCE; conversationViewHolder.getBindable().bind(lifecycleOwner, conversationMessage, @@ -288,11 +282,11 @@ public class ConversationAdapter conversationMessage.getThreadRecipient(), searchQuery, conversationMessage == recordToPulse, - hasWallpaper && displayMode.displayWallpaper(), + hasWallpaper && itemDisplayMode.displayWallpaper(), isMessageRequestAccepted, conversationMessage == inlineContent, colorizer, - displayMode); + itemDisplayMode); if (conversationMessage == recordToPulse) { recordToPulse = null; @@ -331,9 +325,9 @@ public class ConversationAdapter if (conversationMessage == null) return -1; - if (scheduledMessagesMode) { + if (displayMode.getScheduleMessageMode()) { calendar.setTimeInMillis(((MediaMmsMessageRecord) conversationMessage.getMessageRecord()).getScheduledDate()); - } else if (condensedMode == ConversationItemDisplayMode.EDIT_HISTORY) { + } else if (displayMode == ConversationItemDisplayMode.EditHistory.INSTANCE) { calendar.setTimeInMillis(conversationMessage.getMessageRecord().getDateSent()); } else { calendar.setTimeInMillis(conversationMessage.getConversationTimestamp()); @@ -351,9 +345,9 @@ public class ConversationAdapter Context context = viewHolder.itemView.getContext(); ConversationMessage conversationMessage = Objects.requireNonNull(getItem(position)); - if (scheduledMessagesMode) { + if (displayMode.getScheduleMessageMode()) { viewHolder.setText(DateUtils.getScheduledMessagesDateHeaderString(viewHolder.itemView.getContext(), locale, ((MediaMmsMessageRecord) conversationMessage.getMessageRecord()).getScheduledDate())); - } else if (condensedMode == ConversationItemDisplayMode.EDIT_HISTORY) { + } else if (displayMode == ConversationItemDisplayMode.EditHistory.INSTANCE) { viewHolder.setText(DateUtils.getConversationDateHeaderString(viewHolder.itemView.getContext(), locale, conversationMessage.getMessageRecord().getDateSent())); } else { viewHolder.setText(DateUtils.getConversationDateHeaderString(viewHolder.itemView.getContext(), locale, conversationMessage.getConversationTimestamp())); 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 8a317ed062..ad11551caa 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java @@ -928,7 +928,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo * Today this is only {@link org.thoughtcrime.securesms.conversation.quotes.MessageQuotesBottomSheet}. */ private boolean isCondensedMode() { - return displayMode == ConversationItemDisplayMode.CONDENSED; + return displayMode instanceof ConversationItemDisplayMode.Condensed; } /** @@ -1182,7 +1182,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo ViewUtil.updateLayoutParamsIfNonNull(groupSenderHolder, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); ViewUtil.setTopMargin(linkPreviewStub.get(), 0); } else { - linkPreviewStub.get().setLinkPreview(glideRequests, linkPreview, true, !isContentCondensed()); + linkPreviewStub.get().setLinkPreview(glideRequests, linkPreview, true, !isContentCondensed(), displayMode.getScheduleMessageMode()); linkPreviewStub.get().setDownloadClickedListener(downloadClickListener); setLinkPreviewCorners(messageRecord, previousRecord, nextRecord, isGroupThread, false); ViewUtil.updateLayoutParams(bodyText, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); @@ -1242,7 +1242,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo documentViewStub.get().setDocument( ((MediaMmsMessageRecord) messageRecord).getSlideDeck().getDocumentSlide(), showControls, - displayMode != ConversationItemDisplayMode.DETAILED + displayMode != ConversationItemDisplayMode.Detailed.INSTANCE ); documentViewStub.get().setDocumentClickListener(new ThumbnailClickListener()); documentViewStub.get().setDownloadClickListener(singleDownloadClickListener); @@ -1764,7 +1764,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo } private void setHasBeenQuoted(@NonNull ConversationMessage message) { - if (message.hasBeenQuoted() && !isCondensedMode() && quotedIndicator != null && batchSelected.isEmpty() && displayMode != ConversationItemDisplayMode.EDIT_HISTORY) { + if (message.hasBeenQuoted() && !isCondensedMode() && quotedIndicator != null && batchSelected.isEmpty() && displayMode != ConversationItemDisplayMode.EditHistory.INSTANCE) { quotedIndicator.setVisibility(VISIBLE); quotedIndicator.setOnClickListener(quotedIndicatorClickListener); } else if (quotedIndicator != null) { @@ -1787,11 +1787,11 @@ public final class ConversationItem extends RelativeLayout implements BindableCo } private boolean forceFooter(@NonNull MessageRecord messageRecord) { - return hasAudio(messageRecord) || MessageRecordUtil.isEditMessage(messageRecord) || displayMode == ConversationItemDisplayMode.EDIT_HISTORY; + return hasAudio(messageRecord) || MessageRecordUtil.isEditMessage(messageRecord) || displayMode == ConversationItemDisplayMode.EditHistory.INSTANCE; } private boolean forceGroupHeader(@NonNull MessageRecord messageRecord) { - return displayMode == ConversationItemDisplayMode.EDIT_HISTORY; + return displayMode == ConversationItemDisplayMode.EditHistory.INSTANCE; } private ConversationItemFooter getActiveFooter(@NonNull MessageRecord messageRecord) { @@ -1895,7 +1895,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo int background; - if (isSingularMessage(current, previous, next, isGroupThread) || displayMode == ConversationItemDisplayMode.EDIT_HISTORY) { + if (isSingularMessage(current, previous, next, isGroupThread) || displayMode == ConversationItemDisplayMode.EditHistory.INSTANCE) { if (current.isOutgoing()) { background = R.drawable.message_bubble_background_sent_alone; outliner.setRadius(bigRadius); @@ -1991,11 +1991,11 @@ public final class ConversationItem extends RelativeLayout implements BindableCo int spacingTop = readDimen(context, R.dimen.conversation_vertical_message_spacing_collapse); int spacingBottom = spacingTop; - if (isStartOfMessageCluster(current, previous, isGroupThread) && (displayMode != ConversationItemDisplayMode.EDIT_HISTORY || next.isEmpty())) { + if (isStartOfMessageCluster(current, previous, isGroupThread) && (displayMode != ConversationItemDisplayMode.EditHistory.INSTANCE || next.isEmpty())) { spacingTop = readDimen(context, R.dimen.conversation_vertical_message_spacing_default); } - if (isEndOfMessageCluster(current, next, isGroupThread) || displayMode == ConversationItemDisplayMode.EDIT_HISTORY) { + if (isEndOfMessageCluster(current, next, isGroupThread) || displayMode == ConversationItemDisplayMode.EditHistory.INSTANCE) { spacingBottom = readDimen(context, R.dimen.conversation_vertical_message_spacing_default); } 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 5a8852f173..ad03ab892b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItemDisplayMode.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItemDisplayMode.kt @@ -1,19 +1,19 @@ package org.thoughtcrime.securesms.conversation -enum class ConversationItemDisplayMode { +sealed class ConversationItemDisplayMode(val scheduleMessageMode: Boolean = false) { /** Normal rendering, used for normal bubbles in the conversation view */ - STANDARD, + object Standard : ConversationItemDisplayMode() /** Smaller bubbles, often trimming text and shrinking images. Used for quote threads. */ - CONDENSED, + class Condensed(scheduleMessageMode: Boolean) : ConversationItemDisplayMode(scheduleMessageMode) /** Smaller bubbles, always singular bubbles, with a footer. Used for edit message history. */ - EDIT_HISTORY, + object EditHistory : ConversationItemDisplayMode() /** Less length restrictions. Used to show more info in message details. */ - DETAILED; + object Detailed : ConversationItemDisplayMode() fun displayWallpaper(): Boolean { - return this == STANDARD || this == DETAILED + return this == Standard || this == Detailed } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ScheduledMessagesBottomSheet.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/ScheduledMessagesBottomSheet.kt index f3c033bbe4..2a13bd3507 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ScheduledMessagesBottomSheet.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ScheduledMessagesBottomSheet.kt @@ -93,8 +93,7 @@ class ScheduledMessagesBottomSheet : FixedRoundedCornerBottomSheetDialogFragment val colorizer = Colorizer() messageAdapter = ConversationAdapter(requireContext(), viewLifecycleOwner, GlideApp.with(this), Locale.getDefault(), ConversationAdapterListener(), conversationRecipient.hasWallpaper(), colorizer).apply { - setCondensedMode(ConversationItemDisplayMode.CONDENSED) - setScheduledMessagesMode(true) + setCondensedMode(ConversationItemDisplayMode.Condensed(scheduleMessageMode = true)) } val list: RecyclerView = view.findViewById(R.id.scheduled_list).apply { 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 d25682b389..ef93ab0a50 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 @@ -74,7 +74,7 @@ class MessageQuotesBottomSheet : FixedRoundedCornerBottomSheetDialogFragment() { val colorizer = Colorizer() messageAdapter = ConversationAdapter(requireContext(), viewLifecycleOwner, GlideApp.with(this), Locale.getDefault(), ConversationAdapterListener(), conversationRecipient.hasWallpaper(), colorizer).apply { - setCondensedMode(ConversationItemDisplayMode.CONDENSED) + setCondensedMode(ConversationItemDisplayMode.Condensed(scheduleMessageMode = false)) } val list: RecyclerView = view.findViewById(R.id.quotes_list).apply { 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 a6607c95bd..8ba4e127ad 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 @@ -91,7 +91,7 @@ class EditMessageHistoryDialog : FixedRoundedCornerBottomSheetDialogFragment() { conversationRecipient.hasWallpaper(), colorizer ).apply { - setCondensedMode(ConversationItemDisplayMode.EDIT_HISTORY) + setCondensedMode(ConversationItemDisplayMode.EditHistory) } binding.editHistoryList.apply { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2.kt index 1afdd4d2fd..a2f0c4dac6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationAdapterV2.kt @@ -187,7 +187,7 @@ class ConversationAdapterV2( } override val displayMode: ConversationItemDisplayMode - get() = condensedMode ?: ConversationItemDisplayMode.STANDARD + get() = condensedMode ?: ConversationItemDisplayMode.Standard override fun onStartExpirationTimeout(messageRecord: MessageRecord) { startExpirationTimeout(messageRecord) @@ -484,7 +484,7 @@ class ConversationAdapterV2( get() = getConversationMessage(bindingAdapterPosition - 1)?.messageRecord.toOptional() protected val displayMode: ConversationItemDisplayMode - get() = condensedMode ?: ConversationItemDisplayMode.STANDARD + get() = condensedMode ?: ConversationItemDisplayMode.Standard override val conversationMessage: ConversationMessage get() = bindable.conversationMessage diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder.kt index fb98fa4462..d6d4799c06 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2ConversationItemTextOnlyViewHolder.kt @@ -448,7 +448,7 @@ open class V2ConversationItemTextOnlyViewHolder>( } private fun isContentCondensed(): Boolean { - return conversationContext.displayMode == ConversationItemDisplayMode.CONDENSED && conversationContext.getPreviousMessage(bindingAdapterPosition) == null + return conversationContext.displayMode is ConversationItemDisplayMode.Condensed && conversationContext.getPreviousMessage(bindingAdapterPosition) == null } private fun presentFooterExpiry() { @@ -605,7 +605,7 @@ open class V2ConversationItemTextOnlyViewHolder>( binding.conversationItemFooterDate.text = conversationMessage.formattedDate } else { var date = conversationMessage.formattedDate - if (conversationContext.displayMode != ConversationItemDisplayMode.DETAILED && record is MediaMmsMessageRecord && record.isEditMessage()) { + if (conversationContext.displayMode != ConversationItemDisplayMode.Detailed && record is MediaMmsMessageRecord && record.isEditMessage()) { date = getContext().getString(R.string.ConversationItem_edited_timestamp_footer, date) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2OnDispatchTouchEventListener.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2OnDispatchTouchEventListener.kt index c52e0128aa..883668f7f5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2OnDispatchTouchEventListener.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/items/V2OnDispatchTouchEventListener.kt @@ -48,7 +48,7 @@ class V2OnDispatchTouchEventListener( } override fun onDispatchTouchEvent(view: View, motionEvent: MotionEvent) { - if (conversationContext.displayMode == ConversationItemDisplayMode.CONDENSED) { + if (conversationContext.displayMode is ConversationItemDisplayMode.Condensed) { return } diff --git a/app/src/main/java/org/thoughtcrime/securesms/longmessage/LongMessageFragment.java b/app/src/main/java/org/thoughtcrime/securesms/longmessage/LongMessageFragment.java index 9860af4bad..1a89ad3fa6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/longmessage/LongMessageFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/longmessage/LongMessageFragment.java @@ -138,7 +138,7 @@ public class LongMessageFragment extends FullScreenDialogFragment { } else { text.setMentionBackgroundTint(ContextCompat.getColor(requireContext(), R.color.transparent_black_40)); } - footer.setMessageRecord(message.get().getMessageRecord(), Locale.getDefault(), ConversationItemDisplayMode.STANDARD); + footer.setMessageRecord(message.get().getMessageRecord(), Locale.getDefault(), ConversationItemDisplayMode.Standard.INSTANCE); }); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageHeaderViewHolder.java b/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageHeaderViewHolder.java index a7990d09ea..1937890aa5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageHeaderViewHolder.java +++ b/app/src/main/java/org/thoughtcrime/securesms/messagedetails/MessageHeaderViewHolder.java @@ -111,7 +111,7 @@ final class MessageHeaderViewHolder extends RecyclerView.ViewHolder implements G false, true, colorizer, - ConversationItemDisplayMode.DETAILED); + ConversationItemDisplayMode.Detailed.INSTANCE); } private void bindErrorState(MessageRecord messageRecord) {