From 1385feb066f337b9bf92eecc6e2bb6053abd65d7 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Wed, 11 Mar 2026 14:38:19 -0400 Subject: [PATCH] fixes non-lowercase schemas on posts --- .../amethyst/commons/richtext/UrlParser.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/richtext/UrlParser.kt b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/richtext/UrlParser.kt index 1405dc429..df78d3457 100644 --- a/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/richtext/UrlParser.kt +++ b/commons/src/commonMain/kotlin/com/vitorpamplona/amethyst/commons/richtext/UrlParser.kt @@ -21,6 +21,8 @@ package com.vitorpamplona.amethyst.commons.richtext import androidx.compose.runtime.Stable +import com.vitorpamplona.quartz.utils.DualCase +import com.vitorpamplona.quartz.utils.startsWithAny import com.vitorpamplona.quartz.utils.urldetector.Url import com.vitorpamplona.quartz.utils.urldetector.detection.UrlDetector @@ -33,6 +35,10 @@ class Urls( val relayUrls: Set = emptySet(), ) +val websocketScheme = listOf(DualCase("ws")) +val nostrScheme = listOf(DualCase("nostr")) +val blossomScheme = listOf(DualCase("blossom")) + class UrlParser { fun Char.isAsciiLetter(): Boolean = (this in 'a'..'z' || this in 'A'..'Z') @@ -70,9 +76,9 @@ class UrlParser { urls.forEach { if (it.isValidTopLevelDomain()) { if (it.wroteWithSchema()) { - if (it.originalUrl.startsWith("nostr")) { + if (it.originalUrl.startsWithAny(nostrScheme)) { bech32.add(it.originalUrl) - } else if (it.originalUrl.startsWith("ws")) { + } else if (it.originalUrl.startsWithAny(websocketScheme)) { relays.add(it.originalUrl) } else { completeUrls.add(it.originalUrl)