Skip to content

Commit 05e60d8

Browse files
committed
fix links
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
1 parent 34a0417 commit 05e60d8

3 files changed

Lines changed: 31 additions & 8 deletions

File tree

app/src/main/java/com/nextcloud/talk/chat/ui/model/ChatMessageUi.kt

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,18 @@ fun resolveStatusIcon(
243243
else -> MessageStatusIcon.SENT
244244
}
245245

246+
247+
private val validHttpsLinkRegex = Regex(
248+
"""(?<!\w)https://(?:www\.)?[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+(?:/[^\s)]*)?""",
249+
RegexOption.IGNORE_CASE
250+
)
251+
252+
private fun String.hasValidHttpsLink(): Boolean =
253+
validHttpsLinkRegex.containsMatchIn(this)
254+
246255
fun getMessageTypeContent(user: User, message: ChatMessage): MessageTypeContent? =
256+
257+
247258
if (message.isSystemMessage) {
248259
MessageTypeContent.SystemMessage
249260
} else if (message.isVoiceMessage) {
@@ -257,9 +268,14 @@ fun getMessageTypeContent(user: User, message: ChatMessage): MessageTypeContent?
257268
} else if (message.hasDeckCard) {
258269
getDeckContent(message)
259270
} else {
260-
message.extractLinkPreviewUrl(user)
261-
?.let { MessageTypeContent.LinkPreview(url = it) }
262-
?: MessageTypeContent.RegularText
271+
if(message.message.orEmpty().hasValidHttpsLink()) {
272+
message.extractLinkPreviewUrl(user)
273+
?.takeIf { it.hasValidHttpsLink() }
274+
?.let { MessageTypeContent.LinkPreview(url = it) }
275+
}else{
276+
MessageTypeContent.RegularText
277+
}
278+
263279
}
264280

265281
fun getMediaContent(user: User, message: ChatMessage): MessageTypeContent.Media {

app/src/main/java/com/nextcloud/talk/ui/chat/MarkdownText.kt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,15 @@ private const val CHIP_START_PADDING_DP = 2f
6060
private const val CHIP_END_PADDING_DP = 5f
6161
private const val CHIP_VERTICAL_PADDING_DP = 2f
6262
private const val CHIP_CORNER_RADIUS_DP = 16f
63-
private const val MESSAGE_LINKIFY_MASK = Linkify.WEB_URLS or
64-
Linkify.PHONE_NUMBERS or
63+
64+
private const val MESSAGE_LINKIFY_MASK = Linkify.PHONE_NUMBERS or
6565
Linkify.EMAIL_ADDRESSES
6666

67+
val validLinkRegex = Regex(
68+
"""(?<!\w)https://(?:www\.)?[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+(?:/[^\s)]*)?""",
69+
RegexOption.IGNORE_CASE
70+
)
71+
6772
@Suppress("LongMethod", "LongParameterList")
6873
@Composable
6974
fun MarkdownText(
@@ -152,7 +157,11 @@ fun MarkdownText(
152157
avatarSizePx = avatarSizePx,
153158
avatarGapPx = avatarGapPx
154159
)
155-
val hasLinks = Linkify.addLinks(ssb, MESSAGE_LINKIFY_MASK)
160+
161+
162+
val hasLinks = Linkify.addLinks(ssb, validLinkRegex.toPattern(), null) ||
163+
Linkify.addLinks(ssb, MESSAGE_LINKIFY_MASK)
164+
156165
resolveFileParams(ssb, message)
157166
applySearchHighlight(ssb, highlightSearchTerm, searchHighlightColorArgb)
158167
textView.text = ssb

app/src/main/java/com/nextcloud/talk/ui/chat/MentionEnrichedText.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,6 @@ private fun buildMentionRichText(
148148
val url = token.substringAfter("(").substringBefore(")")
149149
appendLinkedToken(textPart, url, linkColor)
150150
}
151-
152-
token.startsWith("http") -> appendLinkedToken(token, token, linkColor)
153151
}
154152

155153
lastIndex = range.last + 1

0 commit comments

Comments
 (0)