Skip to content

Commit ab8b223

Browse files
Refactor message formatting (#1771)
1 parent 6d3c095 commit ab8b223

File tree

13 files changed

+331
-372
lines changed

13 files changed

+331
-372
lines changed

app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationAdapter.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ class ConversationAdapter(
138138
viewHolder.view.bind(
139139
message = message,
140140
previous = messageBefore,
141+
threadRecipient = threadRecipientProvider(),
141142
longPress = { onItemLongPress(message, viewHolder.adapterPosition, viewHolder.view) }
142143
)
143144
}

app/src/main/java/org/thoughtcrime/securesms/conversation/v2/messages/ControlMessageView.kt

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import org.session.libsession.utilities.ThemeUtil
2929
import org.session.libsession.utilities.getColorFromAttr
3030
import org.session.libsession.utilities.isGroup
3131
import org.session.libsession.utilities.isGroupOrCommunity
32+
import org.session.libsession.utilities.recipients.Recipient
3233
import org.session.libsession.utilities.recipients.displayName
3334
import org.thoughtcrime.securesms.auth.LoginStateRepository
3435
import 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

Comments
 (0)