|
|
|
@ -74,17 +74,17 @@ fun TimelineItemTextView(
@@ -74,17 +74,17 @@ fun TimelineItemTextView(
|
|
|
|
|
internal fun getTextWithResolvedMentions(content: TimelineItemTextBasedContent): CharSequence { |
|
|
|
|
val userProfileCache = LocalRoomMemberProfilesCache.current |
|
|
|
|
val lastCacheUpdate by userProfileCache.lastCacheUpdate.collectAsState() |
|
|
|
|
val formattedBody = remember(content.htmlBody, lastCacheUpdate) { |
|
|
|
|
updateMentionSpans(content.formattedBody, userProfileCache) |
|
|
|
|
SpannableString(content.formattedBody ?: content.body) |
|
|
|
|
val formattedBody = remember(content.formattedBody, lastCacheUpdate) { |
|
|
|
|
content.formattedBody?.let { formattedBody -> |
|
|
|
|
updateMentionSpans(formattedBody, userProfileCache) |
|
|
|
|
formattedBody |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return formattedBody |
|
|
|
|
} |
|
|
|
|
return SpannableString(formattedBody ?: content.body) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private fun updateMentionSpans(text: CharSequence?, cache: RoomMemberProfilesCache): Boolean { |
|
|
|
|
private fun updateMentionSpans(text: CharSequence, cache: RoomMemberProfilesCache): Boolean { |
|
|
|
|
var changedContents = false |
|
|
|
|
if (text != null) { |
|
|
|
|
for (mentionSpan in text.getMentionSpans()) { |
|
|
|
|
when (mentionSpan.type) { |
|
|
|
|
MentionSpan.Type.USER -> { |
|
|
|
@ -100,7 +100,6 @@ private fun updateMentionSpans(text: CharSequence?, cache: RoomMemberProfilesCac
@@ -100,7 +100,6 @@ private fun updateMentionSpans(text: CharSequence?, cache: RoomMemberProfilesCac
|
|
|
|
|
MentionSpan.Type.ROOM -> Unit |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return changedContents |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|