Loading app-feature-preview/src/main/java/app/k9mail/feature/preview/FeatureModule.kt +2 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ package app.k9mail.feature.preview import app.k9mail.core.common.oauth.OAuthConfigurationFactory import app.k9mail.feature.account.common.AccountCommonExternalContract import app.k9mail.feature.account.edit.AccountEditExternalContract import app.k9mail.feature.account.edit.featureAccountEditModule import app.k9mail.feature.account.setup.AccountSetupExternalContract import app.k9mail.feature.account.setup.featureAccountSetupModule import app.k9mail.feature.preview.account.AccountOwnerNameProvider Loading Loading @@ -44,5 +45,6 @@ val featureModule: Module = module { includes( accountModule, featureAccountSetupModule, featureAccountEditModule, ) } app-feature-preview/src/main/java/app/k9mail/feature/preview/navigation/FeatureNavHost.kt +8 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import app.k9mail.feature.account.edit.navigation.accountEditRoute import app.k9mail.feature.account.edit.navigation.navigateToAccountEditConfigIncoming import app.k9mail.feature.account.setup.navigation.accountSetupRoute import app.k9mail.feature.account.setup.navigation.navigateToAccountSetup import app.k9mail.feature.onboarding.navigation.NAVIGATION_ROUTE_ONBOARDING Loading @@ -26,6 +28,12 @@ fun FeatureNavHost( onImport = { /* TODO */ }, ) accountSetupRoute( onBack = navController::popBackStack, onFinish = { accountUuid -> navController.navigateToAccountEditConfigIncoming(accountUuid) }, ) accountEditRoute( onBack = navController::popBackStack, onFinish = { navController.navigateToOnboarding() }, ) Loading app/k9mail/src/main/java/com/fsck/k9/featureflag/InMemoryFeatureFlagFactory.kt +2 −1 Original line number Diff line number Diff line Loading @@ -2,11 +2,12 @@ package com.fsck.k9.featureflag import app.k9mail.core.featureflag.FeatureFlag import app.k9mail.core.featureflag.FeatureFlagFactory import app.k9mail.core.featureflag.FeatureFlagKey class InMemoryFeatureFlagFactory : FeatureFlagFactory { override fun createFeatureCatalog(): List<FeatureFlag> { return listOf( // empty FeatureFlag(FeatureFlagKey("new_account_edit"), false), ) } } app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsFragment.kt +11 −2 Original line number Diff line number Diff line Loading @@ -13,6 +13,9 @@ import androidx.preference.ListPreference import androidx.preference.Preference import androidx.preference.PreferenceCategory import androidx.preference.SwitchPreference import app.k9mail.core.featureflag.FeatureFlagProvider import app.k9mail.core.featureflag.toFeatureFlagKey import app.k9mail.feature.launcher.FeatureLauncherActivity import com.fsck.k9.Account import com.fsck.k9.account.BackgroundAccountRemover import com.fsck.k9.activity.ManageIdentities Loading Loading @@ -52,6 +55,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr private val notificationChannelManager: NotificationChannelManager by inject() private val notificationSettingsUpdater: NotificationSettingsUpdater by inject() private val vibrator: Vibrator by inject() private val featureFlagProvider: FeatureFlagProvider by inject() private lateinit var dataStore: AccountSettingsDataStore Loading Loading @@ -123,13 +127,16 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr onDeleteAccount() true } else -> super.onOptionsItemSelected(item) } } private fun initializeIncomingServer() { findPreference<Preference>(PREFERENCE_INCOMING_SERVER)?.onClick { AccountSetupIncoming.actionEditIncomingSettings(requireActivity(), accountUuid) featureFlagProvider.provide("new_account_edit".toFeatureFlagKey()) .onEnabled { FeatureLauncherActivity.launchEditIncomingSettings(requireActivity(), accountUuid) } .onDisabled { AccountSetupIncoming.actionEditIncomingSettings(requireActivity(), accountUuid) } } } Loading @@ -155,7 +162,9 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr private fun initializeOutgoingServer() { findPreference<Preference>(PREFERENCE_OUTGOING_SERVER)?.onClick { AccountSetupOutgoing.actionEditOutgoingSettings(requireActivity(), accountUuid) featureFlagProvider.provide("new_account_edit".toFeatureFlagKey()) .onEnabled { FeatureLauncherActivity.launchEditOutgoingSettings(requireActivity(), accountUuid) } .onDisabled { AccountSetupOutgoing.actionEditOutgoingSettings(requireActivity(), accountUuid) } } } Loading core/featureflags/src/main/kotlin/app/k9mail/core/featureflag/FeatureFlagKey.kt +2 −0 Original line number Diff line number Diff line Loading @@ -2,3 +2,5 @@ package app.k9mail.core.featureflag @JvmInline value class FeatureFlagKey(val key: String) fun String.toFeatureFlagKey(): FeatureFlagKey = FeatureFlagKey(this) Loading
app-feature-preview/src/main/java/app/k9mail/feature/preview/FeatureModule.kt +2 −0 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ package app.k9mail.feature.preview import app.k9mail.core.common.oauth.OAuthConfigurationFactory import app.k9mail.feature.account.common.AccountCommonExternalContract import app.k9mail.feature.account.edit.AccountEditExternalContract import app.k9mail.feature.account.edit.featureAccountEditModule import app.k9mail.feature.account.setup.AccountSetupExternalContract import app.k9mail.feature.account.setup.featureAccountSetupModule import app.k9mail.feature.preview.account.AccountOwnerNameProvider Loading Loading @@ -44,5 +45,6 @@ val featureModule: Module = module { includes( accountModule, featureAccountSetupModule, featureAccountEditModule, ) }
app-feature-preview/src/main/java/app/k9mail/feature/preview/navigation/FeatureNavHost.kt +8 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import app.k9mail.feature.account.edit.navigation.accountEditRoute import app.k9mail.feature.account.edit.navigation.navigateToAccountEditConfigIncoming import app.k9mail.feature.account.setup.navigation.accountSetupRoute import app.k9mail.feature.account.setup.navigation.navigateToAccountSetup import app.k9mail.feature.onboarding.navigation.NAVIGATION_ROUTE_ONBOARDING Loading @@ -26,6 +28,12 @@ fun FeatureNavHost( onImport = { /* TODO */ }, ) accountSetupRoute( onBack = navController::popBackStack, onFinish = { accountUuid -> navController.navigateToAccountEditConfigIncoming(accountUuid) }, ) accountEditRoute( onBack = navController::popBackStack, onFinish = { navController.navigateToOnboarding() }, ) Loading
app/k9mail/src/main/java/com/fsck/k9/featureflag/InMemoryFeatureFlagFactory.kt +2 −1 Original line number Diff line number Diff line Loading @@ -2,11 +2,12 @@ package com.fsck.k9.featureflag import app.k9mail.core.featureflag.FeatureFlag import app.k9mail.core.featureflag.FeatureFlagFactory import app.k9mail.core.featureflag.FeatureFlagKey class InMemoryFeatureFlagFactory : FeatureFlagFactory { override fun createFeatureCatalog(): List<FeatureFlag> { return listOf( // empty FeatureFlag(FeatureFlagKey("new_account_edit"), false), ) } }
app/ui/legacy/src/main/java/com/fsck/k9/ui/settings/account/AccountSettingsFragment.kt +11 −2 Original line number Diff line number Diff line Loading @@ -13,6 +13,9 @@ import androidx.preference.ListPreference import androidx.preference.Preference import androidx.preference.PreferenceCategory import androidx.preference.SwitchPreference import app.k9mail.core.featureflag.FeatureFlagProvider import app.k9mail.core.featureflag.toFeatureFlagKey import app.k9mail.feature.launcher.FeatureLauncherActivity import com.fsck.k9.Account import com.fsck.k9.account.BackgroundAccountRemover import com.fsck.k9.activity.ManageIdentities Loading Loading @@ -52,6 +55,7 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr private val notificationChannelManager: NotificationChannelManager by inject() private val notificationSettingsUpdater: NotificationSettingsUpdater by inject() private val vibrator: Vibrator by inject() private val featureFlagProvider: FeatureFlagProvider by inject() private lateinit var dataStore: AccountSettingsDataStore Loading Loading @@ -123,13 +127,16 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr onDeleteAccount() true } else -> super.onOptionsItemSelected(item) } } private fun initializeIncomingServer() { findPreference<Preference>(PREFERENCE_INCOMING_SERVER)?.onClick { AccountSetupIncoming.actionEditIncomingSettings(requireActivity(), accountUuid) featureFlagProvider.provide("new_account_edit".toFeatureFlagKey()) .onEnabled { FeatureLauncherActivity.launchEditIncomingSettings(requireActivity(), accountUuid) } .onDisabled { AccountSetupIncoming.actionEditIncomingSettings(requireActivity(), accountUuid) } } } Loading @@ -155,7 +162,9 @@ class AccountSettingsFragment : PreferenceFragmentCompat(), ConfirmationDialogFr private fun initializeOutgoingServer() { findPreference<Preference>(PREFERENCE_OUTGOING_SERVER)?.onClick { AccountSetupOutgoing.actionEditOutgoingSettings(requireActivity(), accountUuid) featureFlagProvider.provide("new_account_edit".toFeatureFlagKey()) .onEnabled { FeatureLauncherActivity.launchEditOutgoingSettings(requireActivity(), accountUuid) } .onDisabled { AccountSetupOutgoing.actionEditOutgoingSettings(requireActivity(), accountUuid) } } } Loading
core/featureflags/src/main/kotlin/app/k9mail/core/featureflag/FeatureFlagKey.kt +2 −0 Original line number Diff line number Diff line Loading @@ -2,3 +2,5 @@ package app.k9mail.core.featureflag @JvmInline value class FeatureFlagKey(val key: String) fun String.toFeatureFlagKey(): FeatureFlagKey = FeatureFlagKey(this)