diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationAdapterBridge.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationAdapterBridge.kt index a9aeb78f8f..42670de709 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationAdapterBridge.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationAdapterBridge.kt @@ -17,6 +17,13 @@ interface ConversationAdapterBridge { const val PAYLOAD_NAME_COLORS = 1 const val PAYLOAD_SELECTED = 2 const val PAYLOAD_PARENT_SCROLLING = 3 + + /** + * The pulse highlight is rendered entirely by the item decoration, so items that receive this + * payload deliberately do nothing. It exists so that requesting a pulse does not force a full + * rebind of an item that is already on screen. + */ + const val PAYLOAD_PULSE = 4 } fun hasNoConversationMessages(): Boolean 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 88564e28ae..1c16eaaad9 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 @@ -272,7 +272,7 @@ class ConversationAdapterV2( if (recordToPulse != null) { pulseRequest = ConversationAdapterBridge.PulseRequest(position, recordToPulse!!.messageRecord.isOutgoing) } - notifyItemChanged(position) + notifyItemChanged(position, ConversationAdapterBridge.PAYLOAD_PULSE) } } @@ -519,6 +519,10 @@ class ConversationAdapterV2( payloadApplied = true } + if (payload.contains(ConversationAdapterBridge.PAYLOAD_PULSE)) { + payloadApplied = true + } + return payloadApplied } 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 47ee95225f..fa66a449ba 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 @@ -252,6 +252,10 @@ open class V2ConversationItemTextOnlyViewHolder>( hasProcessedSupportedPayload = true } + if (ConversationAdapterBridge.PAYLOAD_PULSE in payload) { + hasProcessedSupportedPayload = true + } + if (hasProcessedSupportedPayload && V2Payload.WALLPAPER !in payload) { return }