feat: Enhance account name and username handling in MainScreen and ProfileScreen for reactive updates

This commit is contained in:
k1ngsterr1
2026-01-22 00:33:35 +05:00
parent 1764fded5e
commit 6ad539e90e
2 changed files with 11 additions and 8 deletions

View File

@@ -428,7 +428,8 @@ fun MainScreen(
onToggleTheme: () -> Unit = {}, onToggleTheme: () -> Unit = {},
onLogout: () -> Unit = {} onLogout: () -> Unit = {}
) { ) {
val accountName = account?.name ?: "Account" // Reactive state for account name and username
var accountName by remember { mutableStateOf(account?.name ?: "Account") }
val accountPhone = val accountPhone =
account?.publicKey?.take(16)?.let { account?.publicKey?.take(16)?.let {
"+${it.take(1)} ${it.substring(1, 4)} ${it.substring(4, 7)}${it.substring(7)}" "+${it.take(1)} ${it.substring(1, 4)} ${it.substring(4, 7)}${it.substring(7)}"
@@ -443,14 +444,15 @@ fun MainScreen(
var accountUsername by remember { mutableStateOf("") } var accountUsername by remember { mutableStateOf("") }
var reloadTrigger by remember { mutableIntStateOf(0) } var reloadTrigger by remember { mutableIntStateOf(0) }
// Load username from AccountManager (persisted in DataStore) // Load username AND name from AccountManager (persisted in DataStore)
val context = LocalContext.current val context = LocalContext.current
LaunchedEffect(accountPublicKey, reloadTrigger) { LaunchedEffect(accountPublicKey, reloadTrigger) {
if (accountPublicKey.isNotBlank() && accountPublicKey != "04c266b98ae5") { if (accountPublicKey.isNotBlank() && accountPublicKey != "04c266b98ae5") {
val accountManager = AccountManager(context) val accountManager = AccountManager(context)
val encryptedAccount = accountManager.getAccount(accountPublicKey) val encryptedAccount = accountManager.getAccount(accountPublicKey)
accountUsername = encryptedAccount?.username ?: "" accountUsername = encryptedAccount?.username ?: ""
Log.d("MainActivity", "Loaded username from DB: $accountUsername") accountName = encryptedAccount?.name ?: accountName
Log.d("MainActivity", "Loaded from DB: name=$accountName, username=$accountUsername")
} }
} }
@@ -710,10 +712,11 @@ fun MainScreen(
// Following desktop version pattern: // Following desktop version pattern:
// 1. Server confirms save (handled in ProfileViewModel) // 1. Server confirms save (handled in ProfileViewModel)
// 2. Local DB updated (handled in ProfileScreen LaunchedEffect) // 2. Local DB updated (handled in ProfileScreen LaunchedEffect)
// 3. This callback updates UI state (reloads username from DB) // 3. This callback updates UI state immediately
accountName = name
accountUsername = username accountUsername = username
reloadTrigger++ reloadTrigger++
Log.d("MainActivity", "Profile saved: name=$name, username=$username, reloading...") Log.d("MainActivity", "Profile saved: name=$name, username=$username, UI updated")
}, },
onLogout = onLogout, onLogout = onLogout,
onNavigateToTheme = { onNavigateToTheme = {

View File

@@ -139,9 +139,9 @@ fun ProfileScreen(
val secondaryTextColor = if (isDarkTheme) Color(0xFF8E8E93) else Color(0xFF666666) val secondaryTextColor = if (isDarkTheme) Color(0xFF8E8E93) else Color(0xFF666666)
val avatarColors = getAvatarColor(accountPublicKey, isDarkTheme) val avatarColors = getAvatarColor(accountPublicKey, isDarkTheme)
// State for editing // State for editing - Update when account data changes
var editedName by remember { mutableStateOf(accountName) } var editedName by remember(accountName) { mutableStateOf(accountName) }
var editedUsername by remember { mutableStateOf(accountUsername) } var editedUsername by remember(accountUsername) { mutableStateOf(accountUsername) }
var hasChanges by remember { mutableStateOf(false) } var hasChanges by remember { mutableStateOf(false) }
// ViewModel state // ViewModel state