diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/account/AccountManager.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/account/AccountManager.kt index a97c831b2..17626a82e 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/account/AccountManager.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/account/AccountManager.kt @@ -536,6 +536,7 @@ class AccountManager internal constructor( npub = keyPair.pubKey.toNpub(), nsec = null, isReadOnly = true, + signerType = SignerType.ViewOnly, ) _accountState.value = state Result.success(state) diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/cache/DesktopLocalCache.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/cache/DesktopLocalCache.kt index 08b57e10e..87128a75b 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/cache/DesktopLocalCache.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/cache/DesktopLocalCache.kt @@ -78,6 +78,10 @@ class DesktopLocalCache : ICacheProvider { private val _followedUsers = MutableStateFlow>(emptySet()) val followedUsers: StateFlow> = _followedUsers.asStateFlow() + /** Increments on each metadata update — observe to recompose when user names change. */ + private val _metadataVersion = MutableStateFlow(0L) + val metadataVersion: StateFlow = _metadataVersion.asStateFlow() + companion object { } @@ -151,6 +155,7 @@ class DesktopLocalCache : ICacheProvider { val newUserMetadata = event.contactMetaData() if (newUserMetadata != null) { user.updateUserInfo(newUserMetadata, event) + _metadataVersion.value++ // Invalidate metadata flows on notes by this author that have observers // so QuotedNoteEmbed/FeedNoteCard recompose with updated avatar/name notes.forEach { _, note -> diff --git a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/account/AccountSwitcherDropdown.kt b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/account/AccountSwitcherDropdown.kt index dabb3097c..2aace03a2 100644 --- a/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/account/AccountSwitcherDropdown.kt +++ b/desktopApp/src/jvmMain/kotlin/com/vitorpamplona/amethyst/desktop/ui/account/AccountSwitcherDropdown.kt @@ -43,6 +43,7 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -95,6 +96,10 @@ fun AccountSwitcherDropdown( var expanded by remember { mutableStateOf(false) } var confirmLogoutNpub by remember { mutableStateOf(null) } + // Observe metadata version to recompose when user display names load from relays + @Suppress("UNUSED_VARIABLE") + val metadataVersion by localCache?.metadataVersion?.collectAsState() ?: remember { mutableStateOf(0L) } + Box(modifier = modifier) { IconButton( onClick = { expanded = true },