@@ -29,6 +29,7 @@ import org.session.libsession.utilities.ThemeUtil
2929import org.session.libsession.utilities.getColorFromAttr
3030import org.session.libsession.utilities.isGroup
3131import org.session.libsession.utilities.isGroupOrCommunity
32+ import org.session.libsession.utilities.recipients.Recipient
3233import org.session.libsession.utilities.recipients.displayName
3334import org.thoughtcrime.securesms.auth.LoginStateRepository
3435import org.thoughtcrime.securesms.conversation.disappearingmessages.DisappearingMessages
@@ -76,20 +77,28 @@ class ControlMessageView : LinearLayout {
7677 @Inject lateinit var recipientRepository: RecipientRepository
7778 @Inject lateinit var loginStateRepository: LoginStateRepository
7879 @Inject lateinit var threadDatabase: ThreadDatabase
80+ @Inject lateinit var messageFormatter: MessageFormatter
7981
8082 val controlContentView: View get() = binding.controlContentView
8183
8284 init {
8385 layoutParams = RecyclerView .LayoutParams (RecyclerView .LayoutParams .MATCH_PARENT , RecyclerView .LayoutParams .WRAP_CONTENT )
8486 }
8587
86- fun bind (message : MessageRecord , previous : MessageRecord ? , longPress : (() -> Unit )? = null) {
88+ fun bind (message : MessageRecord ,
89+ threadRecipient : Recipient ,
90+ previous : MessageRecord ? ,
91+ longPress : (() -> Unit )? = null) {
8792 binding.dateBreakTextView.showDateBreak(message, previous, dateUtils)
8893 binding.iconImageView.isGone = true
8994 binding.expirationTimerView.isGone = true
9095 binding.followSetting.isGone = true
9196
92- var messageBody: CharSequence = message.getDisplayBody(context)
97+ val messageBody = messageFormatter.formatMessageBody(
98+ context = context,
99+ message = message,
100+ threadRecipient = threadRecipient,
101+ )
93102
94103 binding.root.contentDescription = null
95104 binding.textView.text = messageBody
@@ -99,9 +108,7 @@ class ControlMessageView : LinearLayout {
99108 binding.apply {
100109 expirationTimerView.isVisible = true
101110
102- val threadRecipient = DatabaseComponent .get(context).threadDatabase().getRecipientForThreadId(message.threadId)
103-
104- if (threadRecipient?.isGroup == true ) {
111+ if (threadRecipient.isGroupRecipient) {
105112 expirationTimerView.setTimerIcon()
106113 } else {
107114 expirationTimerView.setExpirationTime(message.expireStarted, message.expiresIn)
@@ -110,7 +117,7 @@ class ControlMessageView : LinearLayout {
110117 followSetting.isVisible = ExpirationConfiguration .isNewConfigEnabled
111118 && ! message.isOutgoing
112119 && messageContent.expiryMode != (message.individualRecipient?.expiryMode ? : ExpiryMode .NONE )
113- && threadRecipient?.isGroupOrCommunity != true
120+ && ! threadRecipient.isGroupOrCommunityRecipient
114121
115122 if (followSetting.isVisible) {
116123 binding.controlContentView.setOnClickListener {
@@ -138,20 +145,6 @@ class ControlMessageView : LinearLayout {
138145 }
139146 }
140147 message.isMessageRequestResponse -> {
141- val msgRecipient = message.recipient.address.toString()
142- val me = loginStateRepository.getLocalNumber()
143- binding.textView.text = if (me == msgRecipient) { // you accepted the user's request
144- threadDatabase.getRecipientForThreadId(message.threadId)
145- ?.let { recipientRepository.getRecipientSync(it) }
146- ?.let { recipient -> context.getSubbedCharSequence(
147- R .string.messageRequestYouHaveAccepted,
148- NAME_KEY to recipient.displayName()
149- )
150- }
151- } else { // they accepted your request
152- context.getString(R .string.messageRequestsAccepted)
153- }
154-
155148 binding.root.contentDescription = context.getString(R .string.AccessibilityId_message_request_config_message )
156149 }
157150 message.isCallLog -> {
0 commit comments