Mark
02/13/2025, 3:40 AMlaunchMode="singleTop"
, the app needs to implement onNewIntent()
(probably using navController.handleDeepLink(intent)
)?Mark
02/13/2025, 4:01 AM(NavController) -> Unit
and let the Activity implement that flow?
private val handleDeepLinkEventBus = SingleShotEventBus<(NavController) -> Unit>()
private val handleDeepLinkFlow: Flow<(NavController) -> Unit>
get() = handleDeepLinkEventBus.events
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
setIntent(intent) // Update the intent to the new one
handleDeepLinkEventBus.trySend { navController ->
navController.handleDeepLink(intent)
}
}
Ian Lake
02/13/2025, 4:04 AMOnNewIntentEffect(NavController)
that is just a no-op on non-Android would be way easier to reason about, but you do youMark
02/13/2025, 4:06 AMIan Lake
02/13/2025, 4:10 AMMark
02/13/2025, 4:21 AMnavController
. It’s trivial to move that code in or out of the AppScreen composable, so a moot point IMO.
setContent {
val mainNavController = rememberNavController()
DisposableEffect(Unit) {
val listener = Consumer<Intent> { intent ->
mainNavController.handleDeepLink(intent)
}
addOnNewIntentListener(listener)
onDispose { removeOnNewIntentListener(listener) }
}
AppScreen(mainNavController)
}
Thanks for your quick feedback Ian. 🙏Ian Lake
02/13/2025, 4:23 AMMark
02/13/2025, 4:24 AMmainNavController
as a key to the DisposableEffect
?Ian Lake
02/13/2025, 4:27 AM