Skip to content

feat(deeplinks): open a tab from a link and use the flipcash:// scheme - #1918

Merged
bmc08gt merged 2 commits into
code/cashfrom
feat/tab-deeplinks
Oct 31, 2026
Merged

bmc08gt merged 2 commits into
code/cashfrom
feat/tab-deeplinks

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Oct 31, 2026

Copy link
Copy Markdown
Collaborator

Adds tab links and swaps the custom scheme from codewallet:// to flipcash://.

  • https://app.flipcash.com/tab/{scan|chats|wallet|you} and flipcash://tab/{same} switch to that tab. Names match case-insensitively. An unknown name, a bare /tab, or extra segments does nothing, and tab is now in reservedProfilePaths so it is never read as a handle. Logged-out users go to onboarding first, as with other links. The manifest's verified app.flipcash.com filter gains /tab/.*.
  • flipcash://{route}/... puts the route in the host slot, as on iOS. The router rewrites it onto the app origin before classifying, so every existing route (login, c/cash, token, verify, chat/..., chat/invite, tip/...) behaves like its https link. The manifest filter is scheme-only.
  • codewallet:// is removed (both manifest filters).
  • Uri.fragments now also splits on #, so iOS-style login#e=... and c#e=... parse. Before, only Android's login/e=... form did, over https too.
  • DeeplinkType.Tab is not scannable, so a QR code cannot switch tabs.
URL Result
https://app.flipcash.com/tab/scan, /chats, /wallet, /you that tab
https://app.flipcash.com/tab/SCAN Scan tab
flipcash://tab/scan, /chats, /wallet, /you same tabs
https://app.flipcash.com/tab/bogus no action
https://app.flipcash.com/tab no action, not a profile
flipcash://chat/{id}, token/{mint}, login#e=... same type as the https link
codewallet://send.flipcash.com/c/abc not handled

iOS-only routes flipcash://give, balance and discover have no Android equivalent and are not handled.

The branch also carries a separate commit removing a duplicate title_splitBetween string that code/cash has at 5795604 (#1916/#1917), which fails convertXmlValueResourcesForCommonMain. Drop it if that lands elsewhere first.

On an emulator, cold and warm launches of flipcash://tab/you, https://app.flipcash.com/tab/chats (cold), https://app.flipcash.com/tab/wallet and flipcash://tab/scan (warm) landed on the matching tab.

Adds app.flipcash.com/tab/{scan|chats|wallet|you} and flipcash://tab/{name},
matched case-insensitively; an unknown name or a bare /tab does nothing and
`tab` is reserved so it never reads as a profile handle.

flipcash://{route}/... is rewritten onto the app origin so every existing
route classifies the same as its https link. codewallet:// is removed.
Uri.fragments also splits on '#', so iOS-style login#e=... parses.
@bmc08gt bmc08gt self-assigned this Oct 31, 2026
@github-actions github-actions Bot added type: feature New functionality area: scanner QR/Kikcode scanning, camera area: deeplinks Deep link handling, URL routing, and link parsing and removed type: feature New functionality labels Oct 31, 2026
@bmc08gt
bmc08gt merged commit 6ead34c into code/cash Oct 31, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: deeplinks Deep link handling, URL routing, and link parsing area: scanner QR/Kikcode scanning, camera

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant