From cb87ff3ab6bf0e71d77e01791b5f94ebddbdf52e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Forlini?= Date: Tue, 26 Aug 2025 11:07:57 +0200 Subject: [PATCH] Update navigation to Application logs ET-4460 --- .../android/navigation/route/HomeRoutes.kt | 4 +- .../appsettings/AppSettingsScreen.kt | 47 +++++++++++++------ .../presentation/settings/SettingsScreen.kt | 8 ++-- 3 files changed, 39 insertions(+), 20 deletions(-) diff --git a/app/src/main/kotlin/ch/protonmail/android/navigation/route/HomeRoutes.kt b/app/src/main/kotlin/ch/protonmail/android/navigation/route/HomeRoutes.kt index 6eb7345ee8..f78929071e 100644 --- a/app/src/main/kotlin/ch/protonmail/android/navigation/route/HomeRoutes.kt +++ b/app/src/main/kotlin/ch/protonmail/android/navigation/route/HomeRoutes.kt @@ -263,7 +263,9 @@ internal fun NavGraphBuilder.addAppSettings(navController: NavHostController, sh }, onSwipeToNextEmailClick = showFeatureMissingSnackbar, onSwipeActionsClick = showFeatureMissingSnackbar, - onViewApplicationLogsClick = showFeatureMissingSnackbar, + onViewApplicationLogsClick = { + navController.navigate(Destination.Screen.ApplicationLogs.route) + }, onCustomizeToolbarClick = { navController.navigate(Destination.Screen.CustomizeToolbar.route) }, diff --git a/mail-settings/presentation/src/main/kotlin/ch/protonmail/android/mailsettings/presentation/appsettings/AppSettingsScreen.kt b/mail-settings/presentation/src/main/kotlin/ch/protonmail/android/mailsettings/presentation/appsettings/AppSettingsScreen.kt index 33af316534..3cbb17e550 100644 --- a/mail-settings/presentation/src/main/kotlin/ch/protonmail/android/mailsettings/presentation/appsettings/AppSettingsScreen.kt +++ b/mail-settings/presentation/src/main/kotlin/ch/protonmail/android/mailsettings/presentation/appsettings/AppSettingsScreen.kt @@ -23,6 +23,7 @@ import android.content.Intent import android.content.res.Configuration import android.provider.Settings import android.widget.Toast +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer @@ -37,6 +38,10 @@ import androidx.compose.material3.CardDefaults import androidx.compose.material3.Icon import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -100,6 +105,8 @@ private fun AppSettingsScreenContent( ) { val context = LocalContext.current + var advancedHeaderTaps by rememberSaveable { mutableIntStateOf(0) } + Scaffold( modifier = modifier, topBar = { @@ -168,10 +175,14 @@ private fun AppSettingsScreenContent( Spacer(modifier = Modifier.height(ProtonDimens.Spacing.Medium)) - MainSettingsHeader(titleRes = R.string.mail_settings_app_customization_advanced_header) + MainSettingsHeader( + titleRes = R.string.mail_settings_app_customization_advanced_header, + modifier = Modifier.clickable(null, null) { advancedHeaderTaps++ } + ) AdvancedSettingsItem( alternativeRouting = state.settings.alternativeRoutingEnabled, actions = actions, + showApplicationLogsEntry = advancedHeaderTaps >= APP_LOGS_ENTRY_TAP_THRESHOLD, onIntent = onIntent ) @@ -187,6 +198,8 @@ private fun launchNotificationSettingsIntent(context: Context) { startActivity(context, intent, null) } +private const val APP_LOGS_ENTRY_TAP_THRESHOLD = 5 + @Composable private fun NotificationSettingsItem( modifier: Modifier = Modifier, @@ -500,6 +513,7 @@ private fun AdvancedSettingsItem( modifier: Modifier = Modifier, alternativeRouting: Boolean, actions: AppSettingsScreen.Actions, + showApplicationLogsEntry: Boolean, onIntent: (AppSettingsAction) -> Unit ) { Card( @@ -520,21 +534,24 @@ private fun AdvancedSettingsItem( onToggle = { onIntent(ToggleAlternativeRouting(it)) } ) - SettingsItemDivider() - ProtonAppSettingsItemNorm( - name = stringResource(id = R.string.mail_settings_app_customization_view_application_logs), - onClick = { actions.onViewApplicationLogsClick() }, - icon = { - ProtonMainSettingsIcon( - iconRes = R.drawable.ic_proton_chevron_right, - contentDescription = stringResource( - id = R.string.mail_settings_app_customization_view_application_logs - ), - tint = ProtonTheme.colors.iconHint - ) - } - ) + if (showApplicationLogsEntry) { + SettingsItemDivider() + + ProtonAppSettingsItemNorm( + name = stringResource(id = R.string.mail_settings_app_customization_view_application_logs), + onClick = { actions.onViewApplicationLogsClick() }, + icon = { + ProtonMainSettingsIcon( + iconRes = R.drawable.ic_proton_chevron_right, + contentDescription = stringResource( + id = R.string.mail_settings_app_customization_view_application_logs + ), + tint = ProtonTheme.colors.iconHint + ) + } + ) + } } } } diff --git a/mail-settings/presentation/src/main/kotlin/ch/protonmail/android/mailsettings/presentation/settings/SettingsScreen.kt b/mail-settings/presentation/src/main/kotlin/ch/protonmail/android/mailsettings/presentation/settings/SettingsScreen.kt index 995154750b..905efc89e5 100644 --- a/mail-settings/presentation/src/main/kotlin/ch/protonmail/android/mailsettings/presentation/settings/SettingsScreen.kt +++ b/mail-settings/presentation/src/main/kotlin/ch/protonmail/android/mailsettings/presentation/settings/SettingsScreen.kt @@ -51,14 +51,14 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import ch.protonmail.android.design.compose.component.ProtonCenteredProgress import ch.protonmail.android.design.compose.component.ProtonMainSettingsItem import ch.protonmail.android.design.compose.component.ProtonSettingsTopBar +import ch.protonmail.android.design.compose.model.VisibilityUiModel +import ch.protonmail.android.design.compose.model.isVisible import ch.protonmail.android.design.compose.theme.ProtonDimens import ch.protonmail.android.design.compose.theme.ProtonInvertedTheme import ch.protonmail.android.design.compose.theme.ProtonTheme import ch.protonmail.android.mailcommon.presentation.compose.Avatar import ch.protonmail.android.mailsession.presentation.model.AccountInformationUiModel import ch.protonmail.android.mailsession.presentation.model.StorageQuotaUiModel -import ch.protonmail.android.design.compose.model.VisibilityUiModel -import ch.protonmail.android.design.compose.model.isVisible import ch.protonmail.android.mailsettings.presentation.R import ch.protonmail.android.mailsettings.presentation.R.string import ch.protonmail.android.mailsettings.presentation.settings.SettingsState.Data @@ -203,9 +203,9 @@ fun MainSettingsScreen( } @Composable -fun MainSettingsHeader(@StringRes titleRes: Int) { +fun MainSettingsHeader(@StringRes titleRes: Int, modifier: Modifier = Modifier) { Text( - modifier = Modifier.padding(vertical = ProtonDimens.Spacing.Large), + modifier = modifier.padding(vertical = ProtonDimens.Spacing.Large), text = stringResource(id = titleRes), color = ProtonTheme.colors.textWeak, style = ProtonTheme.typography.titleMedium