mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-09-27 23:56:25 +02:00
Makes NIP05 work in domain names only (No need for the _@ in the "_@domain" address)
This commit is contained in:
@@ -19,6 +19,9 @@ class Nip05Verifier() {
|
|||||||
if (parts.size == 2) {
|
if (parts.size == 2) {
|
||||||
return "https://${parts[1]}/.well-known/nostr.json?name=${parts[0]}"
|
return "https://${parts[1]}/.well-known/nostr.json?name=${parts[0]}"
|
||||||
}
|
}
|
||||||
|
if (parts.size == 1) {
|
||||||
|
return "https://${parts[0]}/.well-known/nostr.json?name=_"
|
||||||
|
}
|
||||||
|
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
@@ -92,7 +95,12 @@ class Nip05Verifier() {
|
|||||||
null
|
null
|
||||||
}
|
}
|
||||||
|
|
||||||
val user = nip05.split("@")[0].lowercase()
|
val parts = nip05.split("@")
|
||||||
|
val user = if (parts.size == 2) {
|
||||||
|
parts[0].lowercase()
|
||||||
|
} else {
|
||||||
|
"_"
|
||||||
|
}
|
||||||
|
|
||||||
val hexKey = nip05url?.get("names")?.get(user)?.asText()
|
val hexKey = nip05url?.get("names")?.get(user)?.asText()
|
||||||
|
|
||||||
|
@@ -117,10 +117,7 @@ fun ObserveDisplayNip05Status(baseUser: User, columnModifier: Modifier = Modifie
|
|||||||
|
|
||||||
Crossfade(targetState = nip05, modifier = columnModifier) {
|
Crossfade(targetState = nip05, modifier = columnModifier) {
|
||||||
if (it != null) {
|
if (it != null) {
|
||||||
val isValid = it.split("@").size == 2
|
DisplayNIP05Line(it, baseUser, columnModifier)
|
||||||
if (isValid) {
|
|
||||||
DisplayNIP05Line(it, baseUser, columnModifier)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -144,7 +141,12 @@ private fun DisplayNIP05(
|
|||||||
) {
|
) {
|
||||||
val uri = LocalUriHandler.current
|
val uri = LocalUriHandler.current
|
||||||
val (user, domain) = remember(nip05) {
|
val (user, domain) = remember(nip05) {
|
||||||
nip05.split("@")
|
val parts = nip05.split("@")
|
||||||
|
if (parts.size == 1) {
|
||||||
|
listOf("_", parts[0])
|
||||||
|
} else {
|
||||||
|
listOf(parts[0], parts[1])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (user != "_") {
|
if (user != "_") {
|
||||||
@@ -204,7 +206,7 @@ fun DisplayNip05ProfileStatus(user: User) {
|
|||||||
val uri = LocalUriHandler.current
|
val uri = LocalUriHandler.current
|
||||||
|
|
||||||
user.nip05()?.let { nip05 ->
|
user.nip05()?.let { nip05 ->
|
||||||
if (nip05.split("@").size == 2) {
|
if (nip05.split("@").size <= 2) {
|
||||||
val nip05Verified by nip05VerificationAsAState(user.info!!, user.pubkeyHex)
|
val nip05Verified by nip05VerificationAsAState(user.info!!, user.pubkeyHex)
|
||||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||||
if (nip05Verified == null) {
|
if (nip05Verified == null) {
|
||||||
@@ -232,9 +234,18 @@ fun DisplayNip05ProfileStatus(user: User) {
|
|||||||
|
|
||||||
var domainPadStart = 5.dp
|
var domainPadStart = 5.dp
|
||||||
|
|
||||||
if (nip05.split("@")[0] != "_") {
|
val (user, domain) = remember(nip05) {
|
||||||
|
val parts = nip05.split("@")
|
||||||
|
if (parts.size == 1) {
|
||||||
|
listOf("_", parts[0])
|
||||||
|
} else {
|
||||||
|
listOf(parts[0], parts[1])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (user != "_") {
|
||||||
Text(
|
Text(
|
||||||
text = AnnotatedString(nip05.split("@")[0] + "@"),
|
text = remember { AnnotatedString(user + "@") },
|
||||||
modifier = Modifier.padding(top = 1.dp, bottom = 1.dp, start = 5.dp),
|
modifier = Modifier.padding(top = 1.dp, bottom = 1.dp, start = 5.dp),
|
||||||
maxLines = 1,
|
maxLines = 1,
|
||||||
overflow = TextOverflow.Ellipsis
|
overflow = TextOverflow.Ellipsis
|
||||||
@@ -243,7 +254,7 @@ fun DisplayNip05ProfileStatus(user: User) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ClickableText(
|
ClickableText(
|
||||||
text = AnnotatedString(nip05.split("@")[1]),
|
text = AnnotatedString(domain),
|
||||||
onClick = { nip05.let { runCatching { uri.openUri("https://${it.split("@")[1]}") } } },
|
onClick = { nip05.let { runCatching { uri.openUri("https://${it.split("@")[1]}") } } },
|
||||||
style = LocalTextStyle.current.copy(color = MaterialTheme.colors.primary),
|
style = LocalTextStyle.current.copy(color = MaterialTheme.colors.primary),
|
||||||
modifier = Modifier.padding(top = 1.dp, bottom = 1.dp, start = domainPadStart),
|
modifier = Modifier.padding(top = 1.dp, bottom = 1.dp, start = domainPadStart),
|
||||||
|
Reference in New Issue
Block a user