0
0
mirror of https://github.com/thunderbird/thunderbird-android.git synced 2024-09-20 04:02:14 +02:00

Merge pull request #7125 from thundernest/new_onboarding_feature_flag

Tie creating new accounts to 'new_onboarding' feature flag
This commit is contained in:
cketti 2023-08-14 18:36:23 +02:00 committed by GitHub
commit 4cc3ad72b8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -15,6 +15,10 @@ import androidx.navigation.fragment.findNavController
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import app.k9mail.core.featureflag.FeatureFlagKey
import app.k9mail.core.featureflag.FeatureFlagProvider
import app.k9mail.core.featureflag.FeatureFlagResult
import app.k9mail.feature.launcher.FeatureLauncherActivity
import com.fsck.k9.Account
import com.fsck.k9.ui.R
import com.fsck.k9.ui.helper.RecyclerViewBackgroundDrawable
@ -28,10 +32,13 @@ import com.mikepenz.fastadapter.adapters.ItemAdapter
import com.mikepenz.fastadapter.drag.ItemTouchCallback
import com.mikepenz.fastadapter.drag.SimpleDragCallback
import com.mikepenz.fastadapter.utils.DragDropUtil
import org.koin.android.ext.android.inject
import org.koin.androidx.viewmodel.ext.android.viewModel
import timber.log.Timber
class SettingsListFragment : Fragment(), ItemTouchCallback {
private val viewModel: SettingsViewModel by viewModel()
private val featureFlagProvider: FeatureFlagProvider by inject()
private lateinit var itemAdapter: ItemAdapter<GenericItem>
@ -148,7 +155,16 @@ class SettingsListFragment : Fragment(), ItemTouchCallback {
when (item) {
is AccountItem -> launchAccountSettings(item.account)
is UrlActionItem -> openUrl(item.url)
is SettingsActionItem -> findNavController().navigate(item.navigationAction)
is SettingsActionItem -> {
if (
item.navigationAction == R.id.action_settingsListScreen_to_addAccountScreen &&
featureFlagProvider.provide(FeatureFlagKey("new_onboarding")) is FeatureFlagResult.Enabled
) {
FeatureLauncherActivity.launchSetupAccount(requireActivity())
} else {
findNavController().navigate(item.navigationAction)
}
}
}
}
@ -166,10 +182,21 @@ class SettingsListFragment : Fragment(), ItemTouchCallback {
}
private fun launchOnboarding() {
findNavController().navigate(R.id.action_settingsListScreen_to_onboardingScreen)
featureFlagProvider.provide(FeatureFlagKey("new_onboarding")).onEnabled {
FeatureLauncherActivity.launchOnboarding(requireActivity())
}.onDisabled {
launchOldOnboarding()
}.onUnavailable {
Timber.d("Feature flag 'new_onboarding' is unavailable, falling back to old onboarding")
launchOldOnboarding()
}
requireActivity().finishAffinity()
}
private fun launchOldOnboarding() {
findNavController().navigate(R.id.action_settingsListScreen_to_onboardingScreen)
}
private fun buildSettingsList(block: SettingsListBuilder.() -> Unit): List<GenericItem> {
return SettingsListBuilder().apply(block).toList()
}