summaryrefslogtreecommitdiff
path: root/app/src/main/java/org/terst/feedreader/ui/MainActivity.kt
diff options
context:
space:
mode:
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.kt20
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() })