Skip to content

sync: cherry-pick bridge KYC state machine onto dev#1952

Merged
kushagrasarathe merged 4 commits into
devfrom
sync/cherry-pick-kyc-to-dev
May 7, 2026
Merged

sync: cherry-pick bridge KYC state machine onto dev#1952
kushagrasarathe merged 4 commits into
devfrom
sync/cherry-pick-kyc-to-dev

Conversation

@kushagrasarathe

Copy link
Copy Markdown
Contributor

Cherry-picked from PR #1943 (merged to main). No SimpleFi changes included. See #1943 for full details and testing.

Cherry-picked from PR #1943 (merged to main). Resolved conflicts:
- qr-pay: kept dev's useQrKycGate() without paymentProcessor arg (no SimpleFi)
- withdraw/bank: took our useBridgeTransferReadiness gate
- test: cast mock types for dev's stricter ProviderRejectionInfo
@vercel

vercel Bot commented May 7, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
peanut-wallet Ready Ready Preview, Comment May 7, 2026 5:52pm

Request Review

@coderabbitai

coderabbitai Bot commented May 7, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack
No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 84f91ce8-354c-405b-b839-bfe5b3c1c37a

📥 Commits

Reviewing files that changed from the base of the PR and between b954a92 and b55e5e1.

📒 Files selected for processing (2)
  • src/app/(mobile-ui)/add-money/[country]/bank/page.tsx
  • src/components/AddWithdraw/AddWithdrawCountriesList.tsx

Walkthrough

This PR adds a memoized bridge readiness hook (useBridgeTransferReadiness) and maps gate.type to ToS/KYC flows across pages and components; it centralizes KYC into the multi‑phase Sumsub flow, simplifies BridgeTosStep, extends InitiateKycModal, replaces Crisp chat with a support-modal context, and updates tests and an animations submodule.

Changes

Bridge Transfer Readiness & Multi-Phase KYC Refactor

Layer / File(s) Summary
Hook abstractions and data contracts
src/hooks/useBridgeTransferReadiness.ts, src/hooks/useBridgeTosStatus.ts, src/hooks/useProviderRejectionStatus.ts, src/hooks/useSumsubKycFlow.ts
Add useBridgeTransferReadiness and BridgeGateAction plus helpers getKycModalVariant()/getGateProviderMessage(); update TOS detection and provider-rejection messaging; add session-init guard and cross-region restoration in Sumsub flow.
Modal component updates
src/components/Kyc/InitiateKycModal.tsx, src/components/Kyc/BridgeTosStep.tsx
Expand InitiateKycModal props (onContactSupport, isLoading, error) and variant options; refactor CTA logic. Simplify BridgeTosStep by removing Capacitor/polling and consolidating iframe/confirmation UI.
Bank onramp/offramp pages gated by readiness
src/app/(mobile-ui)/add-money/[country]/bank/page.tsx, src/app/(mobile-ui)/withdraw/[country]/bank/page.tsx
Pages now use useBridgeTransferReadiness and branch on gate.type: accept_tosguardWithTos(), non-ready → open KYC modal, ready → proceed. KYC verify handlers route to self-heal for fixable_rejection or handleInitiateKyc with enrollment flag.
QR Pay page multi-phase KYC wiring
src/app/(mobile-ui)/qr-pay/page.tsx
Replace single-phase KYC hook with useMultiPhaseKycFlow, expose KYC approval flags, route CTAs to sumsubFlow handlers, and render SumsubKycModals.
Component integration with gate-based flows
src/components/AddWithdraw/AddWithdrawCountriesList.tsx, src/components/Claim/Link/views/BankFlowManager.view.tsx, src/components/AddWithdraw/DynamicBankAccountForm.tsx
Integrate readiness gating: form/offramp flows re-fetch user then run TOS guard or show KYC modal per gate; add BridgeTosStep; DynamicBankAccountForm.onSuccess return includes optional silent to suppress visible errors; navigation uses direct router.push.
Support modal context integration
src/components/Home/ActivationCTAs.tsx, src/components/Kyc/states/KycProviderRejection.tsx, src/components/Profile/views/RegionsVerification.view.tsx
Replace window.$crisp chat calls with useModalsContext setIsSupportModalOpen(true) for support contact flows.
Tests / Mocks
src/hooks/__tests__/useBridgeTransferReadiness.test.ts, src/app/(mobile-ui)/add-money/__tests__/add-money-states.test.tsx, src/app/(mobile-ui)/qr-pay/__tests__/qr-pay-states.test.tsx
Add/adjust tests validating gate selection and helper mapping; update mocks to stub gate values and multi-phase KYC/modal behavior.
Dependencies and submodules
src/assets/animations
Updated animations submodule commit.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 55.56% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title 'sync: cherry-pick bridge KYC state machine onto dev' accurately describes the main objective—syncing a cherry-picked KYC state machine feature from another PR to the dev branch.
Description check ✅ Passed The description clearly states the PR is a cherry-pick from PR #1943 with no SimpleFi changes, and references that PR for details, which is relevant to the changeset.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

github-actions Bot commented May 7, 2026

Copy link
Copy Markdown
Contributor

Code-analysis diff

Painscore total: 5773.3 → 5782.85 (+9.55)
Findings: +7 net (+112 new, -105 resolved)

🆕 New findings (112)

  • critical complexity — src/app/(mobile-ui)/qr-pay/page.tsx — CC 260, MI 54.07, SLOC 841
  • critical complexity — src/components/AddWithdraw/DynamicBankAccountForm.tsx — CC 134, MI 54.23, SLOC 380
  • critical complexity — src/components/AddWithdraw/AddWithdrawCountriesList.tsx — CC 101, MI 57.17, SLOC 291
  • critical complexity — src/components/Claim/Link/views/BankFlowManager.view.tsx — CC 94, MI 47.93, SLOC 375
  • critical complexity — src/app/(mobile-ui)/withdraw/[country]/bank/page.tsx — CC 87, MI 52.05, SLOC 302
  • critical complexity — src/app/(mobile-ui)/add-money/[country]/bank/page.tsx — CC 84, MI 57.68, SLOC 299
  • critical method-complexity — src/app/(mobile-ui)/qr-pay/page.tsx:72 — QRPayPage CC 70 SLOC 304
  • critical complexity — src/hooks/useSumsubKycFlow.ts — CC 67, MI 54.52, SLOC 277
  • critical complexity — src/components/Profile/views/RegionsVerification.view.tsx — CC 51, MI 61.98, SLOC 134
  • high hotspot — src/app/(mobile-ui)/qr-pay/page.tsx — 91 commits, +1186/-1162 lines since 6 months ago
  • high hotspot — src/app/(mobile-ui)/add-money/[country]/bank/page.tsx — 38 commits, +439/-373 lines since 6 months ago
  • high complexity — src/hooks/useProviderRejectionStatus.ts — CC 36, MI 58.19, SLOC 123
  • high method-complexity — src/components/AddWithdraw/DynamicBankAccountForm.tsx:151 — CC 35 SLOC 114
  • high method-complexity — src/components/AddWithdraw/DynamicBankAccountForm.tsx:70 — CC 34 SLOC 152
  • high method-complexity — src/components/Claim/Link/views/BankFlowManager.view.tsx:253 — CC 32 SLOC 104
  • medium react-long-component — src/app/(mobile-ui)/qr-pay/page.tsx:72 — QRPayPage is 1302 lines — split it
  • medium react-long-component — src/app/(mobile-ui)/withdraw/[country]/bank/page.tsx:54 — WithdrawBankPage is 446 lines — split it
  • medium react-long-component — src/app/(mobile-ui)/add-money/[country]/bank/page.tsx:47 — OnrampBankPage is 400 lines — split it
  • medium high-mdd — src/app/(mobile-ui)/qr-pay/page.tsx:72 — QRPayPage: MDD 315.4 (uses across many lines from declarations)
  • medium high-mdd — src/app/(mobile-ui)/add-money/[country]/bank/page.tsx:47 — OnrampBankPage: MDD 123.7 (uses across many lines from declarations)

…and 92 more.

✅ Resolved (105)

  • src/app/(mobile-ui)/qr-pay/page.tsx — CC 259, MI 54.12, SLOC 838
  • src/components/AddWithdraw/DynamicBankAccountForm.tsx — CC 133, MI 54.27, SLOC 379
  • src/components/AddWithdraw/AddWithdrawCountriesList.tsx — CC 98, MI 56.48, SLOC 272
  • src/app/(mobile-ui)/add-money/[country]/bank/page.tsx — CC 90, MI 56.71, SLOC 298
  • src/app/(mobile-ui)/withdraw/[country]/bank/page.tsx — CC 85, MI 51.75, SLOC 293
  • src/components/Claim/Link/views/BankFlowManager.view.tsx — CC 84, MI 46.06, SLOC 333
  • src/app/(mobile-ui)/qr-pay/page.tsx:70 — QRPayPage CC 69 SLOC 301
  • src/hooks/useSumsubKycFlow.ts — CC 63, MI 54.9, SLOC 270
  • src/components/Profile/views/RegionsVerification.view.tsx — CC 53, MI 62.01, SLOC 132
  • src/app/(mobile-ui)/qr-pay/page.tsx — 90 commits, +1168/-1143 lines since 6 months ago
  • src/app/(mobile-ui)/add-money/[country]/bank/page.tsx — 36 commits, +402/-331 lines since 6 months ago
  • src/hooks/useProviderRejectionStatus.ts — CC 35, MI 58.46, SLOC 120
  • src/components/AddWithdraw/DynamicBankAccountForm.tsx:67 — CC 34 SLOC 152
  • src/components/AddWithdraw/DynamicBankAccountForm.tsx:148 — CC 34 SLOC 113
  • src/components/Claim/Link/views/BankFlowManager.view.tsx:231 — CC 32 SLOC 101
  • src/app/(mobile-ui)/add-money/[country]/bank/page.tsx:43 — OnrampBankPage CC 31 SLOC 143
  • src/app/(mobile-ui)/qr-pay/page.tsx:70 — QRPayPage is 1305 lines — split it
  • src/app/(mobile-ui)/withdraw/[country]/bank/page.tsx:49 — WithdrawBankPage is 430 lines — split it
  • src/app/(mobile-ui)/add-money/[country]/bank/page.tsx:43 — OnrampBankPage is 409 lines — split it
  • src/app/(mobile-ui)/qr-pay/page.tsx:70 — QRPayPage: MDD 313.1 (uses across many lines from declarations)

…and 85 more.

📈 Painscore deltas (top movers)

File Before After Δ
src/hooks/useBridgeTransferReadiness.ts 0.0 5.8 +5.8
src/app/(mobile-ui)/withdraw/[country]/bank/page.tsx 15.0 17.2 +2.2
src/app/(mobile-ui)/add-money/[country]/bank/page.tsx 17.6 19.0 +1.4
src/components/AddWithdraw/AddWithdrawCountriesList.tsx 13.7 15.0 +1.3
src/components/Kyc/InitiateKycModal.tsx 5.7 7.0 +1.3
src/hooks/useBridgeTosStatus.ts 4.7 5.5 +0.8
src/components/Kyc/BridgeTosStep.tsx 8.4 9.1 +0.7
src/components/Claim/Link/views/BankFlowManager.view.tsx 15.5 16.1 +0.6

@coderabbitai coderabbitai Bot added the enhancement New feature or request label May 7, 2026
@github-actions

github-actions Bot commented May 7, 2026

Copy link
Copy Markdown
Contributor

🧪 UI test report — ✅ all green

Suites

  • unit: 940 ran, 0 failed, 0 skipped, 12.6s

📊 Coverage (unit)

metric %
statements 45.0%
branches 24.0%
functions 24.1%
lines 44.6%
⏱ 10 slowest test cases
time test
0.3s src/app/actions/__tests__/api-headers-extended.test.ts › should not include apiKey in updateUserById body
0.3s src/app/actions/__tests__/api-headers.test.ts › should include Content-Type in updateUserById
0.1s src/components/Global/GeneralRecipientInput/__tests__/GeneralRecipientInput.test.tsx › should handle too long for US account
0.1s src/components/Global/GeneralRecipientInput/__tests__/GeneralRecipientInput.test.tsx › should handle valid 9-digit US account
0.1s src/components/Global/GeneralRecipientInput/__tests__/GeneralRecipientInput.test.tsx › should handle invalid ETH address (missing 0x prefix)
0.1s src/components/Global/GeneralRecipientInput/__tests__/GeneralRecipientInput.test.tsx › should handle valid Italian IBAN
0.1s src/components/Global/GeneralRecipientInput/__tests__/GeneralRecipientInput.test.tsx › should handle valid ENS name
0.1s src/components/Global/GeneralRecipientInput/__tests__/GeneralRecipientInput.test.tsx › should handle valid German IBAN
0.1s src/components/Global/GeneralRecipientInput/__tests__/GeneralRecipientInput.test.tsx › should handle valid UK IBAN with spaces
0.1s src/components/Global/GeneralRecipientInput/__tests__/GeneralRecipientInput.test.tsx › should handle invalid ETH address (invalid characters)
📍 Inline annotations are in the **Unit test report** check above. Coverage artifact: `coverage-unit`. Generated by `.github/workflows/tests.yml`.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
src/components/Claim/Link/views/BankFlowManager.view.tsx (1)

187-189: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Align this approval check with the new readiness contract.

useBridgeTransferReadiness() now treats Bridge under_review as ready, but this branch still hard-requires bridgeKycStatus === 'approved'. Users who pass the gate as ready will still fail here with "User not KYC approved" when they confirm the claim. This check needs to match the state machine, or the new gate will dead-end legitimate flows.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/Claim/Link/views/BankFlowManager.view.tsx` around lines 187 -
189, The hard check throwing "User not KYC approved" in the confirmation path
(the branch that inspects userForOfframp.bridgeKycStatus) must be aligned with
useBridgeTransferReadiness(); either consult the readiness result instead of
directly requiring 'approved', or expand the allowed statuses to include
'under_review' so the branch matches the readiness contract. Update the code in
BankFlowManager.view.tsx to replace the direct equality check on
userForOfframp.bridgeKycStatus (and the throw) with a readiness check using the
value returned by useBridgeTransferReadiness() or by allowing both 'approved'
and 'under_review' before throwing; keep the bridgeCustomerId check as-is.
src/app/(mobile-ui)/add-money/[country]/bank/page.tsx (1)

431-436: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Resume at the warning step after ToS, not at onramp creation.

handleAmountContinue() normally opens OnrampConfirmationModal, but the ToS completion path jumps straight to handleWarningConfirm(). That skips the risk acknowledgment modal and the DEPOSIT_AMOUNT_ENTERED event for users who had to accept ToS first. After ToS succeeds, resume from the warning step instead of creating the onramp immediately.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/app/`(mobile-ui)/add-money/[country]/bank/page.tsx around lines 431 -
436, The issue is that after the ToS step completes, the code jumps directly to
handleWarningConfirm(), skipping the warning step and the DEPOSIT_AMOUNT_ENTERED
event normally triggered by handleAmountContinue(). To fix this, modify the
onComplete handler in BridgeTosStep to call handleAmountContinue() instead of
handleWarningConfirm() so that the flow properly resumes from the warning step
after ToS acceptance.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/assets/animations`:
- Line 1: The repository references a non-existent submodule commit (SHA
d475d960d16a6009c2db3c5e35ef9aa31179ebfd) on the remote
https://github.com/peanutprotocol/peanut-animations.git; locate the commit
update that introduced this gitlink, verify the intended reachable commit on
that remote (or the correct tag/branch), update the submodule reference to a
valid commit (or point it to the correct branch/tag), amend the change that set
the bad SHA so the tree contains the reachable commit, and then refresh
submodules locally (sync/init/update) before pushing the corrected commit.

In `@src/components/Claim/Link/views/BankFlowManager.view.tsx`:
- Around line 510-515: The onComplete for BridgeTosStep should not re-call the
gated callback created while gate.type === 'accept_tos'; instead, after
hideTos() either invoke an ungated helper that performs the real offramp work
(e.g., createOfframpAndClaimUngated) or wait until the refreshed gate state is
ready (check gate.type === 'ready') and then call handleCreateOfframpAndClaim;
update the BridgeTosStep onComplete to call hideTos() and then trigger the
ungated helper or a gate-ready watcher rather than directly calling
handleCreateOfframpAndClaim(localBankDetails).
- Around line 518-533: The onVerify async handler of InitiateKycModal closes the
modal using a potentially stale sumsubFlow.showWrapper value; instead remove the
in-handler close logic and add a useEffect that watches sumsubFlow.showWrapper
to call setShowKycModal(false) when showWrapper becomes true. Specifically,
update the onVerify callback in the InitiateKycModal props (where
handleInitiateKyc and handleSelfHealResubmit are invoked) to only trigger the
flows, and create a useEffect that has sumsubFlow.showWrapper in its dependency
array and closes the modal (via setShowKycModal) when that value transitions to
true. Ensure this keeps error-case behavior (do not close on error) by relying
on the actual runtime showWrapper state.

In `@src/components/Kyc/BridgeTosStep.tsx`:
- Around line 83-110: The modal is being hidden during confirmation because its
visible prop uses "!isConfirming"; change the ActionModal visibility to remain
mounted when isConfirming is true (e.g., use "visible && !showIframe" instead of
including "!isConfirming"), and update the CTAs and close behavior to reflect a
pending state: disable the primary and secondary buttons and show a loading
label when isConfirming, prevent onClose (or make it a no-op) while confirming,
and ensure handleAcceptTerms and isLoading/isConfirming drive the button
text/disabled state so users see a disabled/loading modal during
confirmBridgeTosAndAwaitRails; look for ActionModal, visible, showIframe,
isConfirming, handleAcceptTerms, and the ctas array to make these changes.

---

Outside diff comments:
In `@src/app/`(mobile-ui)/add-money/[country]/bank/page.tsx:
- Around line 431-436: The issue is that after the ToS step completes, the code
jumps directly to handleWarningConfirm(), skipping the warning step and the
DEPOSIT_AMOUNT_ENTERED event normally triggered by handleAmountContinue(). To
fix this, modify the onComplete handler in BridgeTosStep to call
handleAmountContinue() instead of handleWarningConfirm() so that the flow
properly resumes from the warning step after ToS acceptance.

In `@src/components/Claim/Link/views/BankFlowManager.view.tsx`:
- Around line 187-189: The hard check throwing "User not KYC approved" in the
confirmation path (the branch that inspects userForOfframp.bridgeKycStatus) must
be aligned with useBridgeTransferReadiness(); either consult the readiness
result instead of directly requiring 'approved', or expand the allowed statuses
to include 'under_review' so the branch matches the readiness contract. Update
the code in BankFlowManager.view.tsx to replace the direct equality check on
userForOfframp.bridgeKycStatus (and the throw) with a readiness check using the
value returned by useBridgeTransferReadiness() or by allowing both 'approved'
and 'under_review' before throwing; keep the bridgeCustomerId check as-is.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f25375aa-f677-4d62-91e8-275977580d43

📥 Commits

Reviewing files that changed from the base of the PR and between 994e22e and a806512.

📒 Files selected for processing (17)
  • src/app/(mobile-ui)/add-money/[country]/bank/page.tsx
  • src/app/(mobile-ui)/qr-pay/page.tsx
  • src/app/(mobile-ui)/withdraw/[country]/bank/page.tsx
  • src/assets/animations
  • src/components/AddWithdraw/AddWithdrawCountriesList.tsx
  • src/components/AddWithdraw/DynamicBankAccountForm.tsx
  • src/components/Claim/Link/views/BankFlowManager.view.tsx
  • src/components/Home/ActivationCTAs.tsx
  • src/components/Kyc/BridgeTosStep.tsx
  • src/components/Kyc/InitiateKycModal.tsx
  • src/components/Kyc/states/KycProviderRejection.tsx
  • src/components/Profile/views/RegionsVerification.view.tsx
  • src/hooks/__tests__/useBridgeTransferReadiness.test.ts
  • src/hooks/useBridgeTosStatus.ts
  • src/hooks/useBridgeTransferReadiness.ts
  • src/hooks/useProviderRejectionStatus.ts
  • src/hooks/useSumsubKycFlow.ts

Comment thread src/assets/animations Outdated
Comment thread src/components/Claim/Link/views/BankFlowManager.view.tsx
Comment thread src/components/Claim/Link/views/BankFlowManager.view.tsx
Comment thread src/components/Kyc/BridgeTosStep.tsx

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/app/`(mobile-ui)/add-money/__tests__/add-money-states.test.tsx:
- Around line 135-143: Remove the duplicate jest.mock for the
useMultiPhaseKycFlow hook (the earlier mock that shadowed the later one) and
consolidate all expected properties into the single mock used for tests: update
the useMultiPhaseKycFlow mockReturnValue to include isLoading, error,
showWrapper, handleInitiateKyc, and handleSelfHealResubmit (ensure the latter
two are jest.fn() where needed) so no fields are lost or defined twice; keep
only the single jest.mock for '@/hooks/useMultiPhaseKycFlow' and ensure all
tests reference that unified mock.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 11c247fc-b8dc-4a3e-aeae-70a6585dace7

📥 Commits

Reviewing files that changed from the base of the PR and between a806512 and b954a92.

📒 Files selected for processing (2)
  • src/app/(mobile-ui)/add-money/__tests__/add-money-states.test.tsx
  • src/app/(mobile-ui)/qr-pay/__tests__/qr-pay-states.test.tsx
✅ Files skipped from review due to trivial changes (1)
  • src/app/(mobile-ui)/qr-pay/tests/qr-pay-states.test.tsx

Comment thread src/app/(mobile-ui)/add-money/__tests__/add-money-states.test.tsx
the cherry-pick from main stripped dev-only capacitor/native routing
helpers (addMoneyCountryUrl, withdrawBankUrl, rewriteMethodPath,
isCapacitor workaround, query param fallbacks) because main never
had native app routing work. restores them while keeping all KYC
gate fixes from the hotfix intact.
d475d960d no longer exists on peanut-animations remote (force-pushed
or deleted). revert to dev's working pointer 7ebbc48 (decomplexify).
@kushagrasarathe kushagrasarathe merged commit 09eb992 into dev May 7, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant