Avoids crashing the app in weird urls.
This commit is contained in:
@@ -22,9 +22,11 @@ package com.vitorpamplona.amethyst.commons.richtext
|
|||||||
|
|
||||||
import androidx.compose.runtime.Stable
|
import androidx.compose.runtime.Stable
|
||||||
import com.vitorpamplona.quartz.utils.DualCase
|
import com.vitorpamplona.quartz.utils.DualCase
|
||||||
|
import com.vitorpamplona.quartz.utils.Log
|
||||||
import com.vitorpamplona.quartz.utils.startsWithAny
|
import com.vitorpamplona.quartz.utils.startsWithAny
|
||||||
import com.vitorpamplona.quartz.utils.urldetector.Url
|
import com.vitorpamplona.quartz.utils.urldetector.Url
|
||||||
import com.vitorpamplona.quartz.utils.urldetector.detection.UrlDetector
|
import com.vitorpamplona.quartz.utils.urldetector.detection.UrlDetector
|
||||||
|
import kotlinx.coroutines.CancellationException
|
||||||
|
|
||||||
@Stable
|
@Stable
|
||||||
class Urls(
|
class Urls(
|
||||||
@@ -77,6 +79,7 @@ class UrlParser {
|
|||||||
val blossom = mutableSetOf<String>()
|
val blossom = mutableSetOf<String>()
|
||||||
|
|
||||||
urls.forEach { url ->
|
urls.forEach { url ->
|
||||||
|
try {
|
||||||
if (url.isValidTopLevelDomain()) {
|
if (url.isValidTopLevelDomain()) {
|
||||||
if (url.wroteWithSchema()) {
|
if (url.wroteWithSchema()) {
|
||||||
if (url.originalUrl.startsWithAny(httpScheme)) {
|
if (url.originalUrl.startsWithAny(httpScheme)) {
|
||||||
@@ -102,6 +105,10 @@ class UrlParser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
if (e is CancellationException) throw e
|
||||||
|
Log.e("UrlParser", "Trying to parse url `${url.originalUrl}` from `$content`", e)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return Urls(
|
return Urls(
|
||||||
|
|||||||
Reference in New Issue
Block a user