diff options
Diffstat (limited to 'app/src/main/java/org/terst/feedreader/ui/MainActivity.kt')
| -rw-r--r-- | app/src/main/java/org/terst/feedreader/ui/MainActivity.kt | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/app/src/main/java/org/terst/feedreader/ui/MainActivity.kt b/app/src/main/java/org/terst/feedreader/ui/MainActivity.kt index e1300f0..95ef71e 100644 --- a/app/src/main/java/org/terst/feedreader/ui/MainActivity.kt +++ b/app/src/main/java/org/terst/feedreader/ui/MainActivity.kt @@ -81,7 +81,25 @@ fun FeedReaderApp() { val articleId = decodeNavArg(backStackEntry.arguments?.getString("articleId") ?: "") // feedId here is the list the article was opened from (Unread/Saved/a specific // feed) -- ReaderScreen uses it to build the swipe queue of sibling articles. - ReaderScreen(feedId = feedId, initialArticleId = articleId, onBack = { navController.popBackStack() }) + ReaderScreen( + feedId = feedId, + initialArticleId = articleId, + onBack = { navController.popBackStack() }, + onOpenLink = { url -> navController.navigate("linkReader/${encodeNavArg(url)}") } + ) + } + composable( + "linkReader/{url}", + arguments = listOf(navArgument("url") { type = NavType.StringType }) + ) { backStackEntry -> + val url = decodeNavArg(backStackEntry.arguments?.getString("url") ?: "") + // Recursive: a link tapped inside this screen pushes another linkReader route, + // so following a chain of links stays inside the reader pipeline all the way down. + LinkReaderScreen( + url = url, + onBack = { navController.popBackStack() }, + onOpenLink = { nextUrl -> navController.navigate("linkReader/${encodeNavArg(nextUrl)}") } + ) } composable("addFeed") { AddFeedScreen(onDone = { navController.popBackStack() }) |
