feat: add Dead Links management module and internal browser screen

This commit is contained in:
2026-04-23 16:04:44 -04:00
parent 2198324c2d
commit b0a6e8100b
10 changed files with 398 additions and 167 deletions
@@ -52,6 +52,9 @@ sealed class Screen(val route: String) {
object TodoDetail : Screen("todoDetail/{linkId}") {
fun createRoute(linkId: Int): String = "todoDetail/$linkId"
}
object Browser : Screen("browser/{encodedUrl}") {
fun createRoute(encodedUrl: String): String = "browser/$encodedUrl"
}
}
@Composable
@@ -167,6 +170,10 @@ fun AppNavGraph(
onNavigateToReminders = { navController.navigate(Screen.Reminders.route) },
onNavigateToTodo = { navController.navigate(Screen.Todo.route) },
onNavigateToTodoDetail = { linkId -> navController.navigate(Screen.TodoDetail.createRoute(linkId)) },
onNavigateToBrowser = { url ->
val encoded = URLEncoder.encode(url, "UTF-8")
navController.navigate(Screen.Browser.createRoute(encoded))
},
onPlayAudio = onPlayAudio,
initialTagFilter = tag,
initialCollectionId = collectionId
@@ -374,5 +381,20 @@ fun AppNavGraph(
onNavigateBack = { navController.popBackStack() }
)
}
composable(
route = Screen.Browser.route,
arguments = listOf(
navArgument("encodedUrl") {
type = NavType.StringType
}
)
) { backStackEntry ->
val encodedUrl = backStackEntry.arguments?.getString("encodedUrl") ?: ""
com.shaarit.presentation.browser.InternalBrowserScreen(
encodedUrl = encodedUrl,
onNavigateBack = { navController.popBackStack() }
)
}
}
}