fix(deeplinks): route a jump link that carries its own path - #1367
Merged
Conversation
…verlay The prompt was drawn by NavMessagingEntryDecorator, which sat inside NavBillOverlayEntryDecorator; the outermost decorator paints its overlay last, so the tip card always covered the prompt it had just raised. Moving the messaging decorator outermost puts a prompt that has to be answered above everything the entry draws. The in-chat send raised a red alert for the same condition. It is the same situation the tip card handles as info with an Add Money action, so it now does too.
The website's tip interstitial sends "Open in Flipcash" to
jump.flipcash.com/tip/{id}, with no `#source=` fragment. classifyOrThrow
read the jump host as a wrapper and nothing else, so unwrapJumpTarget
returned null and the link fell through to unrouted() — which hands only
flipcash.com back to the browser and returns None for every other host.
The tap brought the app to the front and nothing happened.
Classify a jump link by its own path when there is no fragment to
unwrap. The redirector is claimed whole by the manifest and mirrors the
app's path space, so /tip/{id} resolves the same as it does on
app.flipcash.com. A `#source=` fragment still takes precedence, and
isProfileLink stays host-gated to flipcash.com, so the redirector does
not start claiming handles.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two fixes found while testing #1366 after it merged.
A tip card link from the website opened the app and did nothing
"Open in Flipcash" on
flipcash.com/<handle>does not navigate to the URL in the address bar. The page's script redirects to a redirector:classifyOrThrowreadjump.flipcash.comas a wrapper and nothing else, so a link with no#source=fragment leftunwrapJumpTarget()returning null and fell through tounrouted()— which returnsNonefor every host but the bareflipcash.com. The tap brought the app to the front and nothing happened, from anywhere in the app.A jump link is now classified by its own path when there is no fragment to unwrap. The redirector is claimed whole by the manifest and mirrors the app's path space, so
/tip/{id}resolves the same as it does onapp.flipcash.com. A#source=fragment still takes precedence, andisProfileLinkstays host-gated toflipcash.com, so the redirector does not start claiming handles.DeepLinkControlleron iOS is described as the mirror of this branch, so it likely drops the same URL.The insufficient-balance prompt drew behind the tip modal
NavMessagingEntryDecoratorwas nested insideNavBillOverlayEntryDecorator, and the outermost decorator paints last, so the bill overlay covered any prompt raised from it. The two are swapped: a bottom bar message is a prompt that has to be answered, so it sits above what the entry draws.The in-chat over-balance path also raised a red destructive alert. It now raises the same info prompt the tip card uses, with an "Add Money" action —
presentAddMoneystill covers the empty account, which has nothing to enter a smaller amount than.