Added initial code for possible future deeplink nav support

This commit is contained in:
Arty Bishop committed 2026-06-07 16:01:23 +01:00
1 parent e5033cb2e9
commit ec1a55c93d
4 files changed
+125 -4

No files matched your search

@@ -38,3 +38,33 @@ sealed class Screen(val iconResId: Int, val titleResId: Int) : NavKey {
@Serializable
data object Settings : Screen(R.drawable.ic_settings, R.string.nav_prefs)
}
@Serializable
data object RadarDestination : NavKey
interface IDeeplinkMatcher {
fun match(deeplink: String): NavKey?
}
object PassDetailsMatcher : IDeeplinkMatcher {
val passDetailsRegex = """https://github.com/rt-bishop/Look4Sat/passes/(.*)""".toRegex()
override fun match(deeplink: String): NavKey? {
val passMatch = passDetailsRegex.find(deeplink)
passMatch?.let { match ->
val passId = match.groupValues[1]
if (passId.isNotEmpty()) return RadarDestination
}
return null
}
}
class DeeplinkResolver(private val fallbackDestination: NavKey = Screen.Passes) {
private val matchers: List<IDeeplinkMatcher> = listOf(PassDetailsMatcher)
fun resolve(deeplink: String): NavKey {
matchers.forEach { it.match(deeplink)?.let { match -> return match } }
return fallbackDestination
}
}