mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2024-09-29 16:30:49 +00:00
Turns NIP-05 verification symbol into a State variable to help correctly rendering updates.
This commit is contained in:
parent
243fbeed44
commit
eaaacbf218
@ -14,7 +14,7 @@ import androidx.compose.material.icons.filled.Downloading
|
|||||||
import androidx.compose.material.icons.filled.Report
|
import androidx.compose.material.icons.filled.Report
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
import androidx.compose.runtime.State
|
import androidx.compose.runtime.MutableState
|
||||||
import androidx.compose.runtime.derivedStateOf
|
import androidx.compose.runtime.derivedStateOf
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.livedata.observeAsState
|
import androidx.compose.runtime.livedata.observeAsState
|
||||||
@ -40,7 +40,7 @@ import kotlinx.coroutines.launch
|
|||||||
import java.util.Date
|
import java.util.Date
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun nip05VerificationAsAState(user: UserMetadata, pubkeyHex: String): State<Boolean?> {
|
fun nip05VerificationAsAState(user: UserMetadata, pubkeyHex: String): MutableState<Boolean?> {
|
||||||
val nip05Verified = remember(user.nip05) {
|
val nip05Verified = remember(user.nip05) {
|
||||||
// starts with null if must verify or already filled in if verified in the last hour
|
// starts with null if must verify or already filled in if verified in the last hour
|
||||||
val default = if ((user.nip05LastVerificationTime ?: 0) > (Date().time / 1000 - 60 * 60)) { // 1hour
|
val default = if ((user.nip05LastVerificationTime ?: 0) > (Date().time / 1000 - 60 * 60)) { // 1hour
|
||||||
@ -132,7 +132,7 @@ fun ObserveDisplayNip05Status(baseUser: User, columnModifier: Modifier = Modifie
|
|||||||
private fun DisplayNIP05Line(nip05: String, baseUser: User, columnModifier: Modifier = Modifier) {
|
private fun DisplayNIP05Line(nip05: String, baseUser: User, columnModifier: Modifier = Modifier) {
|
||||||
Column(modifier = columnModifier) {
|
Column(modifier = columnModifier) {
|
||||||
Row(verticalAlignment = Alignment.CenterVertically) {
|
Row(verticalAlignment = Alignment.CenterVertically) {
|
||||||
val nip05Verified by nip05VerificationAsAState(baseUser.info!!, baseUser.pubkeyHex)
|
val nip05Verified = nip05VerificationAsAState(baseUser.info!!, baseUser.pubkeyHex)
|
||||||
DisplayNIP05(nip05, nip05Verified)
|
DisplayNIP05(nip05, nip05Verified)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -141,7 +141,7 @@ private fun DisplayNIP05Line(nip05: String, baseUser: User, columnModifier: Modi
|
|||||||
@Composable
|
@Composable
|
||||||
private fun DisplayNIP05(
|
private fun DisplayNIP05(
|
||||||
nip05: String,
|
nip05: String,
|
||||||
nip05Verified: Boolean?
|
nip05Verified: MutableState<Boolean?>
|
||||||
) {
|
) {
|
||||||
val uri = LocalUriHandler.current
|
val uri = LocalUriHandler.current
|
||||||
val (user, domain) = remember(nip05) {
|
val (user, domain) = remember(nip05) {
|
||||||
@ -157,7 +157,20 @@ private fun DisplayNIP05(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nip05Verified == null) {
|
NIP05VerifiedSymbol(nip05Verified)
|
||||||
|
|
||||||
|
ClickableText(
|
||||||
|
text = AnnotatedString(domain),
|
||||||
|
onClick = { runCatching { uri.openUri("https://$domain") } },
|
||||||
|
style = LocalTextStyle.current.copy(color = MaterialTheme.colors.primary.copy(0.52f)),
|
||||||
|
maxLines = 1,
|
||||||
|
overflow = TextOverflow.Visible
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
private fun NIP05VerifiedSymbol(nip05Verified: MutableState<Boolean?>) {
|
||||||
|
if (nip05Verified.value == null) {
|
||||||
Icon(
|
Icon(
|
||||||
tint = Color.Yellow,
|
tint = Color.Yellow,
|
||||||
imageVector = Icons.Default.Downloading,
|
imageVector = Icons.Default.Downloading,
|
||||||
@ -166,7 +179,7 @@ private fun DisplayNIP05(
|
|||||||
.size(14.dp)
|
.size(14.dp)
|
||||||
.padding(top = 1.dp)
|
.padding(top = 1.dp)
|
||||||
)
|
)
|
||||||
} else if (nip05Verified == true) {
|
} else if (nip05Verified.value == true) {
|
||||||
Icon(
|
Icon(
|
||||||
painter = painterResource(R.drawable.ic_verified),
|
painter = painterResource(R.drawable.ic_verified),
|
||||||
"NIP-05 Verified",
|
"NIP-05 Verified",
|
||||||
@ -185,14 +198,6 @@ private fun DisplayNIP05(
|
|||||||
.padding(top = 1.dp)
|
.padding(top = 1.dp)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
ClickableText(
|
|
||||||
text = AnnotatedString(domain),
|
|
||||||
onClick = { runCatching { uri.openUri("https://$domain") } },
|
|
||||||
style = LocalTextStyle.current.copy(color = MaterialTheme.colors.primary.copy(0.52f)),
|
|
||||||
maxLines = 1,
|
|
||||||
overflow = TextOverflow.Visible
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
Loading…
Reference in New Issue
Block a user