tangem-app-android-audited/.claude/docs/navigation-graph.md
2026-06-19 12:24:23 +02:00

18 KiB

Navigation Graph

Complete navigation map of the app based on AppRoute sealed class and feature-internal routes.

1. All AppRoute Paths

58 top-level routes defined in common/routing/src/main/kotlin/com/tangem/common/routing/AppRoute.kt.

# Route Path Description
1 Initial /initial App entry point (splash)
2 Home /home Stories/home screen with launch mode
3 Welcome /welcome Welcome screen for returning users
4 Disclaimer /disclaimer Terms of service / disclaimer
5 Wallet /wallet Main wallet portfolio screen
6 CurrencyDetails /currency_details/{walletId}/{currencyId} Token/coin detail screen
7 Send /send/{walletId}/{currencyId} Send cryptocurrency
8 Details /details/{walletId} Wallet details / settings hub
9 DetailsSecurity /details/security Security mode settings
10 Usedesk /usedesk/{walletId} Customer support (Usedesk)
11 CardSettings /card_settings/{walletId} Card-specific settings
12 AppSettings /app_settings Global app settings
13 ResetToFactory /reset_to_factory/{walletId}/{cardId}/... Factory reset flow
14 AccessCodeRecovery /access_code_recovery Access code recovery
15 ManageTokens {source}/manage_tokens/{accountId} Add/remove tokens in portfolio
16 ChooseManagedTokens /{source}/choose_managed_tokens/... Token chooser for send-via-swap
17 WalletConnectSessions /wallet_connect_sessions WalletConnect sessions list
18 QrScanning /{source}/qr_scanning QR code scanner
19 ReferralProgram /referral_program Referral program
20 Swap /swap/{fromId}/{toId}/{walletId}/... Token swap screen
21 AppCurrencySelector /app_currency_selector Fiat currency selector
22 Staking /staking/{walletId}/{currencyId}/{integrationId} Staking screen
23 PushNotification /push_notification Push notification opt-in
24 WalletSettings /wallet_settings/{walletId} Per-wallet settings
25 WalletBackup /wallet_backup/{walletId}/{coldOption} Wallet backup options
26 WalletHardwareBackup /wallet_hardware_backup/{walletId} Hardware wallet backup
27 Markets /markets Markets token list
28 MarketsTokenDetails /markets_token_details/{tokenId}/{showPortfolio} Market token detail
29 Onramp /onramp/{walletId}/{symbol} Buy crypto (onramp)
30 OnrampSuccess /onramp/success/{txId} Onramp success screen
31 BuyCrypto /buy_crypto/{walletId} Buy crypto token selector
32 SellCrypto /sell_crypto/{walletId} Sell crypto token selector
33 Onboarding /onboarding_v2/{mode} Onboarding flow (v2)
34 Stories /stories$storyId Stories / promotional content
35 NFT /nft/{walletId} NFT collection list
36 NFTSend /send/nft/{walletId}/{collection}/{assetId} Send NFT
37 CreateWalletSelection /create_wallet_selection Choose wallet creation type
38 CreateWalletStart /create_wallet_start Wallet creation intro (cold/hot)
39 CreateHardwareWallet /create_hardware_wallet Create hardware wallet flow
40 CreateMobileWallet /create_mobile_wallet Create mobile (hot) wallet
41 UpgradeWallet /upgrade_wallet/{walletId} Upgrade hot wallet to hardware
42 AddExistingWallet /add_existing_wallet Import existing wallet
43 WalletActivation /wallet_activation/{walletId} Activate wallet post-creation
44 CreateWalletBackup /create_wallet_backup/{walletId} Backup flow for created wallet
45 UpdateAccessCode /update_access_code/{walletId} Change access code
46 ViewPhrase /view_seed_phrase/{walletId} View recovery phrase
47 ForgetWallet /forget_wallet/{walletId} Remove wallet from app
48 SendEntryPoint /send_entry_point/{walletId}/{currencyId} Send entry with swap option
49 CreateAccount /create_account/{walletId} Create new account
50 EditAccount /edit_account/{accountId} Edit account
51 AccountDetails /account_details/{accountId} Account details screen
52 ArchivedAccountList /archived_account/{walletId} Archived accounts list
53 TangemPayDetails /tangem_pay_details/{walletId} Tangem Pay card details
54 TangemPayOnboarding /tangem_pay_onboarding/{mode} Tangem Pay onboarding
55 Kyc /kyc KYC verification
56 YieldSupplyEntry /yield_supply_entry/{walletId}/{symbol} Yield/supply entry point
57 NewsDetails /news_details/{newsId} News article detail

2. Navigation Edges

Each entry shows: Source route → target routes it can navigate to (via push or replaceAll).

Initial / Bootstrap

Source Target Method Trigger
Initial Home, Welcome, Disclaimer, Onboarding, etc. replaceAll App startup (DefaultRoutingComponent)

Home

Target Method Trigger
ManageTokens(STORIES) push After scan, manage tokens
CreateWalletStart push Create wallet from home
Wallet replaceAll After wallet saved / already saved

Welcome

Target Method Trigger
CreateWalletSelection push "Add new wallet" button
Home() replaceAll When wallets list becomes empty
Wallet replaceAll After scan / wallet unlock / biometric

Disclaimer

Target Method Trigger
PushNotification(Stories) push After accepting TOS (stories flow)
Home() replaceAll After accepting TOS (non-stories flow)

Wallet (main portfolio)

Target Method Trigger
Details push Open wallet details
ManageTokens(ACCOUNT) push Manage tokens for account
Onboarding push Continue backup / onboarding
CurrencyDetails push Tap on a token
Home push Open stories
NFT push Open NFT collection
TangemPayOnboarding push Tangem Pay banner
TangemPayDetails push Tangem Pay card details
YieldSupplyEntry push Yield supply action
QrScanning(MainScreen) push QR scanner
Send push Send from QR / action
WalletBackup push Backup warning banner

CurrencyDetails (token details)

Target Method Trigger
Onramp push Buy action
SendEntryPoint push Send action
Swap push Swap action
CurrencyDetails push Navigate to related token (from staking router)
Staking push Open staking (from token details router)

Details (wallet details hub)

Target Method Trigger
CreateWalletSelection push Add new wallet
WalletSettings push Open wallet settings
WalletConnectSessions push WalletConnect item
AppSettings push App settings item
Disclaimer(isTosAccepted=true) push View TOS
Usedesk push Customer support
TangemPayOnboarding(FromBannerInSettings) push Tangem Pay banner

WalletSettings

Target Method Trigger
ReferralProgram push Referral program
WalletHardwareBackup push Hardware backup
CardSettings push Card settings
ForgetWallet push Delete/forget wallet
ViewPhrase push View seed phrase
AccountDetails push Open account details
ArchivedAccountList push View archived accounts
CreateAccount push Create new account
Home() replaceAll After wallet deletion completes

WalletBackup

Target Method Trigger
WalletActivation push Start activation (no backup)
ViewPhrase push View phrase option
WalletHardwareBackup push Hardware backup option

WalletHardwareBackup

Target Method Trigger
CreateHardwareWallet push Create new hardware wallet
UpgradeWallet push Upgrade current hot wallet
CreateWalletBackup push Backup existing wallet

CreateWalletSelection

Target Method Trigger
CreateMobileWallet push Choose mobile wallet
CreateHardwareWallet push Choose hardware wallet

CreateWalletStart

Target Method Trigger
CreateMobileWallet push Create mobile wallet
Wallet replaceAll After wallet creation completes

CreateMobileWallet

Target Method Trigger
AddExistingWallet push Import existing wallet
Wallet replaceAll After creation completes

CreateHardwareWallet

Target Method Trigger
Wallet replaceAll After hardware wallet created

AddExistingWallet

Target Method Trigger
Wallet replaceAll After import completes

UpgradeWallet

Target Method Trigger
Onboarding(UpgradeHotWallet) push Start upgrade onboarding

CreateWalletBackup

Target Method Trigger
UpgradeWallet push After backup, continue to upgrade

AccountDetails

Target Method Trigger
EditAccount push Edit account

ForgetWallet

Target Method Trigger
Home() replaceAll After wallet forgotten

WalletConnectSessions

Target Method Trigger
QrScanning(WalletConnect) push Scan WC QR code

Onboarding

Target Method Trigger
Home() replaceAll Onboarding completed (no wallets)
Wallet replaceAll Onboarding completed (has wallets)

PushNotification

Target Method Trigger
Home() replaceAll After push notification opt-in (via nextRoute param)

Staking

Target Method Trigger
CurrencyDetails push Back to token details

TangemPayDetails

Target Method Trigger
Swap push Top up / withdraw via swap

NFT

Target Method Trigger
NFTSend push Send NFT

Send (notifications)

Target Method Trigger
CurrencyDetails push Navigate to fee token

Swap / BuyCrypto / SellCrypto

Target Method Trigger
Swap push After token selection (Swap)
Onramp push After token selection (BuyCrypto/SellCrypto)
Handler Target Route
OnrampDeepLinkHandler Processes onramp callback params
SellRedirectDeepLinkHandler Send (with sell redirect params)
BuyDeepLinkHandler BuyCrypto
SellDeepLinkHandler SellCrypto
SwapDeepLinkHandler Swap
ReferralDeepLinkHandler Referral handling
WalletDeepLinkHandler Wallet handling
TokenDetailsDeepLinkHandler CurrencyDetails
StakingDeepLinkHandler Staking
MarketsDeepLinkHandler Markets
MarketsTokenDetailDeepLinkHandler MarketsTokenDetails
WalletConnectDeepLinkHandler WalletConnect pairing
PromoDeeplinkHandler Promo handling
OnboardVisaDeepLinkHandler TangemPayOnboarding
NewsDetailsDeepLinkHandler NewsDetails

3. Nested Routes (Feature-Internal Navigation)

OnboardingRoute

File: features/onboarding-v2/impl/.../routing/OnboardingRoute.kt

Route Description
None Initial empty state
Note Single-card onboarding note
MultiWallet Multi-wallet onboarding (with seed phrase flow option)
Visa Visa card onboarding
Twins Twin cards onboarding
ManageTokens Token management during onboarding
AskBiometry Biometry setup prompt
Done Onboarding completion

WalletRoute

File: features/wallet/impl/.../navigation/WalletRoute.kt

Route Description
Wallet Main wallet view
OrganizeTokens Reorder tokens in portfolio

SendEntryRoute

File: features/send-v2/api/.../entry/SendEntryRoute.kt

Route Description
Send Direct send flow
SendWithSwap Send with swap option
ChooseToken Token chooser for send-via-swap

CommonSendRoute (Send internal)

Used internally by SendModel and NFTSendModel:

  • AmountDestinationConfirmConfirmSuccess
  • Edit mode: ConfirmDestination(edit) or Amount(edit)

FeeSelectorRoute (Send internal)

  • ChooseToken — select fee token
  • ChooseSpeed — select fee speed

WcInnerRoute (WalletConnect)

File: features/walletconnect/impl/.../routing/WcInnerRoute.kt

Route Description
Method.Send WC send transaction
Method.SignMessage WC sign message
Method.AddNetwork WC add network
Method.SwitchNetwork WC switch network
Pair WC pairing request
UnsupportedMethodAlert Unsupported method alert
WcDappDisconnected DApp disconnected alert
TangemUnsupportedNetwork Unsupported network alert
RequiredAddNetwork Required network add
RequiredReconnectWithNetwork Required network reconnect

TangemPayDetailsInnerRoute

File: features/tangempay/details/impl/.../navigation/TangemPayDetailsInnerRoute.kt

Route Description
Details Main details view
ChangePIN Change PIN flow
ChangePINSuccess PIN change success
AddToWallet Add card to device wallet

Transitions: DetailsChangePINChangePINSuccess, DetailsAddToWallet

FeedEntryRoute

File: features/feed/api/.../components/FeedEntryRoute.kt

Route Description
MarketTokenDetails Market token detail view
MarketTokenList Markets list
NewsDetail News article detail

CreateWalletBackupRoute

File: features/hot-wallet/impl/.../createwalletbackup/routing/CreateWalletBackupRoute.kt

Route Description
RecoveryPhraseStart Backup intro
RecoveryPhrase Show recovery phrase
ConfirmBackup Confirm backup
BackupCompleted Backup complete (with upgrade/last screen flags)

Transitions: RecoveryPhraseStartRecoveryPhraseConfirmBackupBackupCompleted

AddExistingWalletRoute

File: features/hot-wallet/impl/.../addexistingwallet/entry/routing/AddExistingWalletRoute.kt

Route Description
Import Seed phrase import
BackupCompleted Backup completed
SetAccessCode Set access code
ConfirmAccessCode Confirm access code
PushNotifications Push notification opt-in
SetupFinished Setup complete

Transitions: ImportBackupCompletedSetAccessCodeConfirmAccessCodePushNotificationsSetupFinished

UpdateAccessCodeRoute

File: features/hot-wallet/impl/.../updateaccesscode/routing/UpdateAccessCodeRoute.kt

Route Description
SetAccessCode Enter new access code
ConfirmAccessCode Confirm new access code
SetupFinished Update complete

Transitions: SetAccessCodeConfirmAccessCodeSetupFinished

WalletActivationRoute

File: features/hot-wallet/impl/.../walletactivation/entry/routing/WalletActivationRoute.kt

Route Description
ManualBackupStart Backup intro
ManualBackupPhrase Show recovery phrase
ManualBackupCheck Verify backup
ManualBackupCompleted Backup success
SetAccessCode Set access code
ConfirmAccessCode Confirm access code
PushNotifications Push notification opt-in
SetupFinished Activation complete

Transitions: ManualBackupStartManualBackupPhraseManualBackupCheckManualBackupCompletedSetAccessCodeConfirmAccessCodePushNotificationsSetupFinished

URI Schemes

Scheme Value Usage
Tangem tangem:// Primary app deep links
WalletConnect wc:// WalletConnect pairing
Https https:// Web links (tangem.com)

Tangem Scheme Routes (tangem://{host})

Host Handler Target
onramp OnrampDeepLinkHandler Onramp callback processing
redirect_sell SellRedirectDeepLinkHandler Send (sell redirect with tx params)
redirect Buy redirect (no-op)
buy BuyDeepLinkHandler BuyCrypto
sell SellDeepLinkHandler SellCrypto
swap SwapDeepLinkHandler Swap
referral ReferralDeepLinkHandler Referral flow
main WalletDeepLinkHandler Wallet screen
token TokenDetailsDeepLinkHandler CurrencyDetails
staking StakingDeepLinkHandler Staking
markets MarketsDeepLinkHandler Markets
token_chart MarketsTokenDetailDeepLinkHandler MarketsTokenDetails
wc WalletConnectDeepLinkHandler WalletConnect pairing
promo PromoDeeplinkHandler Promo handling
onboard-visa OnboardVisaDeepLinkHandler TangemPayOnboarding

HTTPS Routes (https://tangem.com/...)

Path prefix Handler Target
/pay-app OnboardVisaDeepLinkHandler TangemPayOnboarding
/news NewsDetailsDeepLinkHandler NewsDetails

Deep links are only processed when the app is on a "ready" route. These routes block deep link processing:

  • Initial, Home, Welcome, PushNotification, Disclaimer, Stories, Onboarding