Listen for recipient name changes in conversation item.

This commit is contained in:
Greyson Parrelli
2024-04-01 19:58:05 -04:00
parent d3718aa7ef
commit 0d652ccfd6

View File

@@ -41,6 +41,8 @@ import org.thoughtcrime.securesms.database.model.MessageRecord
import org.thoughtcrime.securesms.database.model.MmsMessageRecord import org.thoughtcrime.securesms.database.model.MmsMessageRecord
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientForeverObserver
import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.util.InterceptableLongClickCopyLinkSpan import org.thoughtcrime.securesms.util.InterceptableLongClickCopyLinkSpan
import org.thoughtcrime.securesms.util.LongClickMovementMethod import org.thoughtcrime.securesms.util.LongClickMovementMethod
@@ -66,7 +68,7 @@ open class V2ConversationItemTextOnlyViewHolder<Model : MappingModel<Model>>(
private val binding: V2ConversationItemTextOnlyBindingBridge, private val binding: V2ConversationItemTextOnlyBindingBridge,
private val conversationContext: V2ConversationContext, private val conversationContext: V2ConversationContext,
footerDelegate: V2FooterPositionDelegate = V2FooterPositionDelegate(binding) footerDelegate: V2FooterPositionDelegate = V2FooterPositionDelegate(binding)
) : V2ConversationItemViewHolder<Model>(binding.root, conversationContext), Multiselectable, InteractiveConversationElement { ) : V2ConversationItemViewHolder<Model>(binding.root, conversationContext), Multiselectable, InteractiveConversationElement, RecipientForeverObserver {
companion object { companion object {
private val STYLE_FACTORY = SearchUtil.StyleFactory { arrayOf<CharacterStyle>(BackgroundColorSpan(Color.YELLOW), ForegroundColorSpan(Color.BLACK)) } private val STYLE_FACTORY = SearchUtil.StyleFactory { arrayOf<CharacterStyle>(BackgroundColorSpan(Color.YELLOW), ForegroundColorSpan(Color.BLACK)) }
@@ -189,7 +191,15 @@ open class V2ConversationItemTextOnlyViewHolder<Model : MappingModel<Model>>(
} }
check(model is ConversationMessageElement) check(model is ConversationMessageElement)
if (this::conversationMessage.isInitialized) {
conversationMessage.messageRecord.fromRecipient.live().removeForeverObserver(this)
}
conversationMessage = model.conversationMessage conversationMessage = model.conversationMessage
if (conversationMessage.threadRecipient.isGroup) {
conversationMessage.messageRecord.fromRecipient.live().observeForever(this)
}
shape = shapeDelegate.setMessageShape( shape = shapeDelegate.setMessageShape(
currentMessage = conversationMessage.messageRecord, currentMessage = conversationMessage.messageRecord,
@@ -765,4 +775,8 @@ open class V2ConversationItemTextOnlyViewHolder<Model : MappingModel<Model>>(
return true return true
} }
} }
override fun onRecipientChanged(recipient: Recipient) {
presentSender()
}
} }