feat: Enhance account name and username handling in MainScreen and ProfileScreen for reactive updates
This commit is contained in:
@@ -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 = {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user