0xtrails 0.12.2 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abis/trailsHydrate.d.ts.map +1 -1
- package/dist/analytics.d.ts +41 -0
- package/dist/analytics.d.ts.map +1 -1
- package/dist/{ccip-62W6LwH2.js → ccip-Cg9-lJ6K.js} +16 -16
- package/dist/chainSwitch.d.ts.map +1 -1
- package/dist/chains.d.ts +9 -3
- package/dist/chains.d.ts.map +1 -1
- package/dist/error.d.ts +1 -0
- package/dist/error.d.ts.map +1 -1
- package/dist/{index-C0QTNYIA.js → index-DEojZg7b.js} +50431 -50424
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +377 -421
- package/dist/intentReceiptPoller.d.ts.map +1 -1
- package/dist/intents.d.ts +1 -3
- package/dist/intents.d.ts.map +1 -1
- package/dist/mutations.d.ts +1 -4
- package/dist/mutations.d.ts.map +1 -1
- package/dist/prepareSend.d.ts.map +1 -1
- package/dist/query/balance.hooks.d.ts.map +1 -1
- package/dist/query/chains.hooks.d.ts.map +1 -1
- package/dist/query/chains.queries.d.ts +4 -1
- package/dist/query/chains.queries.d.ts.map +1 -1
- package/dist/queryParams.d.ts.map +1 -1
- package/dist/recover.d.ts.map +1 -1
- package/dist/tokens.d.ts.map +1 -1
- package/dist/transactionIntent/deposits/depositOrchestrator.d.ts.map +1 -1
- package/dist/transactionIntent/deposits/gaslessDeposit.d.ts.map +1 -1
- package/dist/transactionIntent/deposits/standardDeposit.d.ts +1 -7
- package/dist/transactionIntent/deposits/standardDeposit.d.ts.map +1 -1
- package/dist/transactionIntent/handlers/intentHandler.d.ts.map +1 -1
- package/dist/transactionIntent/helpers/transactionStateHelpers.d.ts +10 -1
- package/dist/transactionIntent/helpers/transactionStateHelpers.d.ts.map +1 -1
- package/dist/transactionIntent/types.d.ts +3 -6
- package/dist/transactionIntent/types.d.ts.map +1 -1
- package/dist/transactionIntent/utils/resilientDepositTracker.d.ts +3 -3
- package/dist/transactionIntent/utils/resilientDepositTracker.d.ts.map +1 -1
- package/dist/transactions.d.ts +2 -0
- package/dist/transactions.d.ts.map +1 -1
- package/dist/umd/trails.min.js +200 -200
- package/dist/walletUtils.d.ts +4 -0
- package/dist/walletUtils.d.ts.map +1 -1
- package/dist/wallets.d.ts +2 -1
- package/dist/wallets.d.ts.map +1 -1
- package/dist/widget/components/AccountActionsDropdown.d.ts.map +1 -1
- package/dist/widget/components/AccountIntentTransactionHistoryButton.d.ts.map +1 -1
- package/dist/widget/components/AccountSettings.d.ts.map +1 -1
- package/dist/widget/components/ClassicSwap.d.ts.map +1 -1
- package/dist/widget/components/ConnectWallet.d.ts.map +1 -1
- package/dist/widget/components/ConnectedWallets.d.ts +5 -1
- package/dist/widget/components/ConnectedWallets.d.ts.map +1 -1
- package/dist/widget/components/DepositTracker.d.ts +1 -1
- package/dist/widget/components/DepositTracker.d.ts.map +1 -1
- package/dist/widget/components/DirectTransfer.d.ts +0 -8
- package/dist/widget/components/DirectTransfer.d.ts.map +1 -1
- package/dist/widget/components/Fund.d.ts +1 -1
- package/dist/widget/components/Fund.d.ts.map +1 -1
- package/dist/widget/components/FundMethods.d.ts.map +1 -1
- package/dist/widget/components/FundWalletSelection.d.ts +0 -8
- package/dist/widget/components/FundWalletSelection.d.ts.map +1 -1
- package/dist/widget/components/FundingMethodSelectorButton.d.ts +1 -1
- package/dist/widget/components/FundingMethodSelectorButton.d.ts.map +1 -1
- package/dist/widget/components/MeldStepsFlow.d.ts.map +1 -1
- package/dist/widget/components/OnrampErrorScreen.d.ts.map +1 -1
- package/dist/widget/components/OnrampPaymentMethods.d.ts.map +1 -1
- package/dist/widget/components/OnrampProviderConfirmation.d.ts +0 -6
- package/dist/widget/components/OnrampProviderConfirmation.d.ts.map +1 -1
- package/dist/widget/components/Pay.d.ts.map +1 -1
- package/dist/widget/components/QrCode.d.ts.map +1 -1
- package/dist/widget/components/QuoteDetails.d.ts.map +1 -1
- package/dist/widget/components/Receipt.d.ts.map +1 -1
- package/dist/widget/components/ReceiptRecoverableFunds.d.ts +25 -0
- package/dist/widget/components/ReceiptRecoverableFunds.d.ts.map +1 -0
- package/dist/widget/components/RecipientSelectorButton.d.ts +3 -1
- package/dist/widget/components/RecipientSelectorButton.d.ts.map +1 -1
- package/dist/widget/components/Recipients.d.ts.map +1 -1
- package/dist/widget/components/Swap.d.ts +2 -16
- package/dist/widget/components/Swap.d.ts.map +1 -1
- package/dist/widget/components/TokenSelector.d.ts.map +1 -1
- package/dist/widget/components/TransactionDetails.d.ts.map +1 -1
- package/dist/widget/components/TransactionHistoryItem.d.ts.map +1 -1
- package/dist/widget/components/TransferPendingVertical.d.ts.map +1 -1
- package/dist/widget/components/TruncatedTransactionHash.d.ts.map +1 -1
- package/dist/widget/components/WalletConfirmation.d.ts.map +1 -1
- package/dist/widget/components/WalletConnect.d.ts.map +1 -1
- package/dist/widget/components/WidgetProviders.d.ts.map +1 -1
- package/dist/widget/components/Withdraw.d.ts.map +1 -1
- package/dist/widget/css/compiled.css +1 -1
- package/dist/widget/hooks/useClickTracking.d.ts.map +1 -1
- package/dist/widget/hooks/useDebugScreens.d.ts +1 -10
- package/dist/widget/hooks/useDebugScreens.d.ts.map +1 -1
- package/dist/widget/hooks/useDepositMonitor.d.ts +2 -4
- package/dist/widget/hooks/useDepositMonitor.d.ts.map +1 -1
- package/dist/widget/hooks/useExternalFundingReceiptSync.d.ts +11 -0
- package/dist/widget/hooks/useExternalFundingReceiptSync.d.ts.map +1 -0
- package/dist/widget/hooks/useIntentReceiptBalances.d.ts +16 -0
- package/dist/widget/hooks/useIntentReceiptBalances.d.ts.map +1 -0
- package/dist/widget/hooks/useQuote.d.ts +0 -4
- package/dist/widget/hooks/useQuote.d.ts.map +1 -1
- package/dist/widget/hooks/useScreenTracking.d.ts +2 -0
- package/dist/widget/hooks/useScreenTracking.d.ts.map +1 -0
- package/dist/widget/hooks/useSelectedFundMethod.d.ts +0 -2
- package/dist/widget/hooks/useSelectedFundMethod.d.ts.map +1 -1
- package/dist/widget/hooks/useSendForm.d.ts +0 -4
- package/dist/widget/hooks/useSendForm.d.ts.map +1 -1
- package/dist/widget/hooks/useTokenList.d.ts.map +1 -1
- package/dist/widget/hooks/useTrailsSendTransaction.d.ts.map +1 -1
- package/dist/widget/hooks/useViewManager.d.ts +89 -0
- package/dist/widget/hooks/useViewManager.d.ts.map +1 -0
- package/dist/widget/hooks/useWalletConnectUri.d.ts.map +1 -1
- package/dist/widget/hooks/useWalletConnectionContext.d.ts +1 -1
- package/dist/widget/hooks/useWalletConnectionContext.d.ts.map +1 -1
- package/dist/widget/index.d.ts +1 -1
- package/dist/widget/index.d.ts.map +1 -1
- package/dist/widget/index.js +7 -6
- package/dist/widget/providers/TrailsProvider.d.ts.map +1 -1
- package/dist/widget/types/commonProps.d.ts +1 -6
- package/dist/widget/types/commonProps.d.ts.map +1 -1
- package/dist/widget/utils/forexRateStore.d.ts.map +1 -1
- package/dist/widget/utils/fundMethodSwitchState.d.ts +10 -0
- package/dist/widget/utils/fundMethodSwitchState.d.ts.map +1 -0
- package/dist/widget/utils/localeStore.d.ts.map +1 -1
- package/dist/widget/utils/viewManagerGuards.d.ts +5 -0
- package/dist/widget/utils/viewManagerGuards.d.ts.map +1 -0
- package/dist/widget/widget.d.ts +23 -2
- package/dist/widget/widget.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/abis/trailsHydrate.ts +2 -1
- package/src/analytics.ts +60 -0
- package/src/chainSwitch.ts +11 -8
- package/src/chains.ts +82 -37
- package/src/constants.ts +2 -2
- package/src/error.ts +8 -0
- package/src/index.ts +1 -12
- package/src/intentReceiptPoller.ts +27 -0
- package/src/intents.ts +36 -87
- package/src/mutations.ts +11 -102
- package/src/onramp-client/index.ts +3 -3
- package/src/prepareSend.ts +6 -2
- package/src/query/balance.hooks.ts +31 -10
- package/src/query/chains.hooks.ts +7 -1
- package/src/query/chains.queries.ts +8 -5
- package/src/queryParams.ts +8 -6
- package/src/recover.ts +9 -9
- package/src/tokens.ts +4 -2
- package/src/transactionIntent/deposits/depositOrchestrator.ts +0 -2
- package/src/transactionIntent/deposits/gaslessDeposit.ts +8 -0
- package/src/transactionIntent/deposits/standardDeposit.ts +25 -35
- package/src/transactionIntent/handlers/intentHandler.ts +234 -138
- package/src/transactionIntent/helpers/transactionStateHelpers.ts +108 -1
- package/src/transactionIntent/types.ts +14 -8
- package/src/transactionIntent/utils/resilientDepositTracker.ts +72 -183
- package/src/transactions.ts +16 -0
- package/src/walletUtils.ts +188 -1
- package/src/wallets.ts +50 -15
- package/src/widget/compiled.css +1 -1
- package/src/widget/components/AccountActionsDropdown.tsx +4 -6
- package/src/widget/components/AccountIntentTransactionHistoryButton.tsx +4 -6
- package/src/widget/components/AccountSettings.tsx +36 -22
- package/src/widget/components/ClassicSwap.tsx +67 -9
- package/src/widget/components/ConnectWallet.tsx +5 -7
- package/src/widget/components/ConnectedWallets.tsx +143 -82
- package/src/widget/components/DepositTracker.tsx +4 -5
- package/src/widget/components/DirectTransfer.tsx +85 -84
- package/src/widget/components/Earn.tsx +3 -3
- package/src/widget/components/Fund.tsx +90 -17
- package/src/widget/components/FundMethods.tsx +77 -43
- package/src/widget/components/FundWalletSelection.tsx +13 -397
- package/src/widget/components/FundingMethodSelectorButton.tsx +11 -10
- package/src/widget/components/MeldStepsFlow.tsx +64 -30
- package/src/widget/components/OnrampErrorScreen.tsx +2 -18
- package/src/widget/components/OnrampPaymentMethods.tsx +4 -6
- package/src/widget/components/OnrampProviderConfirmation.tsx +91 -110
- package/src/widget/components/OriginTransferInformation.tsx +2 -2
- package/src/widget/components/Pay.tsx +27 -7
- package/src/widget/components/PaymentMethods.tsx +10 -10
- package/src/widget/components/PoolDeposit.tsx +2 -2
- package/src/widget/components/QrCode.tsx +13 -11
- package/src/widget/components/QuoteDetails.tsx +16 -6
- package/src/widget/components/Receipt.tsx +66 -6
- package/src/widget/components/ReceiptRecoverableFunds.tsx +135 -0
- package/src/widget/components/RecipientSelectorButton.tsx +6 -17
- package/src/widget/components/Recipients.tsx +38 -29
- package/src/widget/components/Swap.tsx +2 -25
- package/src/widget/components/TokenList.tsx +2 -2
- package/src/widget/components/TokenSelector.tsx +11 -11
- package/src/widget/components/TokenSelectorButton.tsx +3 -3
- package/src/widget/components/TrailsHookModal.tsx +1 -1
- package/src/widget/components/TransactionDetails.tsx +43 -37
- package/src/widget/components/TransactionHistoryItem.tsx +1 -42
- package/src/widget/components/TransferPendingVertical.tsx +11 -4
- package/src/widget/components/TruncatedTransactionHash.tsx +5 -0
- package/src/widget/components/WalletConfirmation.tsx +5 -8
- package/src/widget/components/WalletConnect.tsx +6 -2
- package/src/widget/components/WidgetProviders.tsx +34 -43
- package/src/widget/components/Withdraw.tsx +25 -11
- package/src/widget/hooks/useClickTracking.ts +5 -0
- package/src/widget/hooks/useDebugScreens.ts +40 -86
- package/src/widget/hooks/useDepositMonitor.ts +14 -149
- package/src/widget/hooks/useExternalFundingReceiptSync.ts +79 -0
- package/src/widget/hooks/useIntentReceiptBalances.ts +141 -0
- package/src/widget/hooks/useQuote.ts +7 -16
- package/src/widget/hooks/useScreenTracking.ts +14 -0
- package/src/widget/hooks/useSelectedFundMethod.tsx +0 -5
- package/src/widget/hooks/useSendForm.ts +5 -14
- package/src/widget/hooks/useTokenList.ts +3 -16
- package/src/widget/hooks/useTrailsSendTransaction.ts +1 -5
- package/src/widget/hooks/useViewManager.tsx +505 -0
- package/src/widget/hooks/useWalletConnectUri.tsx +77 -18
- package/src/widget/hooks/useWalletConnectionContext.tsx +1 -1
- package/src/widget/index.tsx +1 -0
- package/src/widget/providers/TrailsProvider.tsx +0 -41
- package/src/widget/styles.ts +1 -1
- package/src/widget/types/commonProps.ts +0 -8
- package/src/widget/utils/forexRateStore.ts +0 -2
- package/src/widget/utils/fundMethodSwitchState.ts +25 -0
- package/src/widget/utils/localeStore.ts +0 -1
- package/src/widget/utils/viewManagerGuards.ts +49 -0
- package/src/widget/widget.tsx +405 -316
- package/dist/intentStorage.d.ts +0 -24
- package/dist/intentStorage.d.ts.map +0 -1
- package/dist/mode.d.ts +0 -2
- package/dist/mode.d.ts.map +0 -1
- package/dist/widget/hooks/useBack.d.ts +0 -22
- package/dist/widget/hooks/useBack.d.ts.map +0 -1
- package/dist/widget/hooks/useCurrentScreen.d.ts +0 -13
- package/dist/widget/hooks/useCurrentScreen.d.ts.map +0 -1
- package/dist/widget/hooks/useInitialRedirect.d.ts +0 -7
- package/dist/widget/hooks/useInitialRedirect.d.ts.map +0 -1
- package/dist/widget/hooks/useMode.d.ts +0 -20
- package/dist/widget/hooks/useMode.d.ts.map +0 -1
- package/dist/widget/hooks/usePreviousScreen.d.ts +0 -12
- package/dist/widget/hooks/usePreviousScreen.d.ts.map +0 -1
- package/dist/widget/workers/intentExecutionWorker.d.ts +0 -73
- package/dist/widget/workers/intentExecutionWorker.d.ts.map +0 -1
- package/src/intentStorage.ts +0 -106
- package/src/mode.ts +0 -1
- package/src/widget/hooks/useBack.tsx +0 -210
- package/src/widget/hooks/useCurrentScreen.tsx +0 -73
- package/src/widget/hooks/useInitialRedirect.tsx +0 -70
- package/src/widget/hooks/useMode.tsx +0 -51
- package/src/widget/hooks/usePreviousScreen.ts +0 -36
- package/src/widget/workers/intentExecutionWorker.ts +0 -502
package/dist/intentStorage.d.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
interface StoredIntent {
|
|
2
|
-
intentId: string;
|
|
3
|
-
timestamp: number;
|
|
4
|
-
lastCheckTime?: number;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Store an intent ID for monitoring
|
|
8
|
-
* This function stores intent IDs in localStorage for later processing
|
|
9
|
-
*/
|
|
10
|
-
export declare function storeIntentForMonitoring(intentId: string): void;
|
|
11
|
-
/**
|
|
12
|
-
* Get all stored intent IDs
|
|
13
|
-
*/
|
|
14
|
-
export declare function getStoredIntents(): StoredIntent[];
|
|
15
|
-
/**
|
|
16
|
-
* Remove a stored intent
|
|
17
|
-
*/
|
|
18
|
-
export declare function removeStoredIntent(intentId: string): void;
|
|
19
|
-
/**
|
|
20
|
-
* Clear all stored intents
|
|
21
|
-
*/
|
|
22
|
-
export declare function clearAllStoredIntents(): void;
|
|
23
|
-
export {};
|
|
24
|
-
//# sourceMappingURL=intentStorage.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"intentStorage.d.ts","sourceRoot":"","sources":["../src/intentStorage.ts"],"names":[],"mappings":"AAIA,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAwC/D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,EAAE,CAcjD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAezD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAO5C"}
|
package/dist/mode.d.ts
DELETED
package/dist/mode.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mode.d.ts","sourceRoot":"","sources":["../src/mode.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAA"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
import { Screen } from './useCurrentScreen.js';
|
|
3
|
-
interface BackContextType {
|
|
4
|
-
goBack: (() => void) | undefined;
|
|
5
|
-
canGoBack: boolean;
|
|
6
|
-
clearHistory: () => void;
|
|
7
|
-
isNavigatingBack: boolean;
|
|
8
|
-
getHistory: () => Screen[];
|
|
9
|
-
getBreadcrumbHistory: () => Screen[];
|
|
10
|
-
addBreadcrumb: (screen: Screen) => void;
|
|
11
|
-
setAccountSettingsSource: (screen: Screen) => void;
|
|
12
|
-
getAccountSettingsSource: () => Screen | null;
|
|
13
|
-
setCurrentScreenWithBack: (screen: Screen, backTo?: Screen) => void;
|
|
14
|
-
getPreviousScreen: () => Screen | null;
|
|
15
|
-
}
|
|
16
|
-
interface BackProviderProps {
|
|
17
|
-
children: ReactNode;
|
|
18
|
-
}
|
|
19
|
-
export declare function BackProvider({ children }: BackProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
-
export declare function useBack(): BackContextType;
|
|
21
|
-
export {};
|
|
22
|
-
//# sourceMappingURL=useBack.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useBack.d.ts","sourceRoot":"","sources":["../../../src/widget/hooks/useBack.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAoB,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAGrE,UAAU,eAAe;IACvB,MAAM,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAA;IAChC,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,MAAM,MAAM,EAAE,CAAA;IAC1B,oBAAoB,EAAE,MAAM,MAAM,EAAE,CAAA;IACpC,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,wBAAwB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAClD,wBAAwB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IAC7C,wBAAwB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACnE,iBAAiB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;CACvC;AAID,UAAU,iBAAiB;IACzB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,2CA0K3D;AAED,wBAAgB,OAAO,IAAI,eAAe,CAMzC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
export type Screen = "connect" | "tokens" | "select-origin-token" | "select-origin-amount" | "send-form" | "fund-form" | "fund-methods" | "payment-methods" | "select-funding-wallet" | "onramp-payment-methods" | "recipients" | "earn-pools" | "earn" | "swap" | "withdraw" | "wallet-confirmation" | "qr-code-wallet-select" | "direct-transfer-screen" | "onramp-meld" | "pending" | "receipt" | "onramp-mesh" | "wallet-connect" | "wallet-list" | "wallet-connection-pending" | "account-history" | "account-settings" | "user-preferences" | "chain-list" | "disconnect" | "home" | "qrcode-options" | "meld-onramp" | "meld-history" | "onramp-confirmation";
|
|
3
|
-
interface CurrentScreenContextType {
|
|
4
|
-
currentScreen: Screen;
|
|
5
|
-
setCurrentScreen: (screen: Screen) => void;
|
|
6
|
-
}
|
|
7
|
-
export declare function CurrentScreenProvider({ children, initialScreen, }: {
|
|
8
|
-
children: ReactNode;
|
|
9
|
-
initialScreen: Screen;
|
|
10
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
11
|
-
export declare function useCurrentScreen(): CurrentScreenContextType;
|
|
12
|
-
export {};
|
|
13
|
-
//# sourceMappingURL=useCurrentScreen.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useCurrentScreen.d.ts","sourceRoot":"","sources":["../../../src/widget/hooks/useCurrentScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAE3E,MAAM,MAAM,MAAM,GACd,SAAS,GACT,QAAQ,GACR,qBAAqB,GACrB,sBAAsB,GACtB,WAAW,GACX,WAAW,GACX,cAAc,GACd,iBAAiB,GACjB,uBAAuB,GACvB,wBAAwB,GACxB,YAAY,GACZ,YAAY,GACZ,MAAM,GACN,MAAM,GACN,UAAU,GACV,qBAAqB,GACrB,uBAAuB,GACvB,wBAAwB,GACxB,aAAa,GACb,SAAS,GACT,SAAS,GACT,aAAa,GACb,gBAAgB,GAChB,aAAa,GACb,2BAA2B,GAC3B,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,YAAY,GACZ,YAAY,GACZ,MAAM,GACN,gBAAgB,GAChB,aAAa,GACb,cAAc,GACd,qBAAqB,CAAA;AAEzB,UAAU,wBAAwB;IAChC,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CAC3C;AAMD,wBAAgB,qBAAqB,CAAC,EACpC,QAAQ,EACR,aAAa,GACd,EAAE;IACD,QAAQ,EAAE,SAAS,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;CACtB,2CAQA;AAED,wBAAgB,gBAAgB,IAAI,wBAAwB,CAQ3D"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Screen } from './useCurrentScreen.js';
|
|
2
|
-
import { Mode } from '../../mode.js';
|
|
3
|
-
export declare function useInitialRedirect(isConnected: boolean, currentMode: Mode, getInitialScreenForMode: (mode: Mode) => Screen): {
|
|
4
|
-
hasConnectedBefore: boolean;
|
|
5
|
-
isInitialScreenSet: boolean;
|
|
6
|
-
};
|
|
7
|
-
//# sourceMappingURL=useInitialRedirect.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useInitialRedirect.d.ts","sourceRoot":"","sources":["../../../src/widget/hooks/useInitialRedirect.tsx"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAGrE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAEzC,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,OAAO,EACpB,WAAW,EAAE,IAAI,EACjB,uBAAuB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM;;;EA4DhD"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
import { Mode } from '../../mode.js';
|
|
3
|
-
interface ModeContextType {
|
|
4
|
-
/** The effective mode — use this for all UI decisions */
|
|
5
|
-
mode: Mode;
|
|
6
|
-
/** The mode from the widget prop (source of truth) */
|
|
7
|
-
configuredMode: Mode;
|
|
8
|
-
/** Temporarily override the mode (e.g. "Buy Crypto" from settings) */
|
|
9
|
-
setMode: (mode: Mode) => void;
|
|
10
|
-
/** Clear any override, reverting to configuredMode */
|
|
11
|
-
resetMode: () => void;
|
|
12
|
-
}
|
|
13
|
-
interface ModeProviderProps {
|
|
14
|
-
children: ReactNode;
|
|
15
|
-
configuredMode: Mode;
|
|
16
|
-
}
|
|
17
|
-
export declare function ModeProvider({ children, configuredMode }: ModeProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
-
export declare function useMode(): ModeContextType;
|
|
19
|
-
export {};
|
|
20
|
-
//# sourceMappingURL=useMode.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useMode.d.ts","sourceRoot":"","sources":["../../../src/widget/hooks/useMode.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAEzC,UAAU,eAAe;IACvB,yDAAyD;IACzD,IAAI,EAAE,IAAI,CAAA;IACV,sDAAsD;IACtD,cAAc,EAAE,IAAI,CAAA;IACpB,sEAAsE;IACtE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC7B,sDAAsD;IACtD,SAAS,EAAE,MAAM,IAAI,CAAA;CACtB;AAID,UAAU,iBAAiB;IACzB,QAAQ,EAAE,SAAS,CAAA;IACnB,cAAc,EAAE,IAAI,CAAA;CACrB;AAED,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,iBAAiB,2CAoB3E;AAED,wBAAgB,OAAO,IAAI,eAAe,CAMzC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { default as React, ReactNode } from 'react';
|
|
2
|
-
import { Screen } from './useCurrentScreen.js';
|
|
3
|
-
interface PreviousScreenContextType {
|
|
4
|
-
previousScreen: Screen | null;
|
|
5
|
-
setPreviousScreen: (screen: Screen | null) => void;
|
|
6
|
-
}
|
|
7
|
-
export declare function PreviousScreenProvider({ children }: {
|
|
8
|
-
children: ReactNode;
|
|
9
|
-
}): React.FunctionComponentElement<React.ProviderProps<PreviousScreenContextType | null>>;
|
|
10
|
-
export declare function usePreviousScreen(): PreviousScreenContextType;
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=usePreviousScreen.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usePreviousScreen.d.ts","sourceRoot":"","sources":["../../../src/widget/hooks/usePreviousScreen.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAIZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AACd,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAEnD,UAAU,yBAAyB;IACjC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;CACnD;AAMD,wBAAgB,sBAAsB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,yFAQ3E;AAED,wBAAgB,iBAAiB,IAAI,yBAAyB,CAQ7D"}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { TrailsClient } from '../../trailsClient.js';
|
|
2
|
-
interface IntentExecutionWorkerOptions {
|
|
3
|
-
trailsClient: TrailsClient;
|
|
4
|
-
trailsApiKey: string;
|
|
5
|
-
sequenceIndexerUrl: string;
|
|
6
|
-
enabled?: boolean;
|
|
7
|
-
}
|
|
8
|
-
export declare class IntentExecutionWorker {
|
|
9
|
-
private static instance;
|
|
10
|
-
private intervalId;
|
|
11
|
-
private isRunning;
|
|
12
|
-
private trailsClient;
|
|
13
|
-
private trailsApiKey;
|
|
14
|
-
private sequenceIndexerUrl;
|
|
15
|
-
private enabled;
|
|
16
|
-
private abortController;
|
|
17
|
-
private constructor();
|
|
18
|
-
/**
|
|
19
|
-
* Get or create the singleton instance of IntentExecutionWorker
|
|
20
|
-
*/
|
|
21
|
-
static getInstance(options?: IntentExecutionWorkerOptions): IntentExecutionWorker;
|
|
22
|
-
/**
|
|
23
|
-
* Update the worker options (used when re-initializing with new config)
|
|
24
|
-
*/
|
|
25
|
-
private updateOptions;
|
|
26
|
-
/**
|
|
27
|
-
* Destroy the singleton instance (useful for cleanup/testing)
|
|
28
|
-
*/
|
|
29
|
-
static destroyInstance(): void;
|
|
30
|
-
/**
|
|
31
|
-
* Start the worker to monitor pending intents
|
|
32
|
-
*/
|
|
33
|
-
start(): void;
|
|
34
|
-
/**
|
|
35
|
-
* Stop the worker
|
|
36
|
-
*/
|
|
37
|
-
stop(): void;
|
|
38
|
-
/**
|
|
39
|
-
* Check all pending intents and process them if needed
|
|
40
|
-
*/
|
|
41
|
-
private checkPendingIntents;
|
|
42
|
-
/**
|
|
43
|
-
* Process a single intent
|
|
44
|
-
*/
|
|
45
|
-
private processIntent;
|
|
46
|
-
/**
|
|
47
|
-
* Store an intent ID for monitoring
|
|
48
|
-
* @preserve
|
|
49
|
-
*/
|
|
50
|
-
static storeIntentForMonitoring(intentId: string): void;
|
|
51
|
-
/**
|
|
52
|
-
* Get stored intents (static version for external use)
|
|
53
|
-
*/
|
|
54
|
-
private static getStoredIntentsStatic;
|
|
55
|
-
/**
|
|
56
|
-
* Get stored intents
|
|
57
|
-
*/
|
|
58
|
-
private getStoredIntents;
|
|
59
|
-
/**
|
|
60
|
-
* Update a stored intent
|
|
61
|
-
*/
|
|
62
|
-
private updateStoredIntent;
|
|
63
|
-
/**
|
|
64
|
-
* Remove a stored intent
|
|
65
|
-
*/
|
|
66
|
-
private removeStoredIntent;
|
|
67
|
-
/**
|
|
68
|
-
* Clear all stored intents (useful for cleanup/testing)
|
|
69
|
-
*/
|
|
70
|
-
static clearAllStoredIntents(): void;
|
|
71
|
-
}
|
|
72
|
-
export {};
|
|
73
|
-
//# sourceMappingURL=intentExecutionWorker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"intentExecutionWorker.d.ts","sourceRoot":"","sources":["../../../src/widget/workers/intentExecutionWorker.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAezD,UAAU,4BAA4B;IACpC,YAAY,EAAE,YAAY,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAGD,qBAAa,qBAAqB;IAEhC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqC;IAC5D,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAA+B;IAEtD,OAAO;IAOP;;OAEG;IACH,MAAM,CAAC,WAAW,CAChB,OAAO,CAAC,EAAE,4BAA4B,GACrC,qBAAqB;IAqBxB;;OAEG;IAEH,OAAO,CAAC,aAAa;IAoBrB;;OAEG;IACH,MAAM,CAAC,eAAe,IAAI,IAAI;IAU9B;;OAEG;IACH,KAAK,IAAI,IAAI;IA4Bb;;OAEG;IACH,IAAI,IAAI,IAAI;IAiBZ;;OAEG;YACW,mBAAmB;IAkCjC;;OAEG;YACW,aAAa;IA0I3B;;;OAGG;IACH,MAAM,CAAC,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAqEvD;;OAEG;IAEH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAgBrC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA0B1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;IACH,MAAM,CAAC,qBAAqB,IAAI,IAAI;CAarC"}
|
package/src/intentStorage.ts
DELETED
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import { logger } from "./logger.js"
|
|
2
|
-
|
|
3
|
-
const INTENT_STORAGE_KEY = "trails_pending_intents"
|
|
4
|
-
|
|
5
|
-
interface StoredIntent {
|
|
6
|
-
intentId: string
|
|
7
|
-
timestamp: number
|
|
8
|
-
lastCheckTime?: number
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Store an intent ID for monitoring
|
|
13
|
-
* This function stores intent IDs in localStorage for later processing
|
|
14
|
-
*/
|
|
15
|
-
export function storeIntentForMonitoring(intentId: string): void {
|
|
16
|
-
try {
|
|
17
|
-
logger.console.log(
|
|
18
|
-
`[trails-sdk] Storing intent ${intentId} for monitoring in localStorage`,
|
|
19
|
-
)
|
|
20
|
-
|
|
21
|
-
// Get existing intents
|
|
22
|
-
const stored = localStorage.getItem(INTENT_STORAGE_KEY)
|
|
23
|
-
const existingIntents: StoredIntent[] = stored ? JSON.parse(stored) : []
|
|
24
|
-
|
|
25
|
-
// Check if intent already exists
|
|
26
|
-
const existingIndex = existingIntents.findIndex(
|
|
27
|
-
(i) => i.intentId === intentId,
|
|
28
|
-
)
|
|
29
|
-
|
|
30
|
-
const storedIntent: StoredIntent = {
|
|
31
|
-
intentId,
|
|
32
|
-
timestamp: Date.now(),
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
if (existingIndex >= 0) {
|
|
36
|
-
// Update existing intent
|
|
37
|
-
existingIntents[existingIndex] = storedIntent
|
|
38
|
-
} else {
|
|
39
|
-
// Add new intent
|
|
40
|
-
existingIntents.push(storedIntent)
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// Store back to localStorage
|
|
44
|
-
localStorage.setItem(INTENT_STORAGE_KEY, JSON.stringify(existingIntents))
|
|
45
|
-
|
|
46
|
-
logger.console.log(
|
|
47
|
-
`[trails-sdk] Successfully stored intent ${intentId}. Total stored intents: ${existingIntents.length}`,
|
|
48
|
-
)
|
|
49
|
-
} catch (error) {
|
|
50
|
-
logger.console.error(
|
|
51
|
-
`[trails-sdk] Failed to store intent ${intentId} for monitoring:`,
|
|
52
|
-
error,
|
|
53
|
-
)
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Get all stored intent IDs
|
|
59
|
-
*/
|
|
60
|
-
export function getStoredIntents(): StoredIntent[] {
|
|
61
|
-
try {
|
|
62
|
-
const stored = localStorage.getItem(INTENT_STORAGE_KEY)
|
|
63
|
-
if (!stored) return []
|
|
64
|
-
|
|
65
|
-
const intents = JSON.parse(stored) as StoredIntent[]
|
|
66
|
-
return Array.isArray(intents) ? intents : []
|
|
67
|
-
} catch (error) {
|
|
68
|
-
logger.console.error(
|
|
69
|
-
"[trails-sdk] Failed to retrieve stored intents:",
|
|
70
|
-
error,
|
|
71
|
-
)
|
|
72
|
-
return []
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Remove a stored intent
|
|
78
|
-
*/
|
|
79
|
-
export function removeStoredIntent(intentId: string): void {
|
|
80
|
-
try {
|
|
81
|
-
const intents = getStoredIntents()
|
|
82
|
-
const filtered = intents.filter((i) => i.intentId !== intentId)
|
|
83
|
-
localStorage.setItem(INTENT_STORAGE_KEY, JSON.stringify(filtered))
|
|
84
|
-
|
|
85
|
-
logger.console.log(
|
|
86
|
-
`[trails-sdk] Removed intent ${intentId} from monitoring`,
|
|
87
|
-
)
|
|
88
|
-
} catch (error) {
|
|
89
|
-
logger.console.error(
|
|
90
|
-
`[trails-sdk] Failed to remove intent ${intentId}:`,
|
|
91
|
-
error,
|
|
92
|
-
)
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Clear all stored intents
|
|
98
|
-
*/
|
|
99
|
-
export function clearAllStoredIntents(): void {
|
|
100
|
-
try {
|
|
101
|
-
localStorage.removeItem(INTENT_STORAGE_KEY)
|
|
102
|
-
logger.console.log("[trails-sdk] Cleared all stored intents")
|
|
103
|
-
} catch (error) {
|
|
104
|
-
logger.console.error("[trails-sdk] Failed to clear stored intents:", error)
|
|
105
|
-
}
|
|
106
|
-
}
|
package/src/mode.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type Mode = "pay" | "fund" | "earn" | "swap" | "withdraw"
|
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createContext,
|
|
3
|
-
useContext,
|
|
4
|
-
useState,
|
|
5
|
-
useEffect,
|
|
6
|
-
useCallback,
|
|
7
|
-
} from "react"
|
|
8
|
-
import type { ReactNode } from "react"
|
|
9
|
-
import { useCurrentScreen, type Screen } from "./useCurrentScreen.js"
|
|
10
|
-
import { logger } from "../../logger.js"
|
|
11
|
-
|
|
12
|
-
interface BackContextType {
|
|
13
|
-
goBack: (() => void) | undefined
|
|
14
|
-
canGoBack: boolean
|
|
15
|
-
clearHistory: () => void
|
|
16
|
-
isNavigatingBack: boolean
|
|
17
|
-
getHistory: () => Screen[]
|
|
18
|
-
getBreadcrumbHistory: () => Screen[]
|
|
19
|
-
addBreadcrumb: (screen: Screen) => void
|
|
20
|
-
setAccountSettingsSource: (screen: Screen) => void
|
|
21
|
-
getAccountSettingsSource: () => Screen | null
|
|
22
|
-
setCurrentScreenWithBack: (screen: Screen, backTo?: Screen) => void
|
|
23
|
-
getPreviousScreen: () => Screen | null
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const BackContext = createContext<BackContextType | null>(null)
|
|
27
|
-
|
|
28
|
-
interface BackProviderProps {
|
|
29
|
-
children: ReactNode
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export function BackProvider({ children }: BackProviderProps) {
|
|
33
|
-
const { currentScreen, setCurrentScreen } = useCurrentScreen()
|
|
34
|
-
const [history, setHistory] = useState<Screen[]>([])
|
|
35
|
-
const [navigationStack, setNavigationStack] = useState<
|
|
36
|
-
Array<[Screen, Screen?]>
|
|
37
|
-
>([])
|
|
38
|
-
const [isNavigatingBack, setIsNavigatingBack] = useState(false)
|
|
39
|
-
|
|
40
|
-
// Track screen changes and update history
|
|
41
|
-
useEffect(() => {
|
|
42
|
-
setHistory((prevHistory) => {
|
|
43
|
-
// Don't add the same screen twice in a row
|
|
44
|
-
if (
|
|
45
|
-
prevHistory.length > 0 &&
|
|
46
|
-
prevHistory[prevHistory.length - 1] === currentScreen
|
|
47
|
-
) {
|
|
48
|
-
return prevHistory
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// Add current screen to history
|
|
52
|
-
const newHistory = [...prevHistory, currentScreen]
|
|
53
|
-
|
|
54
|
-
// Keep history limited to last 10 screens to prevent memory issues
|
|
55
|
-
if (newHistory.length > 10) {
|
|
56
|
-
return newHistory.slice(-10)
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
return newHistory
|
|
60
|
-
})
|
|
61
|
-
}, [currentScreen])
|
|
62
|
-
|
|
63
|
-
// Get the previous screen from navigation stack
|
|
64
|
-
const getPreviousScreen = (): Screen | null => {
|
|
65
|
-
if (navigationStack.length === 0) {
|
|
66
|
-
return null
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
// Find the current screen in the navigation stack
|
|
70
|
-
const currentIndex = navigationStack.findIndex(
|
|
71
|
-
([screen]) => screen === currentScreen,
|
|
72
|
-
)
|
|
73
|
-
if (currentIndex === -1) {
|
|
74
|
-
return null
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
const currentEntry = navigationStack[currentIndex]
|
|
78
|
-
if (!currentEntry) {
|
|
79
|
-
return null
|
|
80
|
-
}
|
|
81
|
-
const [, backToScreen] = currentEntry
|
|
82
|
-
|
|
83
|
-
// If this screen has a specific back target, use it
|
|
84
|
-
if (backToScreen) {
|
|
85
|
-
return backToScreen
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
// Otherwise, go to the previous screen in the stack
|
|
89
|
-
if (currentIndex > 0) {
|
|
90
|
-
const previousEntry = navigationStack[currentIndex - 1]
|
|
91
|
-
if (previousEntry) {
|
|
92
|
-
const [previousScreen] = previousEntry
|
|
93
|
-
return previousScreen
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return null
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// Function to set current screen with optional back target
|
|
101
|
-
const setCurrentScreenWithBack = useCallback(
|
|
102
|
-
(screen: Screen, backTo?: Screen) => {
|
|
103
|
-
setNavigationStack((prevStack) => {
|
|
104
|
-
// Remove any existing entry for this screen
|
|
105
|
-
const filteredStack = prevStack.filter(
|
|
106
|
-
([existingScreen]) => existingScreen !== screen,
|
|
107
|
-
)
|
|
108
|
-
|
|
109
|
-
// Add new entry
|
|
110
|
-
const newEntry: [Screen, Screen?] = backTo ? [screen, backTo] : [screen]
|
|
111
|
-
const newStack = [...filteredStack, newEntry]
|
|
112
|
-
|
|
113
|
-
// Keep stack limited to last 10 entries
|
|
114
|
-
if (newStack.length > 10) {
|
|
115
|
-
return newStack.slice(-10)
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
return newStack
|
|
119
|
-
})
|
|
120
|
-
|
|
121
|
-
setCurrentScreen(screen)
|
|
122
|
-
},
|
|
123
|
-
[setCurrentScreen],
|
|
124
|
-
)
|
|
125
|
-
|
|
126
|
-
const canGoBack = navigationStack.length > 0 || history.length > 1
|
|
127
|
-
|
|
128
|
-
const goBack = canGoBack
|
|
129
|
-
? () => {
|
|
130
|
-
const previousScreen = getPreviousScreen()
|
|
131
|
-
|
|
132
|
-
logger.console.log(
|
|
133
|
-
"[trails-sdk] goBack (navigation stack)",
|
|
134
|
-
"previousScreen:",
|
|
135
|
-
previousScreen,
|
|
136
|
-
"currentScreen:",
|
|
137
|
-
currentScreen,
|
|
138
|
-
"navigationStack:",
|
|
139
|
-
navigationStack,
|
|
140
|
-
)
|
|
141
|
-
|
|
142
|
-
// Set flag to prevent auto-selection when navigating back
|
|
143
|
-
if (setIsNavigatingBack) {
|
|
144
|
-
setIsNavigatingBack(true)
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
if (previousScreen) {
|
|
148
|
-
// Remove current screen from navigation stack
|
|
149
|
-
setNavigationStack((prevStack) =>
|
|
150
|
-
prevStack.filter(([screen]) => screen !== currentScreen),
|
|
151
|
-
)
|
|
152
|
-
setCurrentScreen(previousScreen)
|
|
153
|
-
} else {
|
|
154
|
-
// Fallback: if no navigation stack, use regular history
|
|
155
|
-
const regularHistory = history
|
|
156
|
-
if (regularHistory.length > 1) {
|
|
157
|
-
const fallbackScreen = regularHistory[regularHistory.length - 2]
|
|
158
|
-
if (fallbackScreen) {
|
|
159
|
-
logger.console.log(
|
|
160
|
-
"[trails-sdk] goBack (fallback to regular history)",
|
|
161
|
-
"previousScreen:",
|
|
162
|
-
fallbackScreen,
|
|
163
|
-
)
|
|
164
|
-
setCurrentScreen(fallbackScreen)
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
// Reset the flag after a longer delay to allow the screen change to complete
|
|
170
|
-
// and prevent post-connection navigation from interfering with manual back navigation
|
|
171
|
-
if (setIsNavigatingBack) {
|
|
172
|
-
setTimeout(() => {
|
|
173
|
-
setIsNavigatingBack(false)
|
|
174
|
-
}, 500)
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
: undefined
|
|
178
|
-
|
|
179
|
-
const clearHistory = () => {
|
|
180
|
-
setHistory([currentScreen])
|
|
181
|
-
setNavigationStack([[currentScreen]])
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
const getHistory = () => history
|
|
185
|
-
const getBreadcrumbHistory = () => navigationStack.map(([screen]) => screen)
|
|
186
|
-
|
|
187
|
-
const value: BackContextType = {
|
|
188
|
-
goBack,
|
|
189
|
-
canGoBack,
|
|
190
|
-
clearHistory,
|
|
191
|
-
isNavigatingBack,
|
|
192
|
-
getHistory,
|
|
193
|
-
getBreadcrumbHistory,
|
|
194
|
-
addBreadcrumb: () => {}, // Deprecated, kept for compatibility
|
|
195
|
-
setAccountSettingsSource: () => {}, // Deprecated, kept for compatibility
|
|
196
|
-
getAccountSettingsSource: () => null, // Deprecated, kept for compatibility
|
|
197
|
-
setCurrentScreenWithBack,
|
|
198
|
-
getPreviousScreen,
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
return <BackContext.Provider value={value}>{children}</BackContext.Provider>
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
export function useBack(): BackContextType {
|
|
205
|
-
const context = useContext(BackContext)
|
|
206
|
-
if (!context) {
|
|
207
|
-
throw new Error("useBack must be used within a BackProvider")
|
|
208
|
-
}
|
|
209
|
-
return context
|
|
210
|
-
}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { createContext, useContext, useState, type ReactNode } from "react"
|
|
2
|
-
|
|
3
|
-
export type Screen =
|
|
4
|
-
| "connect"
|
|
5
|
-
| "tokens"
|
|
6
|
-
| "select-origin-token"
|
|
7
|
-
| "select-origin-amount"
|
|
8
|
-
| "send-form"
|
|
9
|
-
| "fund-form"
|
|
10
|
-
| "fund-methods"
|
|
11
|
-
| "payment-methods"
|
|
12
|
-
| "select-funding-wallet"
|
|
13
|
-
| "onramp-payment-methods"
|
|
14
|
-
| "recipients"
|
|
15
|
-
| "earn-pools"
|
|
16
|
-
| "earn"
|
|
17
|
-
| "swap"
|
|
18
|
-
| "withdraw"
|
|
19
|
-
| "wallet-confirmation"
|
|
20
|
-
| "qr-code-wallet-select"
|
|
21
|
-
| "direct-transfer-screen"
|
|
22
|
-
| "onramp-meld"
|
|
23
|
-
| "pending"
|
|
24
|
-
| "receipt"
|
|
25
|
-
| "onramp-mesh"
|
|
26
|
-
| "wallet-connect"
|
|
27
|
-
| "wallet-list"
|
|
28
|
-
| "wallet-connection-pending"
|
|
29
|
-
| "account-history"
|
|
30
|
-
| "account-settings"
|
|
31
|
-
| "user-preferences"
|
|
32
|
-
| "chain-list"
|
|
33
|
-
| "disconnect"
|
|
34
|
-
| "home"
|
|
35
|
-
| "qrcode-options"
|
|
36
|
-
| "meld-onramp"
|
|
37
|
-
| "meld-history"
|
|
38
|
-
| "onramp-confirmation"
|
|
39
|
-
|
|
40
|
-
interface CurrentScreenContextType {
|
|
41
|
-
currentScreen: Screen
|
|
42
|
-
setCurrentScreen: (screen: Screen) => void
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const CurrentScreenContext = createContext<CurrentScreenContextType | null>(
|
|
46
|
-
null,
|
|
47
|
-
)
|
|
48
|
-
|
|
49
|
-
export function CurrentScreenProvider({
|
|
50
|
-
children,
|
|
51
|
-
initialScreen,
|
|
52
|
-
}: {
|
|
53
|
-
children: ReactNode
|
|
54
|
-
initialScreen: Screen
|
|
55
|
-
}) {
|
|
56
|
-
const [currentScreen, setCurrentScreen] = useState<Screen>(initialScreen)
|
|
57
|
-
|
|
58
|
-
return (
|
|
59
|
-
<CurrentScreenContext.Provider value={{ currentScreen, setCurrentScreen }}>
|
|
60
|
-
{children}
|
|
61
|
-
</CurrentScreenContext.Provider>
|
|
62
|
-
)
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export function useCurrentScreen(): CurrentScreenContextType {
|
|
66
|
-
const context = useContext(CurrentScreenContext)
|
|
67
|
-
if (!context) {
|
|
68
|
-
throw new Error(
|
|
69
|
-
"useCurrentScreen must be used within a CurrentScreenProvider",
|
|
70
|
-
)
|
|
71
|
-
}
|
|
72
|
-
return context
|
|
73
|
-
}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { useEffect, useState } from "react"
|
|
2
|
-
import { useCurrentScreen, type Screen } from "./useCurrentScreen.js"
|
|
3
|
-
import { useBack } from "./useBack.js"
|
|
4
|
-
import { logger } from "../../logger.js"
|
|
5
|
-
import type { Mode } from "../../mode.js"
|
|
6
|
-
|
|
7
|
-
export function useInitialRedirect(
|
|
8
|
-
isConnected: boolean,
|
|
9
|
-
currentMode: Mode,
|
|
10
|
-
getInitialScreenForMode: (mode: Mode) => Screen,
|
|
11
|
-
) {
|
|
12
|
-
const { setCurrentScreen } = useCurrentScreen()
|
|
13
|
-
const { getBreadcrumbHistory } = useBack()
|
|
14
|
-
const [hasConnectedBefore, setHasConnectedBefore] = useState(false)
|
|
15
|
-
const [isInitialScreenSet, setIsInitialScreenSet] = useState(false)
|
|
16
|
-
|
|
17
|
-
useEffect(() => {
|
|
18
|
-
if (!isConnected || isInitialScreenSet) {
|
|
19
|
-
return
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// Check if this is the first time connecting (no previous wallet connected)
|
|
23
|
-
const isFirstTimeConnection = !hasConnectedBefore
|
|
24
|
-
|
|
25
|
-
if (isFirstTimeConnection) {
|
|
26
|
-
// First time connecting - go to appropriate mode screen
|
|
27
|
-
const initialScreen = getInitialScreenForMode(currentMode)
|
|
28
|
-
logger.console.log(
|
|
29
|
-
"[trails-sdk] First time connection, redirecting to:",
|
|
30
|
-
initialScreen,
|
|
31
|
-
)
|
|
32
|
-
setCurrentScreen(initialScreen)
|
|
33
|
-
setHasConnectedBefore(true)
|
|
34
|
-
} else {
|
|
35
|
-
// Subsequent connections - check if user came from account-settings
|
|
36
|
-
const breadcrumbHistory = getBreadcrumbHistory()
|
|
37
|
-
const lastBreadcrumbScreen =
|
|
38
|
-
breadcrumbHistory.length > 0
|
|
39
|
-
? breadcrumbHistory[breadcrumbHistory.length - 1]
|
|
40
|
-
: null
|
|
41
|
-
|
|
42
|
-
if (lastBreadcrumbScreen === "account-settings") {
|
|
43
|
-
// User came from account-settings, return there
|
|
44
|
-
logger.console.log(
|
|
45
|
-
"[trails-sdk] Returning to account-settings after wallet connection",
|
|
46
|
-
)
|
|
47
|
-
setCurrentScreen("account-settings")
|
|
48
|
-
} else {
|
|
49
|
-
// User came from elsewhere, go to appropriate mode screen
|
|
50
|
-
const initialScreen = getInitialScreenForMode(currentMode)
|
|
51
|
-
logger.console.log(
|
|
52
|
-
"[trails-sdk] Subsequent connection, redirecting to:",
|
|
53
|
-
initialScreen,
|
|
54
|
-
)
|
|
55
|
-
setCurrentScreen(initialScreen)
|
|
56
|
-
}
|
|
57
|
-
setIsInitialScreenSet(true)
|
|
58
|
-
}
|
|
59
|
-
}, [
|
|
60
|
-
isConnected,
|
|
61
|
-
currentMode,
|
|
62
|
-
hasConnectedBefore,
|
|
63
|
-
getInitialScreenForMode,
|
|
64
|
-
setCurrentScreen,
|
|
65
|
-
getBreadcrumbHistory,
|
|
66
|
-
isInitialScreenSet,
|
|
67
|
-
])
|
|
68
|
-
|
|
69
|
-
return { hasConnectedBefore, isInitialScreenSet }
|
|
70
|
-
}
|