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 = {},
|
||||
onLogout: () -> Unit = {}
|
||||
) {
|
||||
val accountName = account?.name ?: "Account"
|
||||
// Reactive state for account name and username
|
||||
var accountName by remember { mutableStateOf(account?.name ?: "Account") }
|
||||
val accountPhone =
|
||||
account?.publicKey?.take(16)?.let {
|
||||
"+${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 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
|
||||
LaunchedEffect(accountPublicKey, reloadTrigger) {
|
||||
if (accountPublicKey.isNotBlank() && accountPublicKey != "04c266b98ae5") {
|
||||
val accountManager = AccountManager(context)
|
||||
val encryptedAccount = accountManager.getAccount(accountPublicKey)
|
||||
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:
|
||||
// 1. Server confirms save (handled in ProfileViewModel)
|
||||
// 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
|
||||
reloadTrigger++
|
||||
Log.d("MainActivity", "Profile saved: name=$name, username=$username, reloading...")
|
||||
Log.d("MainActivity", "Profile saved: name=$name, username=$username, UI updated")
|
||||
},
|
||||
onLogout = onLogout,
|
||||
onNavigateToTheme = {
|
||||
|
||||
@@ -139,9 +139,9 @@ fun ProfileScreen(
|
||||
val secondaryTextColor = if (isDarkTheme) Color(0xFF8E8E93) else Color(0xFF666666)
|
||||
val avatarColors = getAvatarColor(accountPublicKey, isDarkTheme)
|
||||
|
||||
// State for editing
|
||||
var editedName by remember { mutableStateOf(accountName) }
|
||||
var editedUsername by remember { mutableStateOf(accountUsername) }
|
||||
// State for editing - Update when account data changes
|
||||
var editedName by remember(accountName) { mutableStateOf(accountName) }
|
||||
var editedUsername by remember(accountUsername) { mutableStateOf(accountUsername) }
|
||||
var hasChanges by remember { mutableStateOf(false) }
|
||||
|
||||
// ViewModel state
|
||||
|
||||
Reference in New Issue
Block a user