Repository: thunderbird/thunderbird-android (language: kotlin)

Issue:
Bump AndroidX Activity
Bump AndroidX Activity to 1.10.1 and replace custom `LocalActivity` by new official `LocalActivity`

See: https://developer.android.com/jetpack/androidx/releases/activity#1.10.1


Discussion hints:
nan

Pull request: Bump AndroidX Activity
Bump AndroidX Activity 1.9.3 -> 1.10.1 and replace custom `LocalActivity` by new official `LocalActivity`

See: https://developer.android.com/jetpack/androidx/releases/activity#1.10.1

Fixes #8938


Test command: ./gradlew :feature:funding:googleplay:testDebugUnitTest --tests "app.k9mail.feature.funding.googleplay.ui.contribution.ContributionScreenKtTest"

Fix patch:
diff --git a/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt b/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt
index 9b56e58c0bd..629d8aaf43b 100644
--- a/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt
+++ b/app-k9mail/dependencies/fossReleaseRuntimeClasspath.txt
@@ -1,6 +1,6 @@
-androidx.activity:activity-compose:1.9.3
-androidx.activity:activity-ktx:1.9.3
-androidx.activity:activity:1.9.3
+androidx.activity:activity-compose:1.10.1
+androidx.activity:activity-ktx:1.10.1
+androidx.activity:activity:1.10.1
 androidx.annotation:annotation-experimental:1.4.1
 androidx.annotation:annotation-jvm:1.9.1
 androidx.annotation:annotation:1.9.1
@@ -57,6 +57,7 @@ androidx.constraintlayout:constraintlayout:2.2.0
 androidx.coordinatorlayout:coordinatorlayout:1.2.0
 androidx.core:core-ktx:1.15.0
 androidx.core:core-splashscreen:1.0.1
+androidx.core:core-viewtree:1.0.0
 androidx.core:core:1.15.0
 androidx.cursoradapter:cursoradapter:1.0.0
 androidx.customview:customview-poolingcontainer:1.0.0
diff --git a/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt b/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt
index 7d61fb6c5c5..611ed2ad4a1 100644
--- a/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt
+++ b/app-k9mail/dependencies/fullReleaseRuntimeClasspath.txt
@@ -1,6 +1,6 @@
-androidx.activity:activity-compose:1.9.3
-androidx.activity:activity-ktx:1.9.3
-androidx.activity:activity:1.9.3
+androidx.activity:activity-compose:1.10.1
+androidx.activity:activity-ktx:1.10.1
+androidx.activity:activity:1.10.1
 androidx.annotation:annotation-experimental:1.4.1
 androidx.annotation:annotation-jvm:1.9.1
 androidx.annotation:annotation:1.9.1
@@ -57,6 +57,7 @@ androidx.constraintlayout:constraintlayout:2.2.0
 androidx.coordinatorlayout:coordinatorlayout:1.2.0
 androidx.core:core-ktx:1.15.0
 androidx.core:core-splashscreen:1.0.1
+androidx.core:core-viewtree:1.0.0
 androidx.core:core:1.15.0
 androidx.cursoradapter:cursoradapter:1.0.0
 androidx.customview:customview-poolingcontainer:1.0.0
diff --git a/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt b/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt
index 4f62e341448..2206eb3eeff 100644
--- a/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt
+++ b/app-thunderbird/dependencies/fossBetaRuntimeClasspath.txt
@@ -1,6 +1,6 @@
-androidx.activity:activity-compose:1.9.3
-androidx.activity:activity-ktx:1.9.3
-androidx.activity:activity:1.9.3
+androidx.activity:activity-compose:1.10.1
+androidx.activity:activity-ktx:1.10.1
+androidx.activity:activity:1.10.1
 androidx.annotation:annotation-experimental:1.4.1
 androidx.annotation:annotation-jvm:1.9.1
 androidx.annotation:annotation:1.9.1
@@ -62,6 +62,7 @@ androidx.constraintlayout:constraintlayout:2.2.0
 androidx.coordinatorlayout:coordinatorlayout:1.2.0
 androidx.core:core-ktx:1.15.0
 androidx.core:core-splashscreen:1.0.1
+androidx.core:core-viewtree:1.0.0
 androidx.core:core:1.15.0
 androidx.cursoradapter:cursoradapter:1.0.0
 androidx.customview:customview-poolingcontainer:1.0.0
diff --git a/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt b/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt
index 4f62e341448..2206eb3eeff 100644
--- a/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt
+++ b/app-thunderbird/dependencies/fossDailyRuntimeClasspath.txt
@@ -1,6 +1,6 @@
-androidx.activity:activity-compose:1.9.3
-androidx.activity:activity-ktx:1.9.3
-androidx.activity:activity:1.9.3
+androidx.activity:activity-compose:1.10.1
+androidx.activity:activity-ktx:1.10.1
+androidx.activity:activity:1.10.1
 androidx.annotation:annotation-experimental:1.4.1
 androidx.annotation:annotation-jvm:1.9.1
 androidx.annotation:annotation:1.9.1
@@ -62,6 +62,7 @@ androidx.constraintlayout:constraintlayout:2.2.0
 androidx.coordinatorlayout:coordinatorlayout:1.2.0
 androidx.core:core-ktx:1.15.0
 androidx.core:core-splashscreen:1.0.1
+androidx.core:core-viewtree:1.0.0
 androidx.core:core:1.15.0
 androidx.cursoradapter:cursoradapter:1.0.0
 androidx.customview:customview-poolingcontainer:1.0.0
diff --git a/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt b/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt
index 4f62e341448..2206eb3eeff 100644
--- a/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt
+++ b/app-thunderbird/dependencies/fossReleaseRuntimeClasspath.txt
@@ -1,6 +1,6 @@
-androidx.activity:activity-compose:1.9.3
-androidx.activity:activity-ktx:1.9.3
-androidx.activity:activity:1.9.3
+androidx.activity:activity-compose:1.10.1
+androidx.activity:activity-ktx:1.10.1
+androidx.activity:activity:1.10.1
 androidx.annotation:annotation-experimental:1.4.1
 androidx.annotation:annotation-jvm:1.9.1
 androidx.annotation:annotation:1.9.1
@@ -62,6 +62,7 @@ androidx.constraintlayout:constraintlayout:2.2.0
 androidx.coordinatorlayout:coordinatorlayout:1.2.0
 androidx.core:core-ktx:1.15.0
 androidx.core:core-splashscreen:1.0.1
+androidx.core:core-viewtree:1.0.0
 androidx.core:core:1.15.0
 androidx.cursoradapter:cursoradapter:1.0.0
 androidx.customview:customview-poolingcontainer:1.0.0
diff --git a/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt b/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt
index 6cd4f4741d9..772d6913cbe 100644
--- a/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt
+++ b/app-thunderbird/dependencies/fullBetaRuntimeClasspath.txt
@@ -1,6 +1,6 @@
-androidx.activity:activity-compose:1.9.3
-androidx.activity:activity-ktx:1.9.3
-androidx.activity:activity:1.9.3
+androidx.activity:activity-compose:1.10.1
+androidx.activity:activity-ktx:1.10.1
+androidx.activity:activity:1.10.1
 androidx.annotation:annotation-experimental:1.4.1
 androidx.annotation:annotation-jvm:1.9.1
 androidx.annotation:annotation:1.9.1
@@ -62,6 +62,7 @@ androidx.constraintlayout:constraintlayout:2.2.0
 androidx.coordinatorlayout:coordinatorlayout:1.2.0
 androidx.core:core-ktx:1.15.0
 androidx.core:core-splashscreen:1.0.1
+androidx.core:core-viewtree:1.0.0
 androidx.core:core:1.15.0
 androidx.cursoradapter:cursoradapter:1.0.0
 androidx.customview:customview-poolingcontainer:1.0.0
diff --git a/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt b/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt
index 6cd4f4741d9..772d6913cbe 100644
--- a/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt
+++ b/app-thunderbird/dependencies/fullDailyRuntimeClasspath.txt
@@ -1,6 +1,6 @@
-androidx.activity:activity-compose:1.9.3
-androidx.activity:activity-ktx:1.9.3
-androidx.activity:activity:1.9.3
+androidx.activity:activity-compose:1.10.1
+androidx.activity:activity-ktx:1.10.1
+androidx.activity:activity:1.10.1
 androidx.annotation:annotation-experimental:1.4.1
 androidx.annotation:annotation-jvm:1.9.1
 androidx.annotation:annotation:1.9.1
@@ -62,6 +62,7 @@ androidx.constraintlayout:constraintlayout:2.2.0
 androidx.coordinatorlayout:coordinatorlayout:1.2.0
 androidx.core:core-ktx:1.15.0
 androidx.core:core-splashscreen:1.0.1
+androidx.core:core-viewtree:1.0.0
 androidx.core:core:1.15.0
 androidx.cursoradapter:cursoradapter:1.0.0
 androidx.customview:customview-poolingcontainer:1.0.0
diff --git a/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt b/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt
index 6cd4f4741d9..772d6913cbe 100644
--- a/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt
+++ b/app-thunderbird/dependencies/fullReleaseRuntimeClasspath.txt
@@ -1,6 +1,6 @@
-androidx.activity:activity-compose:1.9.3
-androidx.activity:activity-ktx:1.9.3
-androidx.activity:activity:1.9.3
+androidx.activity:activity-compose:1.10.1
+androidx.activity:activity-ktx:1.10.1
+androidx.activity:activity:1.10.1
 androidx.annotation:annotation-experimental:1.4.1
 androidx.annotation:annotation-jvm:1.9.1
 androidx.annotation:annotation:1.9.1
@@ -62,6 +62,7 @@ androidx.constraintlayout:constraintlayout:2.2.0
 androidx.coordinatorlayout:coordinatorlayout:1.2.0
 androidx.core:core-ktx:1.15.0
 androidx.core:core-splashscreen:1.0.1
+androidx.core:core-viewtree:1.0.0
 androidx.core:core:1.15.0
 androidx.cursoradapter:cursoradapter:1.0.0
 androidx.customview:customview-poolingcontainer:1.0.0
diff --git a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/CatalogActivity.kt b/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/CatalogActivity.kt
index 41b45a446d1..6d341644bd2 100644
--- a/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/CatalogActivity.kt
+++ b/app-ui-catalog/src/main/java/app/k9mail/ui/catalog/CatalogActivity.kt
@@ -2,9 +2,9 @@ package app.k9mail.ui.catalog
 
 import android.os.Bundle
 import androidx.activity.ComponentActivity
+import androidx.activity.compose.setContent
 import androidx.activity.enableEdgeToEdge
 import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
-import app.k9mail.core.ui.compose.common.activity.setActivityContent
 import app.k9mail.ui.catalog.ui.CatalogScreen
 
 class CatalogActivity : ComponentActivity() {
@@ -14,7 +14,7 @@ class CatalogActivity : ComponentActivity() {
 
         super.onCreate(savedInstanceState)
 
-        setActivityContent {
+        setContent {
             CatalogScreen()
         }
     }
diff --git a/config/detekt/detekt.yml b/config/detekt/detekt.yml
index 9c372dbdd30..f11271b6d34 100644
--- a/config/detekt/detekt.yml
+++ b/config/detekt/detekt.yml
@@ -797,7 +797,6 @@ Compose:
       LocalShapes,
       LocalSizes,
       LocalSpacings,
-      LocalActivity,
       LocalThemeColorScheme,
       LocalThemeElevations,
       LocalThemeImages,
diff --git a/core/ui/compose/common/src/main/kotlin/app/k9mail/core/ui/compose/common/activity/LocalActivity.kt b/core/ui/compose/common/src/main/kotlin/app/k9mail/core/ui/compose/common/activity/LocalActivity.kt
deleted file mode 100644
index 84293ea2928..00000000000
--- a/core/ui/compose/common/src/main/kotlin/app/k9mail/core/ui/compose/common/activity/LocalActivity.kt
+++ /dev/null
@@ -1,21 +0,0 @@
-package app.k9mail.core.ui.compose.common.activity
-
-import androidx.activity.ComponentActivity
-import androidx.activity.compose.setContent
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.CompositionContext
-import androidx.compose.runtime.CompositionLocalProvider
-import androidx.compose.runtime.staticCompositionLocalOf
-
-val LocalActivity = staticCompositionLocalOf<ComponentActivity> {
-    error("No value for LocalActivity provided")
-}
-
-fun ComponentActivity.setActivityContent(
-    parent: CompositionContext? = null,
-    content: @Composable () -> Unit,
-) {
-    setContent(parent) {
-        CompositionLocalProvider(LocalActivity provides this, content = content)
-    }
-}
diff --git a/feature/account/server/settings/build.gradle.kts b/feature/account/server/settings/build.gradle.kts
index 73ba3fdb6e8..c4cb69f8e4f 100644
--- a/feature/account/server/settings/build.gradle.kts
+++ b/feature/account/server/settings/build.gradle.kts
@@ -15,6 +15,7 @@ dependencies {
     implementation(projects.mail.protocols.imap)
 
     implementation(projects.feature.account.common)
+    implementation(libs.androidx.activity.compose)
     implementation(libs.androidx.biometric)
 
     testImplementation(projects.core.ui.compose.testing)
diff --git a/feature/account/server/settings/src/main/kotlin/app/k9mail/feature/account/server/settings/ui/common/ClientCertificateInput.kt b/feature/account/server/settings/src/main/kotlin/app/k9mail/feature/account/server/settings/ui/common/ClientCertificateInput.kt
index b35095fc7ad..ee10a9cd5ea 100644
--- a/feature/account/server/settings/src/main/kotlin/app/k9mail/feature/account/server/settings/ui/common/ClientCertificateInput.kt
+++ b/feature/account/server/settings/src/main/kotlin/app/k9mail/feature/account/server/settings/ui/common/ClientCertificateInput.kt
@@ -1,6 +1,8 @@
 package app.k9mail.feature.account.server.settings.ui.common
 
+import android.app.Activity
 import android.security.KeyChain
+import androidx.activity.compose.LocalActivity
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.fillMaxWidth
@@ -8,7 +10,6 @@ import androidx.compose.foundation.layout.padding
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.res.stringResource
-import app.k9mail.core.ui.compose.common.activity.LocalActivity
 import app.k9mail.core.ui.compose.designsystem.atom.textfield.TextFieldOutlinedFakeSelect
 import app.k9mail.core.ui.compose.designsystem.molecule.input.inputContentPadding
 import app.k9mail.feature.account.server.settings.R
@@ -27,7 +28,7 @@ fun ClientCertificateInput(
             .fillMaxWidth()
             .then(modifier),
     ) {
-        val activity = LocalActivity.current
+        val activity = LocalActivity.current as Activity
         TextFieldOutlinedFakeSelect(
             text = alias ?: stringResource(R.string.account_server_settings_client_certificate_none_selected),
             onClick = {
diff --git a/feature/account/server/settings/src/main/kotlin/app/k9mail/feature/account/server/settings/ui/common/TextFieldOutlinedPasswordBiometric.kt b/feature/account/server/settings/src/main/kotlin/app/k9mail/feature/account/server/settings/ui/common/TextFieldOutlinedPasswordBiometric.kt
index b50bf5cca1b..6e980792823 100644
--- a/feature/account/server/settings/src/main/kotlin/app/k9mail/feature/account/server/settings/ui/common/TextFieldOutlinedPasswordBiometric.kt
+++ b/feature/account/server/settings/src/main/kotlin/app/k9mail/feature/account/server/settings/ui/common/TextFieldOutlinedPasswordBiometric.kt
@@ -1,6 +1,7 @@
 package app.k9mail.feature.account.server.settings.ui.common
 
 import android.view.WindowManager
+import androidx.activity.compose.LocalActivity
 import androidx.biometric.BiometricManager
 import androidx.biometric.BiometricPrompt
 import androidx.compose.runtime.Composable
@@ -11,7 +12,6 @@ import androidx.compose.runtime.saveable.rememberSaveable
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Modifier
 import androidx.fragment.app.FragmentActivity
-import app.k9mail.core.ui.compose.common.activity.LocalActivity
 import app.k9mail.core.ui.compose.designsystem.atom.textfield.TextFieldOutlinedPassword
 
 /**
diff --git a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionScreen.kt b/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionScreen.kt
index af8df248b44..30b6ee412ad 100644
--- a/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionScreen.kt
+++ b/feature/funding/googleplay/src/main/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionScreen.kt
@@ -2,12 +2,13 @@ package app.k9mail.feature.funding.googleplay.ui.contribution
 
 import android.content.Intent
 import android.net.Uri
+import androidx.activity.ComponentActivity
 import androidx.activity.compose.BackHandler
+import androidx.activity.compose.LocalActivity
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.res.stringResource
-import app.k9mail.core.ui.compose.common.activity.LocalActivity
 import app.k9mail.core.ui.compose.common.mvi.observe
 import app.k9mail.core.ui.compose.designsystem.organism.TopAppBarWithBackButton
 import app.k9mail.core.ui.compose.designsystem.template.Scaffold
@@ -21,7 +22,7 @@ internal fun ContributionScreen(
     modifier: Modifier = Modifier,
     viewModel: ViewModel = koinViewModel<ContributionViewModel>(),
 ) {
-    val activity = LocalActivity.current
+    val activity = LocalActivity.current as ComponentActivity
     val context = LocalContext.current
 
     val (state, dispatch) = viewModel.observe { effect ->
diff --git a/feature/launcher/build.gradle.kts b/feature/launcher/build.gradle.kts
index 98683409fa1..f2a6e9f26b9 100644
--- a/feature/launcher/build.gradle.kts
+++ b/feature/launcher/build.gradle.kts
@@ -17,5 +17,7 @@ dependencies {
 
     implementation(projects.feature.funding.api)
 
+    implementation(libs.androidx.activity.compose)
+
     testImplementation(projects.core.ui.compose.testing)
 }
diff --git a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherActivity.kt b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherActivity.kt
index a947a4e0557..f86781eca3b 100644
--- a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherActivity.kt
+++ b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/FeatureLauncherActivity.kt
@@ -3,8 +3,8 @@ package app.k9mail.feature.launcher
 import android.content.Context
 import android.content.Intent
 import android.os.Bundle
+import androidx.activity.compose.setContent
 import androidx.activity.enableEdgeToEdge
-import app.k9mail.core.ui.compose.common.activity.setActivityContent
 import app.k9mail.feature.launcher.ui.FeatureLauncherApp
 import com.fsck.k9.ui.base.K9Activity
 
@@ -15,7 +15,7 @@ class FeatureLauncherActivity : K9Activity() {
 
         enableEdgeToEdge()
 
-        setActivityContent {
+        setContent {
             FeatureLauncherApp()
         }
     }
diff --git a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt
index 71858fac529..ba9515aa06b 100644
--- a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt
+++ b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/navigation/FeatureLauncherNavHost.kt
@@ -1,10 +1,11 @@
 package app.k9mail.feature.launcher.navigation
 
+import androidx.activity.ComponentActivity
+import androidx.activity.compose.LocalActivity
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
 import androidx.navigation.NavHostController
 import androidx.navigation.compose.NavHost
-import app.k9mail.core.ui.compose.common.activity.LocalActivity
 import app.k9mail.feature.account.edit.navigation.accountEditRoute
 import app.k9mail.feature.account.setup.navigation.accountSetupRoute
 import app.k9mail.feature.funding.api.FundingNavigation
@@ -21,7 +22,7 @@ fun FeatureLauncherNavHost(
     accountSetupFinishedLauncher: AccountSetupFinishedLauncher = koinInject(),
     fundingNavigation: FundingNavigation = koinInject(),
 ) {
-    val activity = LocalActivity.current
+    val activity = LocalActivity.current as ComponentActivity
 
     NavHost(
         navController = navController,
diff --git a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/ui/FeatureLauncherApp.kt b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/ui/FeatureLauncherApp.kt
index dfaa5f94243..666b65e673c 100644
--- a/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/ui/FeatureLauncherApp.kt
+++ b/feature/launcher/src/main/kotlin/app/k9mail/feature/launcher/ui/FeatureLauncherApp.kt
@@ -1,11 +1,12 @@
 package app.k9mail.feature.launcher.ui
 
+import androidx.activity.ComponentActivity
+import androidx.activity.compose.LocalActivity
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.safeDrawingPadding
 import androidx.compose.runtime.Composable
 import androidx.compose.ui.Modifier
 import androidx.navigation.compose.rememberNavController
-import app.k9mail.core.ui.compose.common.activity.LocalActivity
 import app.k9mail.core.ui.compose.designsystem.atom.Surface
 import app.k9mail.core.ui.theme.api.FeatureThemeProvider
 import app.k9mail.feature.launcher.navigation.FeatureLauncherNavHost
@@ -25,7 +26,7 @@ fun FeatureLauncherApp(
                 .safeDrawingPadding()
                 .then(modifier),
         ) {
-            val activity = LocalActivity.current
+            val activity = LocalActivity.current as ComponentActivity
 
             FeatureLauncherNavHost(
                 navController = navController,
diff --git a/feature/migration/qrcode/src/main/kotlin/app/k9mail/feature/migration/qrcode/ui/QrCodeScannerActivity.kt b/feature/migration/qrcode/src/main/kotlin/app/k9mail/feature/migration/qrcode/ui/QrCodeScannerActivity.kt
index 905608b840e..dffe995039e 100644
--- a/feature/migration/qrcode/src/main/kotlin/app/k9mail/feature/migration/qrcode/ui/QrCodeScannerActivity.kt
+++ b/feature/migration/qrcode/src/main/kotlin/app/k9mail/feature/migration/qrcode/ui/QrCodeScannerActivity.kt
@@ -3,8 +3,8 @@ package app.k9mail.feature.migration.qrcode.ui
 import android.content.Intent
 import android.net.Uri
 import android.os.Bundle
+import androidx.activity.compose.setContent
 import androidx.activity.enableEdgeToEdge
-import app.k9mail.core.ui.compose.common.activity.setActivityContent
 import app.k9mail.core.ui.theme.api.FeatureThemeProvider
 import com.fsck.k9.ui.base.K9Activity
 import org.koin.android.ext.android.inject
@@ -17,7 +17,7 @@ class QrCodeScannerActivity : K9Activity() {
 
         enableEdgeToEdge()
 
-        setActivityContent {
+        setContent {
             themeProvider.WithTheme(darkTheme = true) {
                 QrCodeScannerScreen(
                     finishWithResult = ::finishWithResult,
diff --git a/feature/settings/import/build.gradle.kts b/feature/settings/import/build.gradle.kts
index 4f8cf899252..5cb07b7e00f 100644
--- a/feature/settings/import/build.gradle.kts
+++ b/feature/settings/import/build.gradle.kts
@@ -23,6 +23,7 @@ dependencies {
     implementation(projects.feature.account.oauth)
     implementation(libs.appauth)
 
+    implementation(libs.androidx.activity.compose)
     implementation(libs.androidx.fragment.compose)
     implementation(libs.androidx.constraintlayout)
     implementation(libs.fastadapter)
diff --git a/feature/settings/import/src/main/kotlin/app/k9mail/feature/settings/import/ui/SettingsImportScreen.kt b/feature/settings/import/src/main/kotlin/app/k9mail/feature/settings/import/ui/SettingsImportScreen.kt
index 0097552e54a..f3ad24baac9 100644
--- a/feature/settings/import/src/main/kotlin/app/k9mail/feature/settings/import/ui/SettingsImportScreen.kt
+++ b/feature/settings/import/src/main/kotlin/app/k9mail/feature/settings/import/ui/SettingsImportScreen.kt
@@ -1,6 +1,7 @@
 package app.k9mail.feature.settings.import.ui
 
 import android.os.Bundle
+import androidx.activity.compose.LocalActivity
 import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.padding
@@ -10,7 +11,6 @@ import androidx.compose.ui.res.stringResource
 import androidx.fragment.app.FragmentActivity
 import androidx.fragment.compose.AndroidFragment
 import androidx.lifecycle.compose.LocalLifecycleOwner
-import app.k9mail.core.ui.compose.common.activity.LocalActivity
 import app.k9mail.core.ui.compose.designsystem.atom.button.ButtonIcon
 import app.k9mail.core.ui.compose.designsystem.atom.icon.Icons
 import app.k9mail.core.ui.compose.designsystem.organism.TopAppBar
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 690686a7342..70fdea445f7 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -17,7 +17,7 @@ androidMaterial = "1.12.0"
 # AGP and tools should be updated together
 androidGradlePlugin = "8.7.3"
 androidTools = "31.7.3"
-androidxActivity = "1.9.3"
+androidxActivity = "1.10.1"
 androidxAnnotation = "1.9.1"
 androidxAppCompat = "1.7.0"
 androidxBiometric = "1.1.0"


Test patch:
diff --git a/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionScreenKtTest.kt b/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionScreenKtTest.kt
index 02c978b15ee..d241a886183 100644
--- a/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionScreenKtTest.kt
+++ b/feature/funding/googleplay/src/test/kotlin/app/k9mail/feature/funding/googleplay/ui/contribution/ContributionScreenKtTest.kt
@@ -1,8 +1,6 @@
 package app.k9mail.feature.funding.googleplay.ui.contribution
 
-import androidx.compose.runtime.CompositionLocalProvider
 import androidx.compose.ui.test.performClick
-import app.k9mail.core.ui.compose.common.activity.LocalActivity
 import app.k9mail.core.ui.compose.testing.ComposeTest
 import app.k9mail.core.ui.compose.testing.onNodeWithTag
 import app.k9mail.core.ui.compose.testing.pressBack
@@ -12,7 +10,6 @@ import assertk.assertThat
 import assertk.assertions.isEqualTo
 import kotlin.test.Test
 import kotlinx.coroutines.test.runTest
-import org.mockito.Mockito.mock
 
 internal class ContributionScreenKtTest : ComposeTest() {
 
@@ -23,12 +20,10 @@ internal class ContributionScreenKtTest : ComposeTest() {
         var onBackCounter = 0
 
         setContentWithTheme {
-            CompositionLocalProvider(LocalActivity provides mock()) {
-                ContributionScreen(
-                    onBack = { onBackCounter++ },
-                    viewModel = viewModel,
-                )
-            }
+            ContributionScreen(
+                onBack = { onBackCounter++ },
+                viewModel = viewModel,
+            )
         }
 
         assertThat(onBackCounter).isEqualTo(0)