DeepLinkRouter

Deep-link router for KMP Navigation 3.

Maps an incoming OS intent URI to the back stack it should open, so a link into a detail view lands with its logical "up" hierarchy already populated. Every supported link is a UriDeepLinkMatcher pattern whose placeholders decode straight into the target route's fields, wrapped with withBackStack to synthesize the parents.

Path literals match case-insensitively. The scheme and host are not part of the contract: meshtastic://meshtastic and http(s)://meshtastic.org links are routed identically, because the OS intent-filter already decides which hosts reach the app.

Supports both legacy query-parameter URIs and modern RESTful path patterns:

  • /nodes -> List of all nodes

  • /nodes/{destNum} -> Node details

  • /nodes/{destNum}/{metric} -> Specific node metric (e.g., /nodes/1234/device-metrics)

  • /messages -> Conversation list

  • /messages/{contactKey} -> Specific conversation

  • /settings -> Settings root

  • /settings/{destNum}/{page} -> Specific settings page for a node

  • /wifi-provision -> WiFi provisioning screen

  • /wifi-provision?address={mac} -> WiFi provisioning targeting a specific device MAC address

  • /connections?address={prefixedAddress} -> Connections screen, auto-connecting to a prefixed device address (e.g. t192.168.1.1:4403 for TCP, xAA:BB:CC:DD:EE:FF for BLE) — lets external tooling trigger a connection. address=n disconnects instead of connecting.

Properties

Link copied to clipboard

Canonical set of top-level path segments this router dispatches on. route refuses segments outside this set, so a new pattern stays dead (and its feature tests fail) until its segment is added here. Every entry must also be declared as an android:pathPrefix in the https App Links intent-filter in androidApp/src/main/AndroidManifest.xml — DeepLinkManifestConsistencyTest (androidApp unit tests) enforces that directly from this set.

Functions

Link copied to clipboard
fun route(uri: CommonUri): List<NavKey>?

Synthesizes a backstack list from an incoming Meshtastic URI.