From aa8ea095c418a830671e42be55fc384430d68ad1 Mon Sep 17 00:00:00 2001 From: Samuel Smoker Date: Tue, 18 Feb 2025 17:12:06 -0600 Subject: [PATCH 1/2] Change launch mode to singleTop to work better with custom tabs --- app/src/main/AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d44540ecb..2b89b063a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -28,7 +28,7 @@ From b1c6af872c61399768537850eb840e47a280e269 Mon Sep 17 00:00:00 2001 From: Samuel Smoker Date: Tue, 18 Feb 2025 17:13:32 -0600 Subject: [PATCH 2/2] Update intent handling to work with singleTop launch mode --- .../infrastructure/android/MainActivity.kt | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/me/ash/reader/infrastructure/android/MainActivity.kt b/app/src/main/java/me/ash/reader/infrastructure/android/MainActivity.kt index 06fcc6122..9d45ca2ae 100644 --- a/app/src/main/java/me/ash/reader/infrastructure/android/MainActivity.kt +++ b/app/src/main/java/me/ash/reader/infrastructure/android/MainActivity.kt @@ -44,6 +44,8 @@ class MainActivity : AppCompatActivity() { @Inject lateinit var accountDao: AccountDao + private var subscribeViewModel: SubscribeViewModel? = null + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) Log.i("RLog", "onCreate: ${ProfileInstallerInitializer().create(this)}") @@ -87,24 +89,31 @@ class MainActivity : AppCompatActivity() { ) { AccountSettingsProvider(accountDao) { SettingsProvider { - val subscribeViewModel: SubscribeViewModel = hiltViewModel() - DisposableEffect(this) { - val listener = Consumer { intent -> - intent.getTextOrNull()?.let { - subscribeViewModel.handleSharedUrlFromIntent(it) - } - } - addOnNewIntentListener(listener) - onDispose { - removeOnNewIntentListener(listener) - } + val viewModel: SubscribeViewModel = hiltViewModel() + subscribeViewModel = viewModel + + // Handle the initial intent + intent?.getTextOrNull()?.let { + viewModel.handleSharedUrlFromIntent(it) } - HomeEntry(subscribeViewModel = subscribeViewModel) + + HomeEntry(subscribeViewModel = viewModel) } } } } } + + override fun onNewIntent(intent: Intent) { + super.onNewIntent(intent) + setIntent(intent) // Store the new intent + // Only process if viewModel is ready + if (subscribeViewModel != null) { + intent.getTextOrNull()?.let { + subscribeViewModel?.handleSharedUrlFromIntent(it) + } + } + } } private fun Intent.getTextOrNull(): String? {