From eae6a2a90fc61cfabf3ff9b3ba7456c09d1b8b9f Mon Sep 17 00:00:00 2001 From: Codex Date: Tue, 10 Mar 2026 00:31:14 +0300 Subject: [PATCH] android: clean up profile screen layout and actions --- android/CHANGELOG.md | 10 +++ .../messenger/ui/navigation/AppNavGraph.kt | 2 - .../messenger/ui/profile/ProfileScreen.kt | 80 ------------------- 3 files changed, 10 insertions(+), 82 deletions(-) diff --git a/android/CHANGELOG.md b/android/CHANGELOG.md index fb97034..43ac1fe 100644 --- a/android/CHANGELOG.md +++ b/android/CHANGELOG.md @@ -797,3 +797,13 @@ - Devices - Data/Chat folders/Power/Language placeholders - Kept theme logic intact and moved appearance controls into `Chat settings` folder. + +### Step 116 - Profile cleanup (remove non-working extras) +- Removed non-functional profile tabs and placeholder blocks: + - `Posts` + - `Archived` + - `Gifts` +- Removed `Settings` hero button from profile header. +- Removed bottom `Back to chats` button from profile screen. +- Simplified profile layout so the editable profile form is the primary secondary section toggled by `Edit`. +- Updated `ProfileRoute` navigation contract to match the simplified screen API. diff --git a/android/app/src/main/java/ru/daemonlord/messenger/ui/navigation/AppNavGraph.kt b/android/app/src/main/java/ru/daemonlord/messenger/ui/navigation/AppNavGraph.kt index 75d2164..11aec60 100644 --- a/android/app/src/main/java/ru/daemonlord/messenger/ui/navigation/AppNavGraph.kt +++ b/android/app/src/main/java/ru/daemonlord/messenger/ui/navigation/AppNavGraph.kt @@ -266,8 +266,6 @@ fun MessengerNavHost( composable(route = Routes.Profile) { ProfileRoute( - onBackToChats = { navController.navigate(Routes.Chats) }, - onOpenSettings = { navController.navigate(Routes.Settings) }, onMainBarVisibilityChanged = { isMainBarVisible = it }, ) } diff --git a/android/app/src/main/java/ru/daemonlord/messenger/ui/profile/ProfileScreen.kt b/android/app/src/main/java/ru/daemonlord/messenger/ui/profile/ProfileScreen.kt index 52c1f97..53a4214 100644 --- a/android/app/src/main/java/ru/daemonlord/messenger/ui/profile/ProfileScreen.kt +++ b/android/app/src/main/java/ru/daemonlord/messenger/ui/profile/ProfileScreen.kt @@ -32,12 +32,10 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.AddAPhoto import androidx.compose.material.icons.filled.Edit -import androidx.compose.material.icons.filled.Settings import androidx.compose.material3.Button import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.OutlinedButton import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Surface import androidx.compose.material3.Text @@ -67,14 +65,10 @@ import java.io.ByteArrayOutputStream @Composable fun ProfileRoute( - onBackToChats: () -> Unit, - onOpenSettings: () -> Unit, onMainBarVisibilityChanged: (Boolean) -> Unit, viewModel: AccountViewModel = hiltViewModel(), ) { ProfileScreen( - onBackToChats = onBackToChats, - onOpenSettings = onOpenSettings, onMainBarVisibilityChanged = onMainBarVisibilityChanged, viewModel = viewModel, ) @@ -82,8 +76,6 @@ fun ProfileRoute( @Composable fun ProfileScreen( - onBackToChats: () -> Unit, - onOpenSettings: () -> Unit, onMainBarVisibilityChanged: (Boolean) -> Unit, viewModel: AccountViewModel, ) { @@ -93,7 +85,6 @@ fun ProfileScreen( var username by remember(profile?.username) { mutableStateOf(profile?.username.orEmpty()) } var bio by remember(profile?.bio) { mutableStateOf(profile?.bio.orEmpty()) } var avatarUrl by remember(profile?.avatarUrl) { mutableStateOf(profile?.avatarUrl.orEmpty()) } - var selectedTab by remember { mutableStateOf(0) } var editMode by remember { mutableStateOf(false) } val scrollState = rememberScrollState() @@ -218,13 +209,6 @@ fun ProfileScreen( ) { editMode = !editMode } - HeroActionButton( - label = "Settings", - icon = Icons.Filled.Settings, - modifier = Modifier.weight(1f), - ) { - onOpenSettings() - } } } } @@ -253,47 +237,6 @@ fun ProfileScreen( } } - Surface( - color = MaterialTheme.colorScheme.surfaceContainer, - shape = RoundedCornerShape(18.dp), - modifier = Modifier.fillMaxWidth(), - ) { - Row( - modifier = Modifier - .fillMaxWidth() - .padding(6.dp), - horizontalArrangement = Arrangement.spacedBy(8.dp), - ) { - ProfileTab("Posts", selectedTab == 0, modifier = Modifier.weight(1f)) { selectedTab = 0 } - ProfileTab("Archived", selectedTab == 1, modifier = Modifier.weight(1f)) { selectedTab = 1 } - ProfileTab("Gifts", selectedTab == 2, modifier = Modifier.weight(1f)) { selectedTab = 2 } - } - } - - Surface( - color = MaterialTheme.colorScheme.surfaceContainer, - shape = RoundedCornerShape(22.dp), - modifier = Modifier.fillMaxWidth(), - ) { - Column( - modifier = Modifier - .fillMaxWidth() - .padding(18.dp), - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.spacedBy(8.dp), - ) { - Text("No posts yet", style = MaterialTheme.typography.titleLarge) - Text( - "Publish something in your profile.", - color = MaterialTheme.colorScheme.onSurfaceVariant, - style = MaterialTheme.typography.bodyMedium, - ) - Button(onClick = {}, modifier = Modifier.padding(top = 6.dp)) { - Text("Add") - } - } - } - if (editMode) { Surface( color = MaterialTheme.colorScheme.surfaceContainer, @@ -368,15 +311,6 @@ fun ProfileScreen( modifier = Modifier.padding(horizontal = 4.dp), ) } - - OutlinedButton( - onClick = onBackToChats, - modifier = Modifier - .fillMaxWidth() - .padding(top = 2.dp), - ) { - Text("Back to chats") - } } } } @@ -412,20 +346,6 @@ private fun ProfileInfoRow(label: String, value: String) { } } -@Composable -private fun ProfileTab( - label: String, - selected: Boolean, - modifier: Modifier = Modifier, - onClick: () -> Unit, -) { - if (selected) { - Button(onClick = onClick, modifier = modifier) { Text(label) } - } else { - OutlinedButton(onClick = onClick, modifier = modifier) { Text(label) } - } -} - private fun Uri.toSquareJpeg(context: Context): ByteArray? { val bitmap = runCatching { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {