feat(platform-wallet)!: invitation links are AppsFlyer applinks only - #4285
Draft
shumkov wants to merge 2 commits into
Draft
feat(platform-wallet)!: invitation links are AppsFlyer applinks only#4285shumkov wants to merge 2 commits into
shumkov wants to merge 2 commits into
Conversation
Owner decision: the AppsFlyer applink form (https://invitations.dashpay.io/applink?...) is the single standard invitation transport, matching the production wallets — the interim dashpay://invite custom scheme (an AI-introduced divergence) is retired end-to-end, on iOS and Android alike: - Shared codec (rs-platform-wallet crypto/invitation.rs): emit flips to the applink prefix; parse accepts ONLY the applink host/path — the custom scheme is rejected (new regression pin emits_the_applink_transport_and_rejects_the_retired_custom_scheme). Both example apps pick this up automatically via the shared codec. - Kotlin app: the dashpay:// intent-filter and MainActivity scheme branch are removed (applink filter only, still unverified pending assetlinks.json); claim-sheet placeholder + docs updated. - Until the domain hosts the association files + a fallback page, taps without the app fall to the browser — the host-side checklist for the infra team is #4212 (supersedes closed #4096); the client-side verification flips are one-liners once it lands. Breaking for link producers/consumers of the previous scheme form; the on-chain semantics are unchanged. platform-wallet invitation tests 40/40, FFI 12/12, JVM suites + :app:assembleDebug green. The Android .so requires a rebuild before the next emulator run. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…rt only Completes the AppsFlyer-only decision on the iOS side: the CFBundleURLTypes dashpay scheme registration is removed (Info.plist now documents the Universal-Links path gated on #4212), .onOpenURL matches the https applink host/path (fires once the AASA verification lands; until then links are claimed via paste/QR), and UI copy / KDoc references to the retired scheme are updated. Legacy dash-wallet keeps dashpay://invite only as its INTERNAL deep-link representation (InvitationLinkData.URI_PREFIX); its outward share link has always been the applink form — which is now the single transport everywhere. String/plist/guard-level changes only; not xcodebuild-verified in this session (Android-focused environment) — flagging for the iOS CI lane. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Contributor
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
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.
Issue being fixed or feature implemented
Owner decision: AppsFlyer applinks are the only invitation transport, matching the production wallets. The
dashpay://invitecustom scheme — which legacy dash-wallet uses only as its internal deep-link representation (InvitationLinkData.URI_PREFIX); its outward share link has always been the applink form — was promoted to the emitted transport during the iOS port as a workaround while AppsFlyer access was blocked. This retires it end-to-end.Stacked on #4284 (the Kotlin invitations port). Domain-side infra (association files + fallback) is tracked for the infra team in #4212.
What was done?
rs-platform-wallet/crypto/invitation.rs, changes iOS and Android alike): emit flips tohttps://invitations.dashpay.io/applink?…; parse accepts only that transport — the custom scheme is rejected, pinned by a new regression test.dashpay://intent-filter and MainActivity scheme branch removed; the applink filter remains (unverified until the domain servesassetlinks.json— flipandroid:autoVerify="true"when infra: host association files + fallback on invitations.dashpay.io for DIP-13 invitation applinks #4212 lands); UI copy/tests updated.CFBundleURLTypesscheme registration removed;.onOpenURLmatches the applink host/path (fires once Universal Links verify via the AASA from infra: host association files + fallback on invitations.dashpay.io for DIP-13 invitation applinks #4212); UI copy/KDocs swept.How Has This Been Tested?
platform-walletinvitation tests 40/40 (round-trips on the applink form + the scheme-retirement rejection pin); FFI marshaling tests 12/12; JVM suites +:app:assembleDebuggreen;build_android.sh --verifygreen on both ABIs.xcodebuildrun (string/plist/guard-level changes — relying on the iOS CI lane) and a funded create→claim round-trip on the new link form (the codec delta is the URI prefix only, fully unit-pinned; the funded loop was exercised pre-switch in feat(kotlin-sdk): DashPay invitations — create, claim, reclaim, persistence (DIP-13) #4284).Breaking Changes
dashpay://inviteform are no longer parsed; only the applink form is accepted. On-chain semantics, QR/paste claim flows, and the persisted invitation model are unchanged.assetlinks.json/apple-app-site-associationand a (non-logging — the query carries the one-time bearerpk) fallback page, freshly emitted links do not auto-open the apps: Android offers the chooser, iOS falls through to the browser. Claiming via paste/QR is unaffected.Checklist:
🤖 Generated with Claude Code