Hide Notification Settings with feature flag and lint

- Hide Notification Settings with feature flag
- lint
This commit is contained in:
David Langley 2023-08-30 16:54:59 +01:00
parent d3d4eedb1a
commit 604a528544
6 changed files with 22 additions and 12 deletions

View file

@ -69,7 +69,7 @@ class PreferencesFlowNode @AssistedInject constructor(
data object About : NavTarget data object About : NavTarget
@Parcelize @Parcelize
object NotificationSettings : NavTarget data object NotificationSettings : NavTarget
} }
override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node { override fun resolve(navTarget: NavTarget, buildContext: BuildContext): Node {

View file

@ -55,10 +55,9 @@ fun NotificationSettingsView(
} }
PreferenceSwitch( PreferenceSwitch(
modifier = modifier, modifier = Modifier,
title = stringResource(id = CommonStrings.screen_notification_settings_enable_notifications), title = stringResource(id = CommonStrings.screen_notification_settings_enable_notifications),
isChecked = state.isEnabled, isChecked = state.isEnabled,
// onCheckedChange = ::onEnabledChanged,
switchAlignment = Alignment.Top, switchAlignment = Alignment.Top,
) )
@ -77,20 +76,18 @@ fun NotificationSettingsView(
PreferenceCategory(title = stringResource(id = CommonStrings.screen_notification_settings_mode_mentions)) { PreferenceCategory(title = stringResource(id = CommonStrings.screen_notification_settings_mode_mentions)) {
PreferenceSwitch( PreferenceSwitch(
modifier = modifier, modifier = Modifier,
title = stringResource(id = CommonStrings.screen_notification_settings_room_mention_label), title = stringResource(id = CommonStrings.screen_notification_settings_room_mention_label),
isChecked = state.notifyMeOnRoom, isChecked = state.notifyMeOnRoom,
// onCheckedChange = ::onEnabledChanged,
switchAlignment = Alignment.Top, switchAlignment = Alignment.Top,
) )
} }
PreferenceCategory(title = stringResource(id = CommonStrings.screen_notification_settings_additional_settings_section_title)) { PreferenceCategory(title = stringResource(id = CommonStrings.screen_notification_settings_additional_settings_section_title)) {
PreferenceSwitch( PreferenceSwitch(
modifier = modifier, modifier = Modifier,
title = stringResource(id = CommonStrings.screen_notification_settings_calls_label), title = stringResource(id = CommonStrings.screen_notification_settings_calls_label),
isChecked = state.acceptCalls, isChecked = state.acceptCalls,
// onCheckedChange = ::onEnabledChanged,
switchAlignment = Alignment.Top, switchAlignment = Alignment.Top,
) )
} }

View file

@ -29,6 +29,8 @@ import io.element.android.libraries.architecture.Presenter
import io.element.android.libraries.core.meta.BuildType import io.element.android.libraries.core.meta.BuildType
import io.element.android.libraries.designsystem.utils.SnackbarDispatcher import io.element.android.libraries.designsystem.utils.SnackbarDispatcher
import io.element.android.libraries.designsystem.utils.collectSnackbarMessageAsState import io.element.android.libraries.designsystem.utils.collectSnackbarMessageAsState
import io.element.android.libraries.featureflag.api.FeatureFlagService
import io.element.android.libraries.featureflag.api.FeatureFlags
import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.MatrixClient
import io.element.android.libraries.matrix.api.user.MatrixUser import io.element.android.libraries.matrix.api.user.MatrixUser
import io.element.android.libraries.matrix.api.user.getCurrentUser import io.element.android.libraries.matrix.api.user.getCurrentUser
@ -46,6 +48,7 @@ class PreferencesRootPresenter @Inject constructor(
private val buildType: BuildType, private val buildType: BuildType,
private val versionFormatter: VersionFormatter, private val versionFormatter: VersionFormatter,
private val snackbarDispatcher: SnackbarDispatcher, private val snackbarDispatcher: SnackbarDispatcher,
private val featureFlagService: FeatureFlagService,
) : Presenter<PreferencesRootState> { ) : Presenter<PreferencesRootState> {
@Composable @Composable
@ -60,6 +63,11 @@ class PreferencesRootPresenter @Inject constructor(
val snackbarMessage by snackbarDispatcher.collectSnackbarMessageAsState() val snackbarMessage by snackbarDispatcher.collectSnackbarMessageAsState()
val hasAnalyticsProviders = remember { analyticsService.getAvailableAnalyticsProviders().isNotEmpty() } val hasAnalyticsProviders = remember { analyticsService.getAvailableAnalyticsProviders().isNotEmpty() }
val showNotificationSettings = remember { mutableStateOf(false) }
LaunchedEffect(Unit) {
showNotificationSettings.value = featureFlagService.isFeatureEnabled(FeatureFlags.NotificationSettings)
}
// We should display the 'complete verification' option if the current session can be verified // We should display the 'complete verification' option if the current session can be verified
val showCompleteVerification by sessionVerificationService.canVerifySessionFlow.collectAsState(false) val showCompleteVerification by sessionVerificationService.canVerifySessionFlow.collectAsState(false)
@ -81,6 +89,7 @@ class PreferencesRootPresenter @Inject constructor(
accountManagementUrl = accountManagementUrl.value, accountManagementUrl = accountManagementUrl.value,
showAnalyticsSettings = hasAnalyticsProviders, showAnalyticsSettings = hasAnalyticsProviders,
showDeveloperSettings = showDeveloperSettings, showDeveloperSettings = showDeveloperSettings,
showNotificationSettings = showNotificationSettings.value,
snackbarMessage = snackbarMessage, snackbarMessage = snackbarMessage,
) )
} }

View file

@ -28,5 +28,6 @@ data class PreferencesRootState(
val accountManagementUrl: String?, val accountManagementUrl: String?,
val showAnalyticsSettings: Boolean, val showAnalyticsSettings: Boolean,
val showDeveloperSettings: Boolean, val showDeveloperSettings: Boolean,
val showNotificationSettings: Boolean,
val snackbarMessage: SnackbarMessage?, val snackbarMessage: SnackbarMessage?,
) )

View file

@ -28,5 +28,6 @@ fun aPreferencesRootState() = PreferencesRootState(
accountManagementUrl = "aUrl", accountManagementUrl = "aUrl",
showAnalyticsSettings = true, showAnalyticsSettings = true,
showDeveloperSettings = true, showDeveloperSettings = true,
showNotificationSettings = true,
snackbarMessage = SnackbarMessage(CommonStrings.common_verification_complete), snackbarMessage = SnackbarMessage(CommonStrings.common_verification_complete),
) )

View file

@ -94,11 +94,13 @@ fun PreferencesRootView(
onClick = onOpenAnalytics, onClick = onOpenAnalytics,
) )
} }
PreferenceText( if(state.showNotificationSettings) {
title = stringResource(id = CommonStrings.screen_notification_settings_title), PreferenceText(
icon = Icons.Outlined.Notifications, title = stringResource(id = CommonStrings.screen_notification_settings_title),
onClick = onOpenNotificationSettings, icon = Icons.Outlined.Notifications,
) onClick = onOpenNotificationSettings,
)
}
PreferenceText( PreferenceText(
title = stringResource(id = CommonStrings.action_report_bug), title = stringResource(id = CommonStrings.action_report_bug),
icon = Icons.Outlined.BugReport, icon = Icons.Outlined.BugReport,