Loading feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherActivity.kt +8 −45 Original line number Diff line number Diff line Loading @@ -5,13 +5,7 @@ import android.content.Intent import android.os.Bundle import androidx.activity.enableEdgeToEdge import app.k9mail.core.ui.compose.common.activity.setActivityContent import app.k9mail.core.ui.compose.common.navigation.toDeepLinkUri import app.k9mail.feature.account.edit.navigation.NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_INCOMING import app.k9mail.feature.account.edit.navigation.NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_OUTGOING import app.k9mail.feature.account.edit.navigation.withAccountUuid import app.k9mail.feature.account.setup.navigation.NAVIGATION_ROUTE_ACCOUNT_SETUP import app.k9mail.feature.launcher.ui.FeatureLauncherApp import app.k9mail.feature.onboarding.main.navigation.NAVIGATION_ROUTE_ONBOARDING import com.fsck.k9.ui.base.K9Activity class FeatureLauncherActivity : K9Activity() { Loading @@ -28,50 +22,19 @@ class FeatureLauncherActivity : K9Activity() { companion object { @JvmStatic fun launchOnboarding(context: Context) { val intent = Intent(context, FeatureLauncherActivity::class.java).apply { data = NAVIGATION_ROUTE_ONBOARDING.toDeepLinkUri() flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK } fun launch(context: Context, target: FeatureLauncherTarget) { val intent = getIntent(context, target) context.startActivity(intent) } @JvmStatic fun launchSetupAccount(context: Context) { val intent = Intent(context, FeatureLauncherActivity::class.java).apply { data = NAVIGATION_ROUTE_ACCOUNT_SETUP.toDeepLinkUri() } context.startActivity(intent) fun getIntent(context: Context, target: FeatureLauncherTarget): Intent { return Intent(context, FeatureLauncherActivity::class.java).apply { data = target.toDeepLinkUri() if (target.flags != null) { flags = target.flags } @JvmStatic fun getEditIncomingSettingsIntent(context: Context, accountUuid: String): Intent { val intent = Intent(context, FeatureLauncherActivity::class.java).apply { data = NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_INCOMING .withAccountUuid(accountUuid).toDeepLinkUri() } return intent } @JvmStatic fun launchEditIncomingSettings(context: Context, accountUuid: String) { val intent = getEditIncomingSettingsIntent(context, accountUuid) context.startActivity(intent) } @JvmStatic fun getEditOutgoingSettingsIntent(context: Context, accountUuid: String): Intent { val intent = Intent(context, FeatureLauncherActivity::class.java).apply { data = NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_OUTGOING .withAccountUuid(accountUuid).toDeepLinkUri() } return intent } @JvmStatic fun launchEditOutgoingSettings(context: Context, accountUuid: String) { val intent = getEditOutgoingSettingsIntent(context, accountUuid) context.startActivity(intent) } } } feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt 0 → 100644 +39 −0 Original line number Diff line number Diff line package app.k9mail.feature.launcher import android.content.Intent import android.net.Uri import app.k9mail.core.ui.compose.common.navigation.toDeepLinkUri import app.k9mail.feature.account.edit.navigation.withAccountUuid import app.k9mail.feature.account.setup.navigation.NAVIGATION_ROUTE_ACCOUNT_SETUP import app.k9mail.feature.onboarding.main.navigation.NAVIGATION_ROUTE_ONBOARDING sealed class FeatureLauncherTarget( val route: String, val flags: Int? = null, ) { data object Onboarding : FeatureLauncherTarget( route = NAVIGATION_ROUTE_ONBOARDING, flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK, ) data object AccountSetup : FeatureLauncherTarget( route = NAVIGATION_ROUTE_ACCOUNT_SETUP, ) data class AccountEditIncomingSettings(val accountUuid: String) : FeatureLauncherTarget( route = NAVIGATION_ROUTE_ACCOUNT_SETUP, ) data class AccountEditOutgoingSettings(val accountUuid: String) : FeatureLauncherTarget( route = NAVIGATION_ROUTE_ACCOUNT_SETUP, ) fun toDeepLinkUri(): Uri { return when (this) { is AccountEditIncomingSettings -> route.withAccountUuid(accountUuid).toDeepLinkUri() is AccountEditOutgoingSettings -> route.withAccountUuid(accountUuid).toDeepLinkUri() else -> route.toDeepLinkUri() } } } legacy/common/src/main/java/com/fsck/k9/notification/K9NotificationActionCreator.kt +9 −2 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ import android.content.Intent import android.net.Uri import androidx.core.app.PendingIntentCompat import app.k9mail.feature.launcher.FeatureLauncherActivity import app.k9mail.feature.launcher.FeatureLauncherTarget import app.k9mail.legacy.account.Account import app.k9mail.legacy.mailstore.MessageStoreManager import app.k9mail.legacy.message.controller.MessageReference Loading Loading @@ -110,12 +111,18 @@ internal class K9NotificationActionCreator( } override fun getEditIncomingServerSettingsIntent(account: Account): PendingIntent { val intent = FeatureLauncherActivity.getEditIncomingSettingsIntent(context, account.uuid) val intent = FeatureLauncherActivity.getIntent( context = context, target = FeatureLauncherTarget.AccountEditIncomingSettings(account.uuid), ) return PendingIntentCompat.getActivity(context, account.accountNumber, intent, FLAG_UPDATE_CURRENT, false)!! } override fun getEditOutgoingServerSettingsIntent(account: Account): PendingIntent { val intent = FeatureLauncherActivity.getEditOutgoingSettingsIntent(context, account.uuid) val intent = FeatureLauncherActivity.getIntent( context = context, target = FeatureLauncherTarget.AccountEditOutgoingSettings(account.uuid), ) return PendingIntentCompat.getActivity(context, account.accountNumber, intent, FLAG_UPDATE_CURRENT, false)!! } Loading legacy/ui/legacy/src/main/java/com/fsck/k9/activity/MessageList.kt +2 −1 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import app.k9mail.core.featureflag.FeatureFlagKey import app.k9mail.core.featureflag.FeatureFlagProvider import app.k9mail.core.ui.legacy.designsystem.atom.icon.Icons import app.k9mail.feature.launcher.FeatureLauncherActivity import app.k9mail.feature.launcher.FeatureLauncherTarget import app.k9mail.feature.navigation.drawer.FolderDrawer import app.k9mail.feature.navigation.drawer.LegacyDrawer import app.k9mail.feature.navigation.drawer.NavigationDrawer Loading Loading @@ -151,7 +152,7 @@ open class MessageList : deleteIncompleteAccounts(accounts) val hasAccountSetup = accounts.any { it.isFinishedSetup } if (!hasAccountSetup) { FeatureLauncherActivity.launchOnboarding(this) FeatureLauncherActivity.launch(this, FeatureLauncherTarget.Onboarding) finish() return } Loading legacy/ui/legacy/src/main/java/com/fsck/k9/activity/compose/MessageActions.java +3 −1 Original line number Diff line number Diff line Loading @@ -5,6 +5,8 @@ import android.content.Intent; import android.os.Parcelable; import app.k9mail.feature.launcher.FeatureLauncherActivity; import app.k9mail.feature.launcher.FeatureLauncherTarget; import app.k9mail.feature.launcher.FeatureLauncherTarget.AccountSetup; import app.k9mail.legacy.account.Account; import com.fsck.k9.Preferences; import com.fsck.k9.activity.MessageCompose; Loading @@ -19,7 +21,7 @@ public class MessageActions { public static void actionCompose(Context context, Account account) { Account defaultAccount = Preferences.getPreferences().getDefaultAccount(); if (account == null && defaultAccount == null) { FeatureLauncherActivity.launchSetupAccount(context); FeatureLauncherActivity.launch(context, AccountSetup.INSTANCE); } else { String accountUuid = (account == null) ? defaultAccount.getUuid() : Loading Loading
feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherActivity.kt +8 −45 Original line number Diff line number Diff line Loading @@ -5,13 +5,7 @@ import android.content.Intent import android.os.Bundle import androidx.activity.enableEdgeToEdge import app.k9mail.core.ui.compose.common.activity.setActivityContent import app.k9mail.core.ui.compose.common.navigation.toDeepLinkUri import app.k9mail.feature.account.edit.navigation.NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_INCOMING import app.k9mail.feature.account.edit.navigation.NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_OUTGOING import app.k9mail.feature.account.edit.navigation.withAccountUuid import app.k9mail.feature.account.setup.navigation.NAVIGATION_ROUTE_ACCOUNT_SETUP import app.k9mail.feature.launcher.ui.FeatureLauncherApp import app.k9mail.feature.onboarding.main.navigation.NAVIGATION_ROUTE_ONBOARDING import com.fsck.k9.ui.base.K9Activity class FeatureLauncherActivity : K9Activity() { Loading @@ -28,50 +22,19 @@ class FeatureLauncherActivity : K9Activity() { companion object { @JvmStatic fun launchOnboarding(context: Context) { val intent = Intent(context, FeatureLauncherActivity::class.java).apply { data = NAVIGATION_ROUTE_ONBOARDING.toDeepLinkUri() flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK } fun launch(context: Context, target: FeatureLauncherTarget) { val intent = getIntent(context, target) context.startActivity(intent) } @JvmStatic fun launchSetupAccount(context: Context) { val intent = Intent(context, FeatureLauncherActivity::class.java).apply { data = NAVIGATION_ROUTE_ACCOUNT_SETUP.toDeepLinkUri() } context.startActivity(intent) fun getIntent(context: Context, target: FeatureLauncherTarget): Intent { return Intent(context, FeatureLauncherActivity::class.java).apply { data = target.toDeepLinkUri() if (target.flags != null) { flags = target.flags } @JvmStatic fun getEditIncomingSettingsIntent(context: Context, accountUuid: String): Intent { val intent = Intent(context, FeatureLauncherActivity::class.java).apply { data = NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_INCOMING .withAccountUuid(accountUuid).toDeepLinkUri() } return intent } @JvmStatic fun launchEditIncomingSettings(context: Context, accountUuid: String) { val intent = getEditIncomingSettingsIntent(context, accountUuid) context.startActivity(intent) } @JvmStatic fun getEditOutgoingSettingsIntent(context: Context, accountUuid: String): Intent { val intent = Intent(context, FeatureLauncherActivity::class.java).apply { data = NAVIGATION_ROUTE_ACCOUNT_EDIT_SERVER_SETTINGS_OUTGOING .withAccountUuid(accountUuid).toDeepLinkUri() } return intent } @JvmStatic fun launchEditOutgoingSettings(context: Context, accountUuid: String) { val intent = getEditOutgoingSettingsIntent(context, accountUuid) context.startActivity(intent) } } }
feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherTarget.kt 0 → 100644 +39 −0 Original line number Diff line number Diff line package app.k9mail.feature.launcher import android.content.Intent import android.net.Uri import app.k9mail.core.ui.compose.common.navigation.toDeepLinkUri import app.k9mail.feature.account.edit.navigation.withAccountUuid import app.k9mail.feature.account.setup.navigation.NAVIGATION_ROUTE_ACCOUNT_SETUP import app.k9mail.feature.onboarding.main.navigation.NAVIGATION_ROUTE_ONBOARDING sealed class FeatureLauncherTarget( val route: String, val flags: Int? = null, ) { data object Onboarding : FeatureLauncherTarget( route = NAVIGATION_ROUTE_ONBOARDING, flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK, ) data object AccountSetup : FeatureLauncherTarget( route = NAVIGATION_ROUTE_ACCOUNT_SETUP, ) data class AccountEditIncomingSettings(val accountUuid: String) : FeatureLauncherTarget( route = NAVIGATION_ROUTE_ACCOUNT_SETUP, ) data class AccountEditOutgoingSettings(val accountUuid: String) : FeatureLauncherTarget( route = NAVIGATION_ROUTE_ACCOUNT_SETUP, ) fun toDeepLinkUri(): Uri { return when (this) { is AccountEditIncomingSettings -> route.withAccountUuid(accountUuid).toDeepLinkUri() is AccountEditOutgoingSettings -> route.withAccountUuid(accountUuid).toDeepLinkUri() else -> route.toDeepLinkUri() } } }
legacy/common/src/main/java/com/fsck/k9/notification/K9NotificationActionCreator.kt +9 −2 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ import android.content.Intent import android.net.Uri import androidx.core.app.PendingIntentCompat import app.k9mail.feature.launcher.FeatureLauncherActivity import app.k9mail.feature.launcher.FeatureLauncherTarget import app.k9mail.legacy.account.Account import app.k9mail.legacy.mailstore.MessageStoreManager import app.k9mail.legacy.message.controller.MessageReference Loading Loading @@ -110,12 +111,18 @@ internal class K9NotificationActionCreator( } override fun getEditIncomingServerSettingsIntent(account: Account): PendingIntent { val intent = FeatureLauncherActivity.getEditIncomingSettingsIntent(context, account.uuid) val intent = FeatureLauncherActivity.getIntent( context = context, target = FeatureLauncherTarget.AccountEditIncomingSettings(account.uuid), ) return PendingIntentCompat.getActivity(context, account.accountNumber, intent, FLAG_UPDATE_CURRENT, false)!! } override fun getEditOutgoingServerSettingsIntent(account: Account): PendingIntent { val intent = FeatureLauncherActivity.getEditOutgoingSettingsIntent(context, account.uuid) val intent = FeatureLauncherActivity.getIntent( context = context, target = FeatureLauncherTarget.AccountEditOutgoingSettings(account.uuid), ) return PendingIntentCompat.getActivity(context, account.accountNumber, intent, FLAG_UPDATE_CURRENT, false)!! } Loading
legacy/ui/legacy/src/main/java/com/fsck/k9/activity/MessageList.kt +2 −1 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import app.k9mail.core.featureflag.FeatureFlagKey import app.k9mail.core.featureflag.FeatureFlagProvider import app.k9mail.core.ui.legacy.designsystem.atom.icon.Icons import app.k9mail.feature.launcher.FeatureLauncherActivity import app.k9mail.feature.launcher.FeatureLauncherTarget import app.k9mail.feature.navigation.drawer.FolderDrawer import app.k9mail.feature.navigation.drawer.LegacyDrawer import app.k9mail.feature.navigation.drawer.NavigationDrawer Loading Loading @@ -151,7 +152,7 @@ open class MessageList : deleteIncompleteAccounts(accounts) val hasAccountSetup = accounts.any { it.isFinishedSetup } if (!hasAccountSetup) { FeatureLauncherActivity.launchOnboarding(this) FeatureLauncherActivity.launch(this, FeatureLauncherTarget.Onboarding) finish() return } Loading
legacy/ui/legacy/src/main/java/com/fsck/k9/activity/compose/MessageActions.java +3 −1 Original line number Diff line number Diff line Loading @@ -5,6 +5,8 @@ import android.content.Intent; import android.os.Parcelable; import app.k9mail.feature.launcher.FeatureLauncherActivity; import app.k9mail.feature.launcher.FeatureLauncherTarget; import app.k9mail.feature.launcher.FeatureLauncherTarget.AccountSetup; import app.k9mail.legacy.account.Account; import com.fsck.k9.Preferences; import com.fsck.k9.activity.MessageCompose; Loading @@ -19,7 +21,7 @@ public class MessageActions { public static void actionCompose(Context context, Account account) { Account defaultAccount = Preferences.getPreferences().getDefaultAccount(); if (account == null && defaultAccount == null) { FeatureLauncherActivity.launchSetupAccount(context); FeatureLauncherActivity.launch(context, AccountSetup.INSTANCE); } else { String accountUuid = (account == null) ? defaultAccount.getUuid() : Loading