Merge pull request #3123 from element-hq/feature/fga/fix_timeline_text_item_not_refreshed
Timeline : fix text item not refreshed when content change
This commit is contained in:
@@ -74,31 +74,30 @@ 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 -> {
|
||||
val displayName = cache.getDisplayName(UserId(mentionSpan.rawValue)) ?: mentionSpan.rawValue
|
||||
if (mentionSpan.text != displayName) {
|
||||
changedContents = true
|
||||
mentionSpan.text = displayName
|
||||
}
|
||||
for (mentionSpan in text.getMentionSpans()) {
|
||||
when (mentionSpan.type) {
|
||||
MentionSpan.Type.USER -> {
|
||||
val displayName = cache.getDisplayName(UserId(mentionSpan.rawValue)) ?: mentionSpan.rawValue
|
||||
if (mentionSpan.text != displayName) {
|
||||
changedContents = true
|
||||
mentionSpan.text = displayName
|
||||
}
|
||||
// There's no need to do anything for `@room` pills
|
||||
MentionSpan.Type.EVERYONE -> Unit
|
||||
// Nothing yet for room mentions
|
||||
MentionSpan.Type.ROOM -> Unit
|
||||
}
|
||||
// There's no need to do anything for `@room` pills
|
||||
MentionSpan.Type.EVERYONE -> Unit
|
||||
// Nothing yet for room mentions
|
||||
MentionSpan.Type.ROOM -> Unit
|
||||
}
|
||||
}
|
||||
return changedContents
|
||||
|
||||
Reference in New Issue
Block a user