From 4a80a16473f6a0357a367e40836089c16ff463f3 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Thu, 21 Nov 2024 11:19:13 -0500 Subject: [PATCH] Adds support for pronouns when the user makes them available. --- .../com/vitorpamplona/amethyst/model/Account.kt | 2 ++ .../amethyst/ui/actions/NewUserMetadataView.kt | 16 ++++++++++++++++ .../ui/actions/NewUserMetadataViewModel.kt | 3 +++ .../ui/screen/loggedIn/profile/ProfileScreen.kt | 8 ++++++++ amethyst/src/main/res/values/strings.xml | 1 + .../quartz/events/ContactListEvent.kt | 3 +++ .../vitorpamplona/quartz/events/MetadataEvent.kt | 2 ++ 7 files changed, 35 insertions(+) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt index 66f4f084a..16abcabee 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt @@ -1149,6 +1149,7 @@ class Account( picture: String? = null, banner: String? = null, website: String? = null, + pronouns: String? = null, about: String? = null, nip05: String? = null, lnAddress: String? = null, @@ -1165,6 +1166,7 @@ class Account( picture = picture, banner = banner, website = website, + pronouns = pronouns, about = about, nip05 = nip05, lnAddress = lnAddress, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewUserMetadataView.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewUserMetadataView.kt index 5e1ace95f..a7aeaeeb1 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewUserMetadataView.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewUserMetadataView.kt @@ -189,6 +189,22 @@ fun NewUserMetadataView( Spacer(modifier = Modifier.height(10.dp)) + OutlinedTextField( + label = { Text(text = stringRes(R.string.pronouns)) }, + modifier = Modifier.fillMaxWidth(), + value = postViewModel.pronouns.value, + onValueChange = { postViewModel.pronouns.value = it }, + placeholder = { + Text( + text = "they/them, ...", + color = MaterialTheme.colorScheme.placeholderText, + ) + }, + singleLine = true, + ) + + Spacer(modifier = Modifier.height(10.dp)) + OutlinedTextField( label = { Text(text = stringRes(R.string.website_url)) }, modifier = Modifier.fillMaxWidth(), diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewUserMetadataViewModel.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewUserMetadataViewModel.kt index 21cdfc6ff..e2ee3ac07 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewUserMetadataViewModel.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/actions/NewUserMetadataViewModel.kt @@ -51,6 +51,7 @@ class NewUserMetadataViewModel : ViewModel() { val banner = mutableStateOf("") val website = mutableStateOf("") + val pronouns = mutableStateOf("") val nip05 = mutableStateOf("") val lnAddress = mutableStateOf("") val lnURL = mutableStateOf("") @@ -72,6 +73,7 @@ class NewUserMetadataViewModel : ViewModel() { picture.value = it.info?.picture ?: "" banner.value = it.info?.banner ?: "" website.value = it.info?.website ?: "" + pronouns.value = it.info?.pronouns ?: "" nip05.value = it.info?.nip05 ?: "" lnAddress.value = it.info?.lud16 ?: "" lnURL.value = it.info?.lud06 ?: "" @@ -99,6 +101,7 @@ class NewUserMetadataViewModel : ViewModel() { picture = picture.value, banner = banner.value, website = website.value, + pronouns = pronouns.value, about = about.value, nip05 = nip05.value, lnAddress = lnAddress.value, diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/ProfileScreen.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/ProfileScreen.kt index d49f8ca51..6b45058fb 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/ProfileScreen.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/profile/ProfileScreen.kt @@ -1016,6 +1016,14 @@ private fun DrawAdditionalInfo( fontSize = 25.sp, ) Spacer(StdHorzSpacer) + user.info?.pronouns.let { + Text( + text = "($it)", + modifier = Modifier, + ) + Spacer(StdHorzSpacer) + } + DrawPlayName(it) } } diff --git a/amethyst/src/main/res/values/strings.xml b/amethyst/src/main/res/values/strings.xml index 88d66d974..5ce29951d 100644 --- a/amethyst/src/main/res/values/strings.xml +++ b/amethyst/src/main/res/values/strings.xml @@ -121,6 +121,7 @@ Avatar URL Banner URL Website URL + Pronouns LN Address LN URL (outdated) Save to Gallery diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/events/ContactListEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/events/ContactListEvent.kt index 7e5a8db89..fd86bc931 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/events/ContactListEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/events/ContactListEvent.kt @@ -434,6 +434,7 @@ class UserMetadata { var website: String? = null var about: String? = null var bot: Boolean? = null + var pronouns: String? = null var nip05: String? = null var nip05Verified: Boolean = false @@ -471,6 +472,7 @@ class UserMetadata { if (username?.isNotEmpty() == true) username = username?.trim() if (lud06?.isNotEmpty() == true) lud06 = lud06?.trim() if (lud16?.isNotEmpty() == true) lud16 = lud16?.trim() + if (pronouns?.isNotEmpty() == true) pronouns = pronouns?.trim() if (banner?.isNotEmpty() == true) banner = banner?.trim() if (website?.isNotEmpty() == true) website = website?.trim() @@ -487,6 +489,7 @@ class UserMetadata { if (banner?.isBlank() == true) banner = null if (website?.isBlank() == true) website = null if (domain?.isBlank() == true) domain = null + if (pronouns?.isBlank() == true) pronouns = null } } diff --git a/quartz/src/main/java/com/vitorpamplona/quartz/events/MetadataEvent.kt b/quartz/src/main/java/com/vitorpamplona/quartz/events/MetadataEvent.kt index 6e68a9a3a..adb1a8267 100644 --- a/quartz/src/main/java/com/vitorpamplona/quartz/events/MetadataEvent.kt +++ b/quartz/src/main/java/com/vitorpamplona/quartz/events/MetadataEvent.kt @@ -208,6 +208,7 @@ class MetadataEvent( nip05: String?, lnAddress: String?, lnURL: String?, + pronouns: String?, twitter: String?, mastodon: String?, github: String?, @@ -231,6 +232,7 @@ class MetadataEvent( picture?.let { addIfNotBlank(currentJson, "picture", it.trim()) } banner?.let { addIfNotBlank(currentJson, "banner", it.trim()) } website?.let { addIfNotBlank(currentJson, "website", it.trim()) } + pronouns?.let { addIfNotBlank(currentJson, "pronouns", it.trim()) } about?.let { addIfNotBlank(currentJson, "about", it.trim()) } nip05?.let { addIfNotBlank(currentJson, "nip05", it.trim()) } lnAddress?.let { addIfNotBlank(currentJson, "lud16", it.trim()) }