feat: Implement link health monitoring system with periodic checks and dead link detection

- Add LinkHealthCheckWorker for automated bi-daily link validation (12-hour intervals)
- Extend LinkEntity with isDeadLink and lastHealthCheck fields for tracking link status
- Create LinkDao queries for dead link retrieval and health status updates
- Implement getDeadLinksStream() in LinkRepository for paginated dead link viewing
- Add GeminiRepository.generateTags() method with model fallback strategy and
This commit is contained in:
2026-01-31 13:19:53 -05:00
parent f88b7ffad3
commit 02c7300c3b
17 changed files with 661 additions and 35 deletions
@@ -42,6 +42,7 @@ sealed class Screen(val route: String) {
object Dashboard : Screen("dashboard")
object Settings : Screen("settings")
object Help : Screen("help")
object DeadLinks : Screen("dead_links")
}
@Composable
@@ -125,6 +126,7 @@ fun AppNavGraph(
onNavigateToSettings = { navController.navigate(Screen.Settings.route) },
onNavigateToRandom = { },
onNavigateToHelp = { navController.navigate(Screen.Help.route) },
onNavigateToDeadLinks = { navController.navigate(Screen.DeadLinks.route) },
initialTagFilter = tag,
initialCollectionId = collectionId
)
@@ -256,5 +258,16 @@ fun AppNavGraph(
onNavigateBack = { navController.popBackStack() }
)
}
composable(
route = Screen.DeadLinks.route
) {
com.shaarit.presentation.deadlinks.DeadLinksScreen(
onNavigateBack = { navController.popBackStack() },
onNavigateToEdit = { linkId ->
navController.navigate(Screen.Edit.createRoute(linkId))
}
)
}
}
}