Update navigation to Application logs

ET-4460
This commit is contained in:
Niccolò Forlini
2025-08-26 11:07:57 +02:00
parent 2d0b79e9df
commit cb87ff3ab6
3 changed files with 39 additions and 20 deletions
@@ -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)
},
@@ -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
)
}
)
}
}
}
}
@@ -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