Hide the advance setting section if there is no error and their is only one available push distributor.

This commit is contained in:
Benoit Marty 2024-05-27 11:10:43 +02:00 committed by Benoit Marty
parent eacc591824
commit f5b495d9ff
3 changed files with 56 additions and 43 deletions

View file

@ -50,4 +50,10 @@ data class NotificationSettingsState(
val systemNotificationsEnabled: Boolean, val systemNotificationsEnabled: Boolean,
val appNotificationsEnabled: Boolean, val appNotificationsEnabled: Boolean,
) )
/**
* Whether the advanced settings should be shown.
* This is true if the current push distributor is in a failure state or if there are multiple push distributors available.
*/
val showAdvancedSettings: Boolean = currentPushDistributor.isFailure() || availablePushDistributors.size > 1
} }

View file

@ -25,10 +25,15 @@ import kotlinx.collections.immutable.toImmutableList
open class NotificationSettingsStateProvider : PreviewParameterProvider<NotificationSettingsState> { open class NotificationSettingsStateProvider : PreviewParameterProvider<NotificationSettingsState> {
override val values: Sequence<NotificationSettingsState> override val values: Sequence<NotificationSettingsState>
get() = sequenceOf( get() = sequenceOf(
aValidNotificationSettingsState(),
aValidNotificationSettingsState(systemNotificationsEnabled = false), aValidNotificationSettingsState(systemNotificationsEnabled = false),
aValidNotificationSettingsState(),
aValidNotificationSettingsState(changeNotificationSettingAction = AsyncAction.Loading), aValidNotificationSettingsState(changeNotificationSettingAction = AsyncAction.Loading),
aValidNotificationSettingsState(changeNotificationSettingAction = AsyncAction.Failure(Throwable("error"))), aValidNotificationSettingsState(changeNotificationSettingAction = AsyncAction.Failure(Throwable("error"))),
aValidNotificationSettingsState(
availablePushDistributors = listOf("Firebase"),
changeNotificationSettingAction = AsyncAction.Failure(Throwable("error")),
),
aValidNotificationSettingsState(availablePushDistributors = listOf("Firebase")),
aValidNotificationSettingsState(showChangePushProviderDialog = true), aValidNotificationSettingsState(showChangePushProviderDialog = true),
aValidNotificationSettingsState(currentPushDistributor = AsyncAction.Loading), aValidNotificationSettingsState(currentPushDistributor = AsyncAction.Loading),
aValidNotificationSettingsState(currentPushDistributor = AsyncAction.Failure(Exception("Failed to change distributor"))), aValidNotificationSettingsState(currentPushDistributor = AsyncAction.Failure(Exception("Failed to change distributor"))),

View file

@ -181,6 +181,7 @@ private fun NotificationSettingsContentView(
onClick = onTroubleshootNotificationsClicked onClick = onTroubleshootNotificationsClicked
) )
} }
if (state.showAdvancedSettings) {
PreferenceCategory(title = stringResource(id = CommonStrings.common_advanced_settings)) { PreferenceCategory(title = stringResource(id = CommonStrings.common_advanced_settings)) {
ListItem( ListItem(
headlineContent = { headlineContent = {
@ -228,6 +229,7 @@ private fun NotificationSettingsContentView(
} }
} }
} }
}
@Composable @Composable
private fun getTitleForRoomNotificationMode(mode: RoomNotificationMode?) = private fun getTitleForRoomNotificationMode(mode: RoomNotificationMode?) =