Ensure link are clickable on simple body (#2038)

This commit is contained in:
Benoit Marty 2023-12-15 15:05:35 +01:00
parent d653ec20de
commit fc5a41ec98
2 changed files with 44 additions and 2 deletions

View file

@ -21,6 +21,7 @@ import android.text.style.URLSpan
import android.text.util.Linkify
import androidx.core.text.buildSpannedString
import androidx.core.text.getSpans
import androidx.core.text.toSpannable
import androidx.core.text.util.LinkifyCompat
import io.element.android.features.location.api.Location
import io.element.android.features.messages.api.timeline.HtmlConverterProvider
@ -178,7 +179,7 @@ class TimelineItemContentMessageFactory @Inject constructor(
TimelineItemTextContent(
body = messageType.body,
htmlDocument = messageType.formatted?.toHtmlDocument(),
formattedBody = parseHtml(messageType.formatted),
formattedBody = parseHtml(messageType.formatted) ?: messageType.body.withLinks(),
isEdited = content.isEdited,
)
}
@ -237,3 +238,12 @@ class TimelineItemContentMessageFactory @Inject constructor(
return this
}
}
private fun String.withLinks(): CharSequence? {
val spannable = toSpannable()
LinkifyCompat.addLinks(spannable, Linkify.WEB_URLS or Linkify.PHONE_NUMBERS)
if (spannable.getSpans<URLSpan>().isEmpty()) {
return null
}
return spannable
}