@0xsquid/react-hooks 1.0.4 → 1.0.5
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/assets/images/icons/wallets/index.d.ts +22 -0
- package/{src/assets/images/icons/wallets/index.ts → dist/assets/images/icons/wallets/index.js} +21 -21
- package/dist/assets/images/icons/wallets/index.js.map +1 -0
- package/dist/connectors/ExodusConnector.d.ts +4 -0
- package/{src/connectors/ExodusConnector.ts → dist/connectors/ExodusConnector.js} +3 -3
- package/dist/connectors/ExodusConnector.js.map +1 -0
- package/dist/connectors/LedgerLiveConnector.d.ts +40 -0
- package/dist/connectors/LedgerLiveConnector.js +177 -0
- package/dist/connectors/LedgerLiveConnector.js.map +1 -0
- package/dist/contracts/typechain/factories/ERC20__factory.js +324 -0
- package/dist/contracts/typechain/factories/ERC20__factory.js.map +1 -0
- package/dist/core/constants.d.ts +37 -0
- package/dist/core/constants.js +487 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/externalLinks.d.ts +18 -0
- package/{src/core/externalLinks.ts → dist/core/externalLinks.js} +5 -9
- package/dist/core/externalLinks.js.map +1 -0
- package/dist/core/index.js +2 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/multicall3.d.ts +16 -0
- package/dist/core/multicall3.js +23 -0
- package/dist/core/multicall3.js.map +1 -0
- package/dist/core/numbers.d.ts +3 -0
- package/dist/core/numbers.js +28 -0
- package/dist/core/numbers.js.map +1 -0
- package/dist/core/providers/CosmosProvider.d.ts +34 -0
- package/dist/core/providers/CosmosProvider.js +12 -0
- package/dist/core/providers/CosmosProvider.js.map +1 -0
- package/dist/core/queries/queries-keys.d.ts +34 -0
- package/dist/core/queries/queries-keys.js +120 -0
- package/dist/core/queries/queries-keys.js.map +1 -0
- package/dist/core/queries/react-query-config.d.ts +3 -0
- package/dist/core/queries/react-query-config.js +11 -0
- package/dist/core/queries/react-query-config.js.map +1 -0
- package/dist/core/types/components.d.ts +14 -0
- package/dist/core/types/components.js +2 -0
- package/dist/core/types/components.js.map +1 -0
- package/dist/core/types/config.d.ts +47 -0
- package/dist/core/types/config.js +2 -0
- package/dist/core/types/config.js.map +1 -0
- package/dist/core/types/dex.d.ts +28 -0
- package/dist/core/types/dex.js +33 -0
- package/dist/core/types/dex.js.map +1 -0
- package/dist/core/types/error.d.ts +44 -0
- package/dist/core/types/error.js +12 -0
- package/dist/core/types/error.js.map +1 -0
- package/dist/core/types/event.d.ts +17 -0
- package/dist/core/types/event.js +2 -0
- package/dist/core/types/event.js.map +1 -0
- package/dist/core/types/route.d.ts +9 -0
- package/dist/core/types/route.js +4 -0
- package/dist/core/types/route.js.map +1 -0
- package/dist/core/types/swap.d.ts +8 -0
- package/dist/core/types/swap.js +2 -0
- package/dist/core/types/swap.js.map +1 -0
- package/dist/core/types/tokens.d.ts +29 -0
- package/dist/core/types/tokens.js +2 -0
- package/dist/core/types/tokens.js.map +1 -0
- package/dist/core/types/transaction.d.ts +68 -0
- package/dist/core/types/transaction.js +38 -0
- package/dist/core/types/transaction.js.map +1 -0
- package/dist/core/types/types.d.ts +30 -0
- package/dist/core/types/types.js +7 -0
- package/dist/core/types/types.js.map +1 -0
- package/dist/core/types/wallet.d.ts +55 -0
- package/dist/core/types/wallet.js +26 -0
- package/dist/core/types/wallet.js.map +1 -0
- package/dist/hooks/chains/useSquidChains.d.ts +12 -0
- package/dist/hooks/chains/useSquidChains.js +45 -0
- package/dist/hooks/chains/useSquidChains.js.map +1 -0
- package/dist/hooks/cosmos/useCosmos.d.ts +33 -0
- package/dist/hooks/cosmos/useCosmos.js +194 -0
- package/dist/hooks/cosmos/useCosmos.js.map +1 -0
- package/dist/hooks/cosmos/useCosmosForChain.d.ts +4 -0
- package/dist/hooks/cosmos/useCosmosForChain.js +22 -0
- package/dist/hooks/cosmos/useCosmosForChain.js.map +1 -0
- package/{src/hooks/index.ts → dist/hooks/index.d.ts} +1 -7
- package/dist/hooks/index.js +27 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/navigation/useKeyboardNavigation.d.ts +7 -0
- package/dist/hooks/navigation/useKeyboardNavigation.js +69 -0
- package/dist/hooks/navigation/useKeyboardNavigation.js.map +1 -0
- package/dist/hooks/store/useSquidStore.d.ts +105 -0
- package/dist/hooks/store/useSquidStore.js +35 -0
- package/dist/hooks/store/useSquidStore.js.map +1 -0
- package/dist/hooks/swap/useSwap.d.ts +25 -0
- package/dist/hooks/swap/useSwap.js +229 -0
- package/dist/hooks/swap/useSwap.js.map +1 -0
- package/dist/hooks/tokens/useAllTokensWithBalance.d.ts +11 -0
- package/dist/hooks/tokens/useAllTokensWithBalance.js +97 -0
- package/dist/hooks/tokens/useAllTokensWithBalance.js.map +1 -0
- package/dist/hooks/tokens/useBalance.d.ts +34 -0
- package/dist/hooks/tokens/useBalance.js +112 -0
- package/dist/hooks/tokens/useBalance.js.map +1 -0
- package/dist/hooks/tokens/useMultiChainBalance.d.ts +17 -0
- package/dist/hooks/tokens/useMultiChainBalance.js +36 -0
- package/dist/hooks/tokens/useMultiChainBalance.js.map +1 -0
- package/dist/hooks/tokens/usePrices.d.ts +6 -0
- package/dist/hooks/tokens/usePrices.js +42 -0
- package/dist/hooks/tokens/usePrices.js.map +1 -0
- package/dist/hooks/tokens/useSingleTokenPrice.d.ts +10 -0
- package/dist/hooks/tokens/useSingleTokenPrice.js +32 -0
- package/dist/hooks/tokens/useSingleTokenPrice.js.map +1 -0
- package/dist/hooks/tokens/useSquidTokens.d.ts +13 -0
- package/dist/hooks/tokens/useSquidTokens.js +35 -0
- package/dist/hooks/tokens/useSquidTokens.js.map +1 -0
- package/dist/hooks/tokens/useTokensWithBalance.d.ts +7 -0
- package/dist/hooks/tokens/useTokensWithBalance.js +111 -0
- package/dist/hooks/tokens/useTokensWithBalance.js.map +1 -0
- package/dist/hooks/transaction/useEstimate.d.ts +44 -0
- package/dist/hooks/transaction/useEstimate.js +274 -0
- package/dist/hooks/transaction/useEstimate.js.map +1 -0
- package/dist/hooks/transaction/useEstimatePriceImpact.d.ts +7 -0
- package/dist/hooks/transaction/useEstimatePriceImpact.js +26 -0
- package/dist/hooks/transaction/useEstimatePriceImpact.js.map +1 -0
- package/dist/hooks/transaction/useExecuteTransaction.d.ts +20 -0
- package/dist/hooks/transaction/useExecuteTransaction.js +310 -0
- package/dist/hooks/transaction/useExecuteTransaction.js.map +1 -0
- package/dist/hooks/transaction/useExpress.d.ts +5 -0
- package/dist/hooks/transaction/useExpress.js +31 -0
- package/dist/hooks/transaction/useExpress.js.map +1 -0
- package/dist/hooks/transaction/useGetRoute.d.ts +14 -0
- package/dist/hooks/transaction/useGetRoute.js +96 -0
- package/dist/hooks/transaction/useGetRoute.js.map +1 -0
- package/dist/hooks/transaction/useSingleTransaction.d.ts +8 -0
- package/dist/hooks/transaction/useSingleTransaction.js +99 -0
- package/dist/hooks/transaction/useSingleTransaction.js.map +1 -0
- package/dist/hooks/transaction/useTransaction.d.ts +25 -0
- package/dist/hooks/transaction/useTransaction.js +521 -0
- package/dist/hooks/transaction/useTransaction.js.map +1 -0
- package/dist/hooks/user/useUserParams.d.ts +6 -0
- package/dist/hooks/user/useUserParams.js +41 -0
- package/dist/hooks/user/useUserParams.js.map +1 -0
- package/dist/hooks/wallet/useAddToken.d.ts +4 -0
- package/dist/hooks/wallet/useAddToken.js +45 -0
- package/dist/hooks/wallet/useAddToken.js.map +1 -0
- package/dist/hooks/wallet/useAutoConnect.d.ts +6 -0
- package/dist/hooks/wallet/useAutoConnect.js +44 -0
- package/dist/hooks/wallet/useAutoConnect.js.map +1 -0
- package/dist/hooks/wallet/useGnosisContext.d.ts +7 -0
- package/dist/hooks/wallet/useGnosisContext.js +70 -0
- package/dist/hooks/wallet/useGnosisContext.js.map +1 -0
- package/dist/hooks/wallet/useIntegratorContext.d.ts +5 -0
- package/dist/hooks/wallet/useIntegratorContext.js +39 -0
- package/dist/hooks/wallet/useIntegratorContext.js.map +1 -0
- package/dist/hooks/wallet/useMultiChainWallet.d.ts +8 -0
- package/dist/hooks/wallet/useMultiChainWallet.js +113 -0
- package/dist/hooks/wallet/useMultiChainWallet.js.map +1 -0
- package/dist/hooks/wallet/useWallet.d.ts +6 -0
- package/dist/hooks/wallet/useWallet.js +65 -0
- package/dist/hooks/wallet/useWallet.js.map +1 -0
- package/dist/hooks/webapp-router/useSquidRouter.d.ts +11 -0
- package/dist/hooks/webapp-router/useSquidRouter.js +33 -0
- package/dist/hooks/webapp-router/useSquidRouter.js.map +1 -0
- package/{src/index.ts → dist/index.d.ts} +0 -1
- package/dist/index.js.map +1 -0
- package/dist/provider/index.d.ts +10 -0
- package/dist/provider/index.js +71 -0
- package/dist/provider/index.js.map +1 -0
- package/dist/services/external/analyticsService.d.ts +18 -0
- package/dist/services/external/analyticsService.js +30 -0
- package/dist/services/external/analyticsService.js.map +1 -0
- package/dist/services/external/coingeckoService.d.ts +8 -0
- package/dist/services/external/coingeckoService.js +20 -0
- package/dist/services/external/coingeckoService.js.map +1 -0
- package/dist/services/external/rpcService.d.ts +4 -0
- package/dist/services/external/rpcService.js +145 -0
- package/dist/services/external/rpcService.js.map +1 -0
- package/dist/services/external/secretService.d.ts +28 -0
- package/dist/services/external/secretService.js +129 -0
- package/dist/services/external/secretService.js.map +1 -0
- package/dist/services/index.js +2 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/internal/apiService.d.ts +4 -0
- package/dist/services/internal/apiService.js +7 -0
- package/dist/services/internal/apiService.js.map +1 -0
- package/dist/services/internal/assetsService.d.ts +28 -0
- package/dist/services/internal/assetsService.js +46 -0
- package/dist/services/internal/assetsService.js.map +1 -0
- package/dist/services/internal/configService.d.ts +40 -0
- package/dist/services/internal/configService.js +119 -0
- package/dist/services/internal/configService.js.map +1 -0
- package/dist/services/internal/errorService.d.ts +30 -0
- package/{src/services/internal/errorService.ts → dist/services/internal/errorService.js} +35 -54
- package/dist/services/internal/errorService.js.map +1 -0
- package/dist/services/internal/eventService.d.ts +52 -0
- package/dist/services/internal/eventService.js +66 -0
- package/dist/services/internal/eventService.js.map +1 -0
- package/dist/services/internal/priceService.d.ts +1 -0
- package/dist/services/internal/priceService.js +7 -0
- package/dist/services/internal/priceService.js.map +1 -0
- package/dist/services/internal/transactionService.d.ts +43 -0
- package/dist/services/internal/transactionService.js +172 -0
- package/dist/services/internal/transactionService.js.map +1 -0
- package/dist/services/internal/transactionStatusService.d.ts +28 -0
- package/dist/services/internal/transactionStatusService.js +225 -0
- package/dist/services/internal/transactionStatusService.js.map +1 -0
- package/dist/services/internal/walletService.d.ts +28 -0
- package/dist/services/internal/walletService.js +123 -0
- package/dist/services/internal/walletService.js.map +1 -0
- package/dist/tests/assetsService.test.d.ts +1 -0
- package/dist/tests/assetsService.test.js +130 -0
- package/dist/tests/assetsService.test.js.map +1 -0
- package/dist/tests/configService.test.d.ts +1 -0
- package/dist/tests/configService.test.js +295 -0
- package/dist/tests/configService.test.js.map +1 -0
- package/dist/tests/fetchSquidData.d.ts +6 -0
- package/dist/tests/fetchSquidData.js +27 -0
- package/dist/tests/fetchSquidData.js.map +1 -0
- package/{src/tests/jest-svg-transform.ts → dist/tests/jest-svg-transform.js} +11 -9
- package/dist/tests/jest-svg-transform.js.map +1 -0
- package/dist/tests/sample.json +0 -0
- package/dist/tests/walletService.test.d.ts +1 -0
- package/dist/tests/walletService.test.js +74 -0
- package/dist/tests/walletService.test.js.map +1 -0
- package/package.json +5 -1
- package/.babelrc +0 -7
- package/.eslintignore +0 -1
- package/.eslintrc.json +0 -44
- package/CHANGELOG.md +0 -9
- package/jest.config.ts +0 -28
- package/scripts/copyAssets.js +0 -27
- package/scripts/removeBuildTestFolder.js +0 -28
- package/scripts/replacePaths.js +0 -37
- package/src/connectors/LedgerLiveConnector.ts +0 -226
- package/src/contracts/typechain/ERC20.d.ts +0 -441
- package/src/contracts/typechain/factories/ERC20__factory.ts +0 -340
- package/src/core/constants.ts +0 -549
- package/src/core/multicall3.ts +0 -22
- package/src/core/numbers.ts +0 -44
- package/src/core/providers/CosmosProvider.tsx +0 -55
- package/src/core/queries/queries-keys.ts +0 -156
- package/src/core/queries/react-query-config.ts +0 -13
- package/src/core/types/components.ts +0 -16
- package/src/core/types/config.ts +0 -52
- package/src/core/types/dex.ts +0 -31
- package/src/core/types/error.ts +0 -52
- package/src/core/types/event.ts +0 -16
- package/src/core/types/route.ts +0 -21
- package/src/core/types/swap.ts +0 -8
- package/src/core/types/tokens.ts +0 -30
- package/src/core/types/transaction.ts +0 -84
- package/src/core/types/types.ts +0 -37
- package/src/core/types/wallet.ts +0 -83
- package/src/hooks/chains/useSquidChains.ts +0 -66
- package/src/hooks/cosmos/useCosmos.ts +0 -279
- package/src/hooks/cosmos/useCosmosForChain.ts +0 -33
- package/src/hooks/navigation/useKeyboardNavigation.ts +0 -88
- package/src/hooks/store/useSquidStore.ts +0 -80
- package/src/hooks/swap/useSwap.ts +0 -359
- package/src/hooks/tokens/useAllTokensWithBalance.ts +0 -157
- package/src/hooks/tokens/useBalance.ts +0 -180
- package/src/hooks/tokens/useMultiChainBalance.ts +0 -59
- package/src/hooks/tokens/usePrices.ts +0 -52
- package/src/hooks/tokens/useSingleTokenPrice.ts +0 -45
- package/src/hooks/tokens/useSquidTokens.ts +0 -48
- package/src/hooks/tokens/useTokensWithBalance.ts +0 -169
- package/src/hooks/transaction/useEstimate.ts +0 -397
- package/src/hooks/transaction/useEstimatePriceImpact.ts +0 -39
- package/src/hooks/transaction/useExecuteTransaction.ts +0 -440
- package/src/hooks/transaction/useExpress.ts +0 -46
- package/src/hooks/transaction/useGetRoute.ts +0 -145
- package/src/hooks/transaction/useSingleTransaction.ts +0 -155
- package/src/hooks/transaction/useTransaction.ts +0 -734
- package/src/hooks/user/useUserParams.ts +0 -63
- package/src/hooks/wallet/useAddToken.ts +0 -53
- package/src/hooks/wallet/useAutoConnect.ts +0 -56
- package/src/hooks/wallet/useGnosisContext.ts +0 -84
- package/src/hooks/wallet/useIntegratorContext.ts +0 -44
- package/src/hooks/wallet/useMultiChainWallet.ts +0 -146
- package/src/hooks/wallet/useWallet.ts +0 -86
- package/src/hooks/webapp-router/useSquidRouter.ts +0 -42
- package/src/provider/index.tsx +0 -105
- package/src/react-app-env.d.ts +0 -2
- package/src/services/external/analyticsService.ts +0 -46
- package/src/services/external/coingeckoService.ts +0 -35
- package/src/services/external/rpcService.ts +0 -196
- package/src/services/external/secretService.ts +0 -178
- package/src/services/internal/apiService.ts +0 -6
- package/src/services/internal/assetsService.ts +0 -84
- package/src/services/internal/configService.ts +0 -261
- package/src/services/internal/eventService.ts +0 -93
- package/src/services/internal/priceService.ts +0 -10
- package/src/services/internal/transactionService.ts +0 -255
- package/src/services/internal/transactionStatusService.ts +0 -293
- package/src/services/internal/walletService.ts +0 -158
- package/src/tests/assetsService.test.ts +0 -176
- package/src/tests/configService.test.ts +0 -486
- package/src/tests/fetchSquidData.ts +0 -43
- package/src/tests/walletService.test.ts +0 -178
- package/tsconfig.cjs.json +0 -8
- package/tsconfig.json +0 -31
- /package/{src → dist}/assets/images/icons/wallets/binance.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/bitget.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/bitkeep.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/blockchaindotcom.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/brave.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/c98.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/coinbase.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/cosmostation.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/defiConnect.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/exodus.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/fetchai.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/keplr.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/leap.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/metamask.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/okx.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/rabby.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/trustwallet.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/walletConnect.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/wallet_icon.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/xdefi.svg +0 -0
- /package/{src → dist}/assets/images/icons/wallets/zerion.svg +0 -0
- /package/{src → dist}/contracts/typechain/factories/ERC20__factory.d.ts +0 -0
- /package/{src/core/index.ts → dist/core/index.d.ts} +0 -0
- /package/{src/services/index.ts → dist/services/index.d.ts} +0 -0
- /package/{src/tests/sample.json → dist/tests/jest-svg-transform.d.ts} +0 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { PriorityConnectors } from "./../../core/constants";
|
|
2
|
+
import { useEffect } from "react";
|
|
3
|
+
import { useConnect } from "wagmi";
|
|
4
|
+
const PRIORITY_CONNECTOR_ID = [PriorityConnectors.Safe];
|
|
5
|
+
const WAGMI_LOCAL_STORAGE_WALLET_ID = "wagmi.wallet";
|
|
6
|
+
/**
|
|
7
|
+
* Auto connect to Safe provider if it's present
|
|
8
|
+
* Safe will always be the priority connector
|
|
9
|
+
* Because if it's present, this means the user is on a Safe app iframe
|
|
10
|
+
*/
|
|
11
|
+
export const useAutoConnect = () => {
|
|
12
|
+
const { connect, connectors } = useConnect();
|
|
13
|
+
const wagmiLocalStorageWalletID = localStorage.getItem(WAGMI_LOCAL_STORAGE_WALLET_ID);
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
const queryParameters = new URLSearchParams(window.location.search);
|
|
16
|
+
// TODO: At the moment gnosis was published without the embed parameter in the manifest,
|
|
17
|
+
// but we should ask gnosis to change our app url to https://app.squidrouter.com/?embed="safe"
|
|
18
|
+
// So we could remove the priority connector array and just use the embed parameter
|
|
19
|
+
const embedType = queryParameters.get("embed");
|
|
20
|
+
let priorityConnector;
|
|
21
|
+
if (embedType) {
|
|
22
|
+
priorityConnector = connectors.find((c) => c.id === embedType);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
priorityConnector = connectors.find((c) => PRIORITY_CONNECTOR_ID.includes(c.id) && c.ready);
|
|
26
|
+
}
|
|
27
|
+
// Connect priority provider if it's present
|
|
28
|
+
// Otherwise, connect to the last wallet used if authorized
|
|
29
|
+
if (priorityConnector) {
|
|
30
|
+
connect({ connector: priorityConnector });
|
|
31
|
+
}
|
|
32
|
+
else if (wagmiLocalStorageWalletID) {
|
|
33
|
+
const wagmiLocalStorageWalletConnector = connectors.find((c) => c.id === JSON.parse(wagmiLocalStorageWalletID) && c.ready);
|
|
34
|
+
// If we do not check this, the wallet will try to connect even if the user disconnected on purpose
|
|
35
|
+
// Checking this will prevent the wallet to popup at each page refresh if the user is disconnected
|
|
36
|
+
wagmiLocalStorageWalletConnector?.isAuthorized().then((isAuthorized) => {
|
|
37
|
+
if (isAuthorized) {
|
|
38
|
+
connect({ connector: wagmiLocalStorageWalletConnector });
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}, [connect, connectors]);
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=useAutoConnect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAutoConnect.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useAutoConnect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,MAAM,qBAAqB,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAExD,MAAM,6BAA6B,GAAG,cAAc,CAAC;AAErD;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC;IAE7C,MAAM,yBAAyB,GAAG,YAAY,CAAC,OAAO,CACpD,6BAA6B,CAC9B,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpE,wFAAwF;QACxF,8FAA8F;QAC9F,mFAAmF;QACnF,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAuB,CAAC;QACrE,IAAI,iBAAsB,CAAC;QAE3B,IAAI,SAAS,EAAE,CAAC;YACd,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,iBAAiB,GAAG,UAAU,CAAC,IAAI,CACjC,CAAC,CAAC,EAAE,EAAE,CACJ,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAwB,CAAC,IAAI,CAAC,CAAC,KAAK,CACxE,CAAC;QACJ,CAAC;QAED,4CAA4C;QAC5C,2DAA2D;QAC3D,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,yBAAyB,EAAE,CAAC;YACrC,MAAM,gCAAgC,GAAG,UAAU,CAAC,IAAI,CACtD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC,KAAK,CACjE,CAAC;YAEF,mGAAmG;YACnG,kGAAkG;YAClG,gCAAgC,EAAE,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;gBACrE,IAAI,YAAY,EAAE,CAAC;oBACjB,OAAO,CAAC,EAAE,SAAS,EAAE,gCAAgC,EAAE,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AAC5B,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import SafeAppsSDK from "@safe-global/safe-apps-sdk";
|
|
2
|
+
export declare const useGnosisContext: () => {
|
|
3
|
+
getGnosisSafeContext: () => Promise<SafeAppsSDK | undefined>;
|
|
4
|
+
isSameAddressAndGnosisContext: boolean;
|
|
5
|
+
isGnosisContext: boolean;
|
|
6
|
+
getGnosisTransactionHash: (initialHash: string) => Promise<string>;
|
|
7
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { useSwapRoutePersistStore } from "./../../hooks/store/useSquidStore";
|
|
2
|
+
import { useSwap } from "./../../hooks/swap/useSwap";
|
|
3
|
+
import { useMultiChainWallet } from "./../../hooks/wallet/useMultiChainWallet";
|
|
4
|
+
import SafeAppsSDK from "@safe-global/safe-apps-sdk";
|
|
5
|
+
import { TransactionStatus as GnosisTransactionStatus } from "@safe-global/safe-apps-sdk/dist/src/types";
|
|
6
|
+
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
7
|
+
import { useAccount } from "wagmi";
|
|
8
|
+
export const useGnosisContext = () => {
|
|
9
|
+
const { connector } = useAccount();
|
|
10
|
+
const { fromChain } = useSwap();
|
|
11
|
+
const { swapRoute } = useSwapRoutePersistStore();
|
|
12
|
+
const { connectedAddress } = useMultiChainWallet(fromChain);
|
|
13
|
+
const [isGnosisContext, setisGnosisContext] = useState(false);
|
|
14
|
+
/**
|
|
15
|
+
* Method that will be used to send transaction
|
|
16
|
+
* TODO: could have loaded the sdk when app load and stored globally
|
|
17
|
+
*/
|
|
18
|
+
const getGnosisSafeContext = useCallback(async () => {
|
|
19
|
+
const appsSdk = new SafeAppsSDK();
|
|
20
|
+
const safe = await appsSdk.safe.getInfo();
|
|
21
|
+
const isSafeContext = safe.chainId !== undefined &&
|
|
22
|
+
safe.safeAddress !== undefined &&
|
|
23
|
+
connector?.id === "safe";
|
|
24
|
+
setisGnosisContext(isSafeContext);
|
|
25
|
+
if (isSafeContext)
|
|
26
|
+
return appsSdk;
|
|
27
|
+
return undefined;
|
|
28
|
+
}, [connector]);
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
getGnosisSafeContext();
|
|
31
|
+
}, [connector]);
|
|
32
|
+
/**
|
|
33
|
+
* Check if we are in a Gnosis Safe Context
|
|
34
|
+
* And if source wallet address = destination address
|
|
35
|
+
* If swapRoute.destinationAddress is not defined, it means that it's the same from the source
|
|
36
|
+
*/
|
|
37
|
+
const isSameAddressAndGnosisContext = useMemo(() => {
|
|
38
|
+
const destAddressSameAsSource = connectedAddress === swapRoute?.destinationAddress ||
|
|
39
|
+
swapRoute?.destinationAddress === undefined;
|
|
40
|
+
return isGnosisContext && destAddressSameAsSource;
|
|
41
|
+
}, [connectedAddress, swapRoute, isGnosisContext]);
|
|
42
|
+
/**
|
|
43
|
+
* There's a specific way to get the transaction hash for the safe connector
|
|
44
|
+
* Using then initial hash received by the transaction, we can get the real hash
|
|
45
|
+
* @param hashReceived
|
|
46
|
+
* @returns
|
|
47
|
+
*/
|
|
48
|
+
const getGnosisTransactionHash = async (initialHash) => {
|
|
49
|
+
const safeSdk = await getGnosisSafeContext();
|
|
50
|
+
const tx = await safeSdk?.txs.getBySafeTxHash(initialHash);
|
|
51
|
+
const status = tx?.txStatus;
|
|
52
|
+
if (status !== GnosisTransactionStatus.FAILED &&
|
|
53
|
+
status !== GnosisTransactionStatus.SUCCESS &&
|
|
54
|
+
status !== GnosisTransactionStatus.CANCELLED) {
|
|
55
|
+
// Workaround, Wait 2 seconds before checking the gnosis status again
|
|
56
|
+
// TODO: There might be a better way to do this
|
|
57
|
+
// eslint-disable-next-line no-promise-executor-return
|
|
58
|
+
await new Promise((res) => setTimeout(res, 2000));
|
|
59
|
+
return getGnosisTransactionHash(initialHash);
|
|
60
|
+
}
|
|
61
|
+
return tx?.txHash ?? initialHash;
|
|
62
|
+
};
|
|
63
|
+
return {
|
|
64
|
+
getGnosisSafeContext,
|
|
65
|
+
isSameAddressAndGnosisContext,
|
|
66
|
+
isGnosisContext,
|
|
67
|
+
getGnosisTransactionHash,
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=useGnosisContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGnosisContext.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useGnosisContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { PriorityConnectors } from "./../../core/constants";
|
|
2
|
+
import { useGnosisContext } from "./../../hooks/wallet/useGnosisContext";
|
|
3
|
+
import { useMemo } from "react";
|
|
4
|
+
export const useIntegratorContext = () => {
|
|
5
|
+
const { isGnosisContext } = useGnosisContext();
|
|
6
|
+
/**
|
|
7
|
+
* Check if the wallet is handled externally
|
|
8
|
+
* Example: Ledger or Gnosis Safe
|
|
9
|
+
* Either by the embed parameter or by Gnosis context
|
|
10
|
+
*/
|
|
11
|
+
const walletHandledExternally = useMemo(() => {
|
|
12
|
+
const embedTypesHavingExternalWallet = [
|
|
13
|
+
PriorityConnectors.LedgerLive,
|
|
14
|
+
PriorityConnectors.Safe,
|
|
15
|
+
];
|
|
16
|
+
const queryParameters = new URLSearchParams(window.location.search);
|
|
17
|
+
const embedType = queryParameters.get("embed");
|
|
18
|
+
return (isGnosisContext || embedTypesHavingExternalWallet.includes(embedType));
|
|
19
|
+
}, [isGnosisContext]);
|
|
20
|
+
const isEmbed = useMemo(() => {
|
|
21
|
+
const queryParameters = new URLSearchParams(window.location.search);
|
|
22
|
+
const embedType = queryParameters.get("embed");
|
|
23
|
+
return !!embedType;
|
|
24
|
+
}, []);
|
|
25
|
+
/**
|
|
26
|
+
* It's important to know if we can use certain features such as
|
|
27
|
+
* the clipboard reading
|
|
28
|
+
*/
|
|
29
|
+
const widgetInIframe = useMemo(() => {
|
|
30
|
+
try {
|
|
31
|
+
return window.self !== window.top;
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}, []);
|
|
37
|
+
return { walletHandledExternally, isEmbed, widgetInIframe };
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=useIntegratorContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIntegratorContext.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useIntegratorContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACvC,MAAM,EAAE,eAAe,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC/C;;;;OAIG;IACH,MAAM,uBAAuB,GAAY,OAAO,CAAC,GAAG,EAAE;QACpD,MAAM,8BAA8B,GAAyB;YAC3D,kBAAkB,CAAC,UAAU;YAC7B,kBAAkB,CAAC,IAAI;SACxB,CAAC;QACF,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAuB,CAAC;QAErE,OAAO,CACL,eAAe,IAAI,8BAA8B,CAAC,QAAQ,CAAC,SAAS,CAAC,CACtE,CAAC;IACJ,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3B,MAAM,eAAe,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAuB,CAAC;QACrE,OAAO,CAAC,CAAC,SAAS,CAAC;IACrB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP;;;OAGG;IACH,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,IAAI,CAAC;YACH,OAAO,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,GAAG,CAAC;QACpC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,uBAAuB,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;AAC9D,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ChainData } from "@0xsquid/sdk/dist/types";
|
|
2
|
+
export declare const useMultiChainWallet: (chainToCompare: ChainData | undefined) => {
|
|
3
|
+
changeNetwork: import("@tanstack/react-query").UseMutationResult<boolean, any, void, unknown>;
|
|
4
|
+
networkConnected: boolean | undefined;
|
|
5
|
+
networkConnectedOnRightChain: boolean;
|
|
6
|
+
connectedAddress: string | undefined;
|
|
7
|
+
parsedAddress: string;
|
|
8
|
+
};
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { useCosmosContext } from "./../../core/providers/CosmosProvider";
|
|
2
|
+
import { useCosmosForChain } from "./../../hooks/cosmos/useCosmosForChain";
|
|
3
|
+
import { formatWalletAddress } from "./../../services/internal/walletService";
|
|
4
|
+
import { ChainType } from "@0xsquid/sdk/dist/types";
|
|
5
|
+
import { useMutation } from "@tanstack/react-query";
|
|
6
|
+
import { AddChainError, UserRejectedRequestError } from "@wagmi/core";
|
|
7
|
+
import { ethers } from "ethers";
|
|
8
|
+
import { useMemo } from "react";
|
|
9
|
+
import { ChainNotConfiguredError, SwitchChainError, useAccount, useNetwork, useSwitchNetwork, } from "wagmi";
|
|
10
|
+
export const useMultiChainWallet = (chainToCompare) => {
|
|
11
|
+
const { chain: currentEvmChain } = useNetwork();
|
|
12
|
+
const { isConnected: isEvmConnected, connector, address } = useAccount();
|
|
13
|
+
const { isConnected: cosmosIsConnected } = useCosmosContext();
|
|
14
|
+
const { cosmosAddress } = useCosmosForChain(chainToCompare);
|
|
15
|
+
const { switchNetworkAsync } = useSwitchNetwork({
|
|
16
|
+
throwForSwitchChainNotSupported: true,
|
|
17
|
+
});
|
|
18
|
+
/**
|
|
19
|
+
* Get connected address, depends on chainType
|
|
20
|
+
*/
|
|
21
|
+
const connectedAddress = useMemo(() => {
|
|
22
|
+
switch (chainToCompare?.chainType) {
|
|
23
|
+
case ChainType.EVM:
|
|
24
|
+
return address;
|
|
25
|
+
case ChainType.COSMOS:
|
|
26
|
+
return cosmosAddress;
|
|
27
|
+
default:
|
|
28
|
+
return address;
|
|
29
|
+
}
|
|
30
|
+
}, [address, chainToCompare?.chainType, cosmosAddress]);
|
|
31
|
+
const parsedAddress = useMemo(() => formatWalletAddress(connectedAddress), [connectedAddress]);
|
|
32
|
+
/**
|
|
33
|
+
* Change current network for desired chain
|
|
34
|
+
*/
|
|
35
|
+
const changeNetwork = useMutation(async () => {
|
|
36
|
+
// throw for tenderly fork chain addition
|
|
37
|
+
if (chainToCompare?.rpc.includes("tenderly")) {
|
|
38
|
+
throw new SwitchChainError("Add tenderly chain");
|
|
39
|
+
}
|
|
40
|
+
if (chainToCompare?.chainType === ChainType.EVM) {
|
|
41
|
+
await switchNetworkAsync?.(+chainToCompare.chainId);
|
|
42
|
+
}
|
|
43
|
+
// Implement keplr change network
|
|
44
|
+
// Looks like there are no method to do that at the moment
|
|
45
|
+
return false;
|
|
46
|
+
}, {
|
|
47
|
+
onError: async (error) => {
|
|
48
|
+
if (error instanceof UserRejectedRequestError) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if ((error instanceof ChainNotConfiguredError ||
|
|
52
|
+
error instanceof SwitchChainError ||
|
|
53
|
+
error instanceof AddChainError) &&
|
|
54
|
+
chainToCompare) {
|
|
55
|
+
const provider = await connector?.getProvider();
|
|
56
|
+
const chainName = chainToCompare.rpc.includes("tenderly")
|
|
57
|
+
? `${chainToCompare.networkName} Tenderly fork`
|
|
58
|
+
: chainToCompare.networkName;
|
|
59
|
+
const chainParameters = {
|
|
60
|
+
chainId: ethers.utils.hexValue(parseInt(chainToCompare.chainId, 10)),
|
|
61
|
+
chainName,
|
|
62
|
+
nativeCurrency: chainToCompare.nativeCurrency,
|
|
63
|
+
rpcUrls: [chainToCompare.rpc],
|
|
64
|
+
blockExplorerUrls: chainToCompare.blockExplorerUrls,
|
|
65
|
+
iconUrls: [chainToCompare.chainIconURI],
|
|
66
|
+
};
|
|
67
|
+
provider.request({
|
|
68
|
+
method: "wallet_addEthereumChain",
|
|
69
|
+
params: [chainParameters],
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
/**
|
|
75
|
+
* Handle multiple chains
|
|
76
|
+
*/
|
|
77
|
+
const networkConnected = useMemo(() => {
|
|
78
|
+
switch (chainToCompare?.chainType) {
|
|
79
|
+
case ChainType.EVM:
|
|
80
|
+
return isEvmConnected;
|
|
81
|
+
case ChainType.COSMOS:
|
|
82
|
+
return cosmosIsConnected;
|
|
83
|
+
default:
|
|
84
|
+
return isEvmConnected;
|
|
85
|
+
}
|
|
86
|
+
}, [isEvmConnected, chainToCompare, cosmosIsConnected]);
|
|
87
|
+
/**
|
|
88
|
+
* Checks if Network is connected and with the right chain
|
|
89
|
+
*/
|
|
90
|
+
const networkConnectedOnRightChain = useMemo(() => {
|
|
91
|
+
if (chainToCompare?.chainType === ChainType.EVM) {
|
|
92
|
+
// tenderly validation based on rpc
|
|
93
|
+
if (currentEvmChain?.rpcUrls?.default?.http?.length &&
|
|
94
|
+
currentEvmChain?.rpcUrls?.default?.http[0].includes("tenderly")) {
|
|
95
|
+
return (isEvmConnected &&
|
|
96
|
+
currentEvmChain?.rpcUrls?.default?.http[0].toLowerCase() ===
|
|
97
|
+
chainToCompare.rpc.toLowerCase());
|
|
98
|
+
}
|
|
99
|
+
return (isEvmConnected &&
|
|
100
|
+
currentEvmChain?.id.toString() === chainToCompare.chainId);
|
|
101
|
+
}
|
|
102
|
+
// TODO: Implement keplr check
|
|
103
|
+
return true;
|
|
104
|
+
}, [isEvmConnected, currentEvmChain, chainToCompare]);
|
|
105
|
+
return {
|
|
106
|
+
changeNetwork,
|
|
107
|
+
networkConnected,
|
|
108
|
+
networkConnectedOnRightChain,
|
|
109
|
+
connectedAddress,
|
|
110
|
+
parsedAddress,
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
//# sourceMappingURL=useMultiChainWallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMultiChainWallet.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useMultiChainWallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Wallet } from "@/core/types/wallet";
|
|
2
|
+
import type { ChainData } from "@0xsquid/sdk/dist/types";
|
|
3
|
+
export declare const useWallet: (chain: ChainData | undefined) => {
|
|
4
|
+
currentWallet: Wallet | undefined;
|
|
5
|
+
connectWallet: (wallet: Wallet, redirect?: boolean, direction?: "from" | "to") => Promise<void>;
|
|
6
|
+
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { wallets } from "./../../core/constants";
|
|
2
|
+
import { useCosmosContext } from "./../../core/providers/CosmosProvider";
|
|
3
|
+
import { useSquidChains } from "./../../hooks/chains/useSquidChains";
|
|
4
|
+
import { useSquidRouter } from "./../../hooks/webapp-router/useSquidRouter";
|
|
5
|
+
import { formatChainsForWagmi, redirectExtensionStoreIfNotInstalled, } from "./../../services/internal/walletService";
|
|
6
|
+
import { ChainType } from "@0xsquid/sdk/dist/types";
|
|
7
|
+
import { useMemo } from "react";
|
|
8
|
+
import { useAccount, useConnect, useDisconnect } from "wagmi";
|
|
9
|
+
export const useWallet = (chain) => {
|
|
10
|
+
const { connector: activeConnector, isConnected: isEvmConnected } = useAccount();
|
|
11
|
+
const { disconnectAsync: disconnectEvm } = useDisconnect();
|
|
12
|
+
const { isConnected: cosmosIsConnected, connectCosmos, cosmosConnectedWallet, } = useCosmosContext();
|
|
13
|
+
const { connectAsync } = useConnect();
|
|
14
|
+
const { previousRoute } = useSquidRouter();
|
|
15
|
+
const { chains } = useSquidChains();
|
|
16
|
+
const connectWallet = async (wallet, redirect, direction) => {
|
|
17
|
+
redirectExtensionStoreIfNotInstalled(wallet);
|
|
18
|
+
try {
|
|
19
|
+
if (wallet && wallet.connector && wallet.type === ChainType.EVM) {
|
|
20
|
+
await disconnectEvm();
|
|
21
|
+
await connectAsync({
|
|
22
|
+
connector: wallet.connector(formatChainsForWagmi(chains)),
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
else if (wallet.type === ChainType.COSMOS && chain) {
|
|
26
|
+
await connectCosmos?.mutateAsync({ chain, wallet, direction });
|
|
27
|
+
}
|
|
28
|
+
if (redirect) {
|
|
29
|
+
previousRoute();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
console.error(error);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Get the connected wallet object
|
|
38
|
+
* @returns {Wallet | undefined}
|
|
39
|
+
*/
|
|
40
|
+
const currentWallet = useMemo(() => {
|
|
41
|
+
if (chain?.chainType === ChainType.EVM) {
|
|
42
|
+
if (activeConnector?.id && isEvmConnected) {
|
|
43
|
+
const activeWallet = wallets.find((w) => w.connectorId === activeConnector.id);
|
|
44
|
+
return activeWallet;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (chain?.chainType === ChainType.COSMOS) {
|
|
48
|
+
if (cosmosIsConnected) {
|
|
49
|
+
return wallets.find((w) => w.connectorId === cosmosConnectedWallet?.connectorId);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return undefined;
|
|
53
|
+
}, [
|
|
54
|
+
activeConnector?.id,
|
|
55
|
+
chain?.chainType,
|
|
56
|
+
cosmosConnectedWallet?.connectorId,
|
|
57
|
+
cosmosIsConnected,
|
|
58
|
+
isEvmConnected,
|
|
59
|
+
]);
|
|
60
|
+
return {
|
|
61
|
+
currentWallet,
|
|
62
|
+
connectWallet,
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=useWallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWallet.js","sourceRoot":"","sources":["../../../src/hooks/wallet/useWallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { WidgetRoute } from "@/core/types/route";
|
|
2
|
+
export declare const useSquidRouter: () => {
|
|
3
|
+
currentRoute: WidgetRoute;
|
|
4
|
+
switchRoute: (route: WidgetRoute, params?: {
|
|
5
|
+
[key: string]: any | undefined;
|
|
6
|
+
} | undefined, addRouteToHistory?: boolean) => void;
|
|
7
|
+
previousRoute: () => void;
|
|
8
|
+
currentRouteParams: {
|
|
9
|
+
[key: string]: any;
|
|
10
|
+
} | undefined;
|
|
11
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { useSquidRouterStore } from "./../../hooks/store/useSquidStore";
|
|
2
|
+
export const useSquidRouter = () => {
|
|
3
|
+
const { history } = useSquidRouterStore();
|
|
4
|
+
const switchRoute = (route, params, addRouteToHistory = true) => {
|
|
5
|
+
const currentHistory = useSquidRouterStore.getState().history;
|
|
6
|
+
if (addRouteToHistory) {
|
|
7
|
+
useSquidRouterStore.setState({
|
|
8
|
+
history: [...currentHistory, { route, params }],
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
useSquidRouterStore.setState({
|
|
13
|
+
history: [...currentHistory.slice(0, -1), { route, params }],
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const previousRoute = () => {
|
|
18
|
+
const currentHistory = useSquidRouterStore.getState().history;
|
|
19
|
+
currentHistory.pop();
|
|
20
|
+
useSquidRouterStore.setState({
|
|
21
|
+
history: currentHistory,
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
const currentRoute = history[history.length - 1].route;
|
|
25
|
+
const currentRouteParams = history[history.length - 1].params;
|
|
26
|
+
return {
|
|
27
|
+
currentRoute,
|
|
28
|
+
switchRoute,
|
|
29
|
+
previousRoute,
|
|
30
|
+
currentRouteParams,
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=useSquidRouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSquidRouter.js","sourceRoot":"","sources":["../../../src/hooks/webapp-router/useSquidRouter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,EAAE,OAAO,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAE1C,MAAM,WAAW,GAAG,CAClB,KAAkB,EAClB,MAAuD,EACvD,iBAAiB,GAAG,IAAI,EACxB,EAAE;QACF,MAAM,cAAc,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC;QAC9D,IAAI,iBAAiB,EAAE,CAAC;YACtB,mBAAmB,CAAC,QAAQ,CAAC;gBAC3B,OAAO,EAAE,CAAC,GAAG,cAAc,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;aAChD,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,mBAAmB,CAAC,QAAQ,CAAC;gBAC3B,OAAO,EAAE,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;aAC7D,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,MAAM,cAAc,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC;QAC9D,cAAc,CAAC,GAAG,EAAE,CAAC;QAErB,mBAAmB,CAAC,QAAQ,CAAC;YAC3B,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IACvD,MAAM,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAE9D,OAAO;QACL,YAAY;QACZ,WAAW;QACX,aAAa;QACb,kBAAkB;KACnB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { wallets } from "./../core/constants";
|
|
2
|
+
import { CosmosProvider } from "./../core/providers/CosmosProvider";
|
|
3
|
+
import { defaultOptions } from "./../core/queries/react-query-config";
|
|
4
|
+
import { useSquidStore } from "./../hooks/store/useSquidStore";
|
|
5
|
+
import { getConfigWithDefaults } from "./../services/internal/configService";
|
|
6
|
+
import { formatChainsForWagmi } from "./../services/internal/walletService";
|
|
7
|
+
import { Squid } from "@0xsquid/sdk";
|
|
8
|
+
import { ChainType } from "@0xsquid/squid-types";
|
|
9
|
+
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
10
|
+
import { createContext, useEffect, useState } from "react";
|
|
11
|
+
import React from "react";
|
|
12
|
+
import { WagmiConfig, configureChains, createClient } from "wagmi";
|
|
13
|
+
import { jsonRpcProvider } from "wagmi/providers/jsonRpc";
|
|
14
|
+
const SquidContext = createContext(undefined);
|
|
15
|
+
const verifyIntegratorIdValidity = (integratorId) => {
|
|
16
|
+
if (!integratorId) {
|
|
17
|
+
throw new Error("Integrator ID is required");
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
export const SquidProvider = ({ children, config, }) => {
|
|
21
|
+
console.log("SquidProvider");
|
|
22
|
+
verifyIntegratorIdValidity(config.integratorId);
|
|
23
|
+
const queryClient = new QueryClient({ defaultOptions });
|
|
24
|
+
const [wagmiClient, setWagmiClient] = useState(null);
|
|
25
|
+
/**
|
|
26
|
+
* Initialize Wagmi client
|
|
27
|
+
* @param chains
|
|
28
|
+
*/
|
|
29
|
+
const initWagmiClient = (chains) => {
|
|
30
|
+
const { provider, chains: wagmiChains } = configureChains(formatChainsForWagmi(chains), [
|
|
31
|
+
jsonRpcProvider({
|
|
32
|
+
rpc: (chain) => ({
|
|
33
|
+
http: chain.rpcUrls.default.http[0] ?? "",
|
|
34
|
+
webSocket: undefined,
|
|
35
|
+
}),
|
|
36
|
+
}),
|
|
37
|
+
]);
|
|
38
|
+
// Get formatted connectors from Squid supported wallets
|
|
39
|
+
const evmWalletConnectors = wallets
|
|
40
|
+
.filter((w) => w.type === ChainType.EVM)
|
|
41
|
+
.map((w) => w.connector?.(wagmiChains));
|
|
42
|
+
const wClient = createClient({
|
|
43
|
+
persister: null,
|
|
44
|
+
provider,
|
|
45
|
+
connectors: [...evmWalletConnectors],
|
|
46
|
+
});
|
|
47
|
+
setWagmiClient(wClient);
|
|
48
|
+
};
|
|
49
|
+
// Initialize Squid SDK & wagmi client
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
const initializeSdk = async () => {
|
|
52
|
+
const squid = new Squid({
|
|
53
|
+
integratorId: config.integratorId,
|
|
54
|
+
baseUrl: "https://v2.api.squidrouter.com",
|
|
55
|
+
});
|
|
56
|
+
await squid.init();
|
|
57
|
+
useSquidStore.setState((_) => ({
|
|
58
|
+
config: getConfigWithDefaults({
|
|
59
|
+
integratorId: config.integratorId,
|
|
60
|
+
}),
|
|
61
|
+
squid,
|
|
62
|
+
}));
|
|
63
|
+
initWagmiClient(squid.chains);
|
|
64
|
+
};
|
|
65
|
+
initializeSdk();
|
|
66
|
+
}, []);
|
|
67
|
+
return (React.createElement(SquidContext.Provider, { value: undefined },
|
|
68
|
+
React.createElement(QueryClientProvider, { client: queryClient }, wagmiClient && (React.createElement(WagmiConfig, { client: wagmiClient },
|
|
69
|
+
React.createElement(CosmosProvider, null, children))))));
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/provider/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface EventData {
|
|
2
|
+
event: string;
|
|
3
|
+
}
|
|
4
|
+
declare global {
|
|
5
|
+
interface Window {
|
|
6
|
+
dataLayer: Array<EventData> | undefined;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export declare class AnalyticsService {
|
|
10
|
+
private static pushEvent;
|
|
11
|
+
static submitButtonPushed(): void;
|
|
12
|
+
static givePermissionToUseTokenButton(): void;
|
|
13
|
+
static settingClicked(): void;
|
|
14
|
+
static historyClicked(): void;
|
|
15
|
+
static expressClicked(): void;
|
|
16
|
+
static regularClicked(): void;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export class AnalyticsService {
|
|
2
|
+
static pushEvent(eventData) {
|
|
3
|
+
if (window) {
|
|
4
|
+
const dataLayer = window.dataLayer || [];
|
|
5
|
+
const domain = window.location.hostname;
|
|
6
|
+
if (dataLayer && domain.includes("squidrouter.com")) {
|
|
7
|
+
dataLayer.push(eventData);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
static submitButtonPushed() {
|
|
12
|
+
this.pushEvent({ event: "submitswap_cta_clicked" });
|
|
13
|
+
}
|
|
14
|
+
static givePermissionToUseTokenButton() {
|
|
15
|
+
this.pushEvent({ event: "permissiontoken_cta_clicked" });
|
|
16
|
+
}
|
|
17
|
+
static settingClicked() {
|
|
18
|
+
this.pushEvent({ event: "settings_clicked" });
|
|
19
|
+
}
|
|
20
|
+
static historyClicked() {
|
|
21
|
+
this.pushEvent({ event: "history_clicked" });
|
|
22
|
+
}
|
|
23
|
+
static expressClicked() {
|
|
24
|
+
this.pushEvent({ event: "expressTx_clicked" });
|
|
25
|
+
}
|
|
26
|
+
static regularClicked() {
|
|
27
|
+
this.pushEvent({ event: "regularTx_clicked" });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=analyticsService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analyticsService.js","sourceRoot":"","sources":["../../../src/services/external/analyticsService.ts"],"names":[],"mappings":"AAUA,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAC,SAAS,CAAC,SAAoB;QAC3C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAExC,IAAI,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACpD,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,kBAAkB;QAC9B,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;IACtD,CAAC;IAEM,MAAM,CAAC,8BAA8B;QAC1C,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC,CAAC;IAC3D,CAAC;IAEM,MAAM,CAAC,cAAc;QAC1B,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,CAAC;IAChD,CAAC;IAEM,MAAM,CAAC,cAAc;QAC1B,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEM,MAAM,CAAC,cAAc;QAC1B,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACjD,CAAC;IAEM,MAAM,CAAC,cAAc;QAC1B,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACjD,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface CoingeckoPriceQuery {
|
|
2
|
+
apiUrl?: string;
|
|
3
|
+
chainId?: string;
|
|
4
|
+
tokenAddress?: string;
|
|
5
|
+
integratorId?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const fetchPriceForToken: ({ apiUrl, chainId, tokenAddress, integratorId, }: CoingeckoPriceQuery) => Promise<number>;
|
|
8
|
+
export {};
|