@velora-dex/widget 0.3.11-dev.2 → 0.3.11-dev.3
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/components/ui/tooltip.js +1 -1
- package/dist/components/ui/tooltip.js.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.d.ts.map +1 -1
- package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js +41 -72
- package/dist/components/web3/ConnectExternalProvider/AutoconnectExternal.js.map +1 -1
- package/dist/components/web3/ConnectWallets/walletIcons.d.ts +1 -4
- package/dist/components/web3/ConnectWallets/walletIcons.d.ts.map +1 -1
- package/dist/components/web3/ConnectWallets/walletIcons.js +7 -18
- package/dist/components/web3/ConnectWallets/walletIcons.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.d.ts +6 -4
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.d.ts.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js +346 -139
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/index.js +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/index.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.js +24 -19
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenCloud/tokens.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow.js +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenListBody/TokenListRow.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenSearch.d.ts.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenSearch.js +48 -36
- package/dist/components/widget/Dialog/SelectTokenDialog/TokenSearch.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/types.d.ts +3 -2
- package/dist/components/widget/Dialog/SelectTokenDialog/types.d.ts.map +1 -1
- package/dist/components/widget/NetworkSwitcher/NetworkSwitcherDropdown.d.ts.map +1 -1
- package/dist/components/widget/NetworkSwitcher/NetworkSwitcherDropdown.js +57 -108
- package/dist/components/widget/NetworkSwitcher/NetworkSwitcherDropdown.js.map +1 -1
- package/dist/components/widget/NetworkSwitcher/NetworkSwitcherList.d.ts +3 -0
- package/dist/components/widget/NetworkSwitcher/NetworkSwitcherList.d.ts.map +1 -0
- package/dist/components/widget/NetworkSwitcher/NetworkSwitcherList.js +72 -0
- package/dist/components/widget/NetworkSwitcher/NetworkSwitcherList.js.map +1 -0
- package/dist/components/widget/NetworkSwitcher/common/AllNetworksItem.d.ts +5 -0
- package/dist/components/widget/NetworkSwitcher/common/AllNetworksItem.d.ts.map +1 -0
- package/dist/components/widget/NetworkSwitcher/common/AllNetworksItem.js +48 -0
- package/dist/components/widget/NetworkSwitcher/common/AllNetworksItem.js.map +1 -0
- package/dist/components/widget/NetworkSwitcher/common/NetworkItem.d.ts +7 -0
- package/dist/components/widget/NetworkSwitcher/common/NetworkItem.d.ts.map +1 -0
- package/dist/components/widget/NetworkSwitcher/common/NetworkItem.js +46 -0
- package/dist/components/widget/NetworkSwitcher/common/NetworkItem.js.map +1 -0
- package/dist/components/widget/NetworkSwitcher/types.d.ts +13 -2
- package/dist/components/widget/NetworkSwitcher/types.d.ts.map +1 -1
- package/dist/components/widget/NetworkSwitcher/utils/items.d.ts +3 -0
- package/dist/components/widget/NetworkSwitcher/utils/items.d.ts.map +1 -0
- package/dist/components/widget/NetworkSwitcher/utils/items.js +65 -0
- package/dist/components/widget/NetworkSwitcher/utils/items.js.map +1 -0
- package/dist/components/widget/NetworkWithIcon/NetworkWithIcon.js +2 -2
- package/dist/components/widget/NetworkWithIcon/NetworkWithIcon.js.map +1 -1
- package/dist/components/widget/ReceiverAddress/state/subscriptions.d.ts.map +1 -1
- package/dist/components/widget/ReceiverAddress/state/subscriptions.js +5 -11
- package/dist/components/widget/ReceiverAddress/state/subscriptions.js.map +1 -1
- package/dist/components/widget/Screen/GenericScreen.d.ts +6 -2
- package/dist/components/widget/Screen/GenericScreen.d.ts.map +1 -1
- package/dist/components/widget/Screen/GenericScreen.js +112 -33
- package/dist/components/widget/Screen/GenericScreen.js.map +1 -1
- package/dist/components/widget/SelectToken/SelectTokenButton.d.ts +1 -1
- package/dist/components/widget/SelectToken/SelectTokenButton.d.ts.map +1 -1
- package/dist/components/widget/SelectToken/SelectTokenButton.js +100 -73
- package/dist/components/widget/SelectToken/SelectTokenButton.js.map +1 -1
- package/dist/components/widget/SelectToken/types.d.ts +3 -0
- package/dist/components/widget/SelectToken/types.d.ts.map +1 -1
- package/dist/components/widget/TokenInput/InputContainer.d.ts +3 -0
- package/dist/components/widget/TokenInput/InputContainer.d.ts.map +1 -0
- package/dist/components/widget/TokenInput/InputContainer.js +54 -0
- package/dist/components/widget/TokenInput/InputContainer.js.map +1 -0
- package/dist/components/widget/TokenInput/InputField.d.ts +6 -0
- package/dist/components/widget/TokenInput/InputField.d.ts.map +1 -0
- package/dist/components/widget/TokenInput/InputField.js +84 -0
- package/dist/components/widget/TokenInput/InputField.js.map +1 -0
- package/dist/components/widget/TokenInput/InputFooter.d.ts +5 -0
- package/dist/components/widget/TokenInput/InputFooter.d.ts.map +1 -0
- package/dist/components/widget/TokenInput/InputFooter.js +206 -0
- package/dist/components/widget/TokenInput/InputFooter.js.map +1 -0
- package/dist/components/widget/TokenInput/InputHeader.d.ts +5 -0
- package/dist/components/widget/TokenInput/InputHeader.d.ts.map +1 -0
- package/dist/components/widget/TokenInput/InputHeader.js +58 -0
- package/dist/components/widget/TokenInput/InputHeader.js.map +1 -0
- package/dist/components/widget/TokenInput/common/Balance.d.ts +3 -0
- package/dist/components/widget/TokenInput/common/Balance.d.ts.map +1 -0
- package/dist/components/widget/TokenInput/common/Balance.js +23 -0
- package/dist/components/widget/TokenInput/common/Balance.js.map +1 -0
- package/dist/components/widget/TokenInput/common/MaxButtons.d.ts +4 -0
- package/dist/components/widget/TokenInput/common/MaxButtons.d.ts.map +1 -0
- package/dist/components/widget/TokenInput/common/MaxButtons.js +49 -0
- package/dist/components/widget/TokenInput/common/MaxButtons.js.map +1 -0
- package/dist/components/widget/TokenInput/index.d.ts.map +1 -1
- package/dist/components/widget/TokenInput/index.js +115 -153
- package/dist/components/widget/TokenInput/index.js.map +1 -1
- package/dist/components/widget/TokenInput/types.d.ts +7 -1
- package/dist/components/widget/TokenInput/types.d.ts.map +1 -1
- package/dist/components/widget/TransactionDetails/LimitOrderDetails/Controls.d.ts +2 -2
- package/dist/components/widget/TransactionDetails/LimitOrderDetails/Controls.d.ts.map +1 -1
- package/dist/components/widget/TransactionDetails/LimitOrderDetails/Controls.js +23 -22
- package/dist/components/widget/TransactionDetails/LimitOrderDetails/Controls.js.map +1 -1
- package/dist/components/widget/TransactionDetails/LimitOrderDetails/TransactionDetails.js +1 -1
- package/dist/components/widget/TransactionDetails/LimitOrderDetails/TransactionDetails.js.map +1 -1
- package/dist/configurator/Configurator.d.ts.map +1 -1
- package/dist/configurator/components/EnabledChainsSelector.d.ts.map +1 -1
- package/dist/configurator/components/PartnerInput.d.ts +5 -3
- package/dist/configurator/components/PartnerInput.d.ts.map +1 -1
- package/dist/configurator/components/common/Input.d.ts +9 -0
- package/dist/configurator/components/common/Input.d.ts.map +1 -1
- package/dist/core/constants.d.ts +3 -0
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +4 -1
- package/dist/core/constants.js.map +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +152 -135
- package/dist/core/index.js.map +1 -1
- package/dist/core/inputs/hooks/useMaxButtonProps.d.ts +2 -7
- package/dist/core/inputs/hooks/useMaxButtonProps.d.ts.map +1 -1
- package/dist/core/inputs/hooks/useMaxButtonProps.js +39 -6
- package/dist/core/inputs/hooks/useMaxButtonProps.js.map +1 -1
- package/dist/core/screen/hooks/useResizeObserver.d.ts +2 -0
- package/dist/core/screen/hooks/useResizeObserver.d.ts.map +1 -0
- package/dist/core/screen/hooks/useResizeObserver.js +36 -0
- package/dist/core/screen/hooks/useResizeObserver.js.map +1 -0
- package/dist/core/state/configActionsAtom.d.ts.map +1 -1
- package/dist/core/state/configActionsAtom.js +3 -3
- package/dist/core/state/configActionsAtom.js.map +1 -1
- package/dist/core/state/configAtom.d.ts +5 -6
- package/dist/core/state/configAtom.d.ts.map +1 -1
- package/dist/core/state/configAtom.js +8 -9
- package/dist/core/state/configAtom.js.map +1 -1
- package/dist/core/state/containerAtom.d.ts +4 -0
- package/dist/core/state/containerAtom.d.ts.map +1 -1
- package/dist/core/state/containerAtom.js +8 -1
- package/dist/core/state/containerAtom.js.map +1 -1
- package/dist/core/state/externalProviderAtom.d.ts +0 -9
- package/dist/core/state/externalProviderAtom.d.ts.map +1 -1
- package/dist/core/state/externalProviderAtom.js +1 -28
- package/dist/core/state/externalProviderAtom.js.map +1 -1
- package/dist/core/state/validatedPartnerConfigAtom.d.ts +3 -0
- package/dist/core/state/validatedPartnerConfigAtom.d.ts.map +1 -0
- package/dist/core/state/validatedPartnerConfigAtom.js +22 -0
- package/dist/core/state/validatedPartnerConfigAtom.js.map +1 -0
- package/dist/core/types.d.ts +12 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/events/getters/swap.d.ts.map +1 -1
- package/dist/events/getters/swap.js +1 -2
- package/dist/events/getters/swap.js.map +1 -1
- package/dist/events/hooks/useOnWalletConnect.d.ts.map +1 -1
- package/dist/events/hooks/useOnWalletConnect.js +1 -6
- package/dist/events/hooks/useOnWalletConnect.js.map +1 -1
- package/dist/events/types/connectWallet.d.ts +3 -3
- package/dist/events/types/connectWallet.d.ts.map +1 -1
- package/dist/hooks/batch/useAwaitCalls.d.ts.map +1 -1
- package/dist/hooks/batch/useAwaitCalls.js.map +1 -1
- package/dist/hooks/connectors/useIsConnectedSafe.d.ts.map +1 -1
- package/dist/hooks/connectors/useIsConnectedSafe.js +1 -3
- package/dist/hooks/connectors/useIsConnectedSafe.js.map +1 -1
- package/dist/hooks/connectors/useIsGnosisSafeConnector.d.ts +1 -4
- package/dist/hooks/connectors/useIsGnosisSafeConnector.d.ts.map +1 -1
- package/dist/hooks/connectors/useIsGnosisSafeConnector.js +4 -3
- package/dist/hooks/connectors/useIsGnosisSafeConnector.js.map +1 -1
- package/dist/hooks/connectors/useIsSafeThroughWalletConnect.d.ts +1 -1
- package/dist/hooks/connectors/useIsSafeThroughWalletConnect.d.ts.map +1 -1
- package/dist/hooks/connectors/useIsSafeThroughWalletConnect.js +2 -16
- package/dist/hooks/connectors/useIsSafeThroughWalletConnect.js.map +1 -1
- package/dist/hooks/otc/mutations/useFillOrder.js +4 -5
- package/dist/hooks/otc/mutations/useFillOrder.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.js +2 -3
- package/dist/hooks/otc/tradeFlow/useFillOtcOrderFlow.js.map +1 -1
- package/dist/hooks/otc/tradeFlow/useFillOtcOrderStep.d.ts.map +1 -1
- package/dist/hooks/otc/tradeFlow/useFillOtcOrderStep.js +4 -7
- package/dist/hooks/otc/tradeFlow/useFillOtcOrderStep.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts +5 -2
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js +2 -1
- package/dist/hooks/swap/prices/delta/queries/useDeltaPriceQuery.js.map +1 -1
- package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.d.ts +4 -1
- package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.d.ts.map +1 -1
- package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js +2 -1
- package/dist/hooks/swap/prices/market/queries/useMarketPriceQuery.js.map +1 -1
- package/dist/hooks/swap/prices/usePricesParams.d.ts +3 -1
- package/dist/hooks/swap/prices/usePricesParams.d.ts.map +1 -1
- package/dist/hooks/swap/prices/usePricesParams.js +36 -27
- package/dist/hooks/swap/prices/usePricesParams.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js +1 -2
- package/dist/hooks/swap/tradeFlow/common/usePreSignAndSubmitDeltaOrder.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js +9 -1
- package/dist/hooks/swap/tradeFlow/useDeltaFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js +3 -1
- package/dist/hooks/swap/tradeFlow/useLimitOrderFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketFlow.js +9 -6
- package/dist/hooks/swap/tradeFlow/useMarketFlow.js.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketSwapStep.d.ts.map +1 -1
- package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js +4 -7
- package/dist/hooks/swap/tradeFlow/useMarketSwapStep.js.map +1 -1
- package/dist/hooks/txs/queries/useAwaitTx.d.ts.map +1 -1
- package/dist/hooks/txs/queries/useAwaitTx.js +19 -71
- package/dist/hooks/txs/queries/useAwaitTx.js.map +1 -1
- package/dist/hooks/useBreakpoints.d.ts +4 -0
- package/dist/hooks/useBreakpoints.d.ts.map +1 -0
- package/dist/hooks/useBreakpoints.js +22 -0
- package/dist/hooks/useBreakpoints.js.map +1 -0
- package/dist/hooks/usePartner.d.ts +1 -1
- package/dist/hooks/usePartner.d.ts.map +1 -1
- package/dist/hooks/usePartner.js +3 -5
- package/dist/hooks/usePartner.js.map +1 -1
- package/dist/lib/constants/mobile.d.ts +2 -0
- package/dist/lib/constants/mobile.d.ts.map +1 -0
- package/dist/lib/constants/mobile.js +6 -0
- package/dist/lib/constants/mobile.js.map +1 -0
- package/dist/lib/utils/formatFiatPrice.d.ts +1 -1
- package/dist/lib/utils/formatFiatPrice.d.ts.map +1 -1
- package/dist/lib/utils/formatFiatPrice.js +4 -2
- package/dist/lib/utils/formatFiatPrice.js.map +1 -1
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/lib/utils/mobile.d.ts +6 -0
- package/dist/lib/utils/mobile.d.ts.map +1 -0
- package/dist/lib/utils/mobile.js +10 -0
- package/dist/lib/utils/mobile.js.map +1 -0
- package/dist/lib/utils/toasts.d.ts +1 -1
- package/dist/lib/utils/toasts.d.ts.map +1 -1
- package/dist/lib/utils/toasts.js +1 -5
- package/dist/lib/utils/toasts.js.map +1 -1
- package/dist/lib/web3/privy/config.js +1 -1
- package/dist/lib/web3/wagmi/config.js +1 -1
- package/dist/lib/web3/wagmi/constants.d.ts +1 -0
- package/dist/lib/web3/wagmi/constants.d.ts.map +1 -1
- package/dist/lib/web3/wagmi/constants.js +13 -1
- package/dist/lib/web3/wagmi/constants.js.map +1 -1
- package/dist/lib/web3/wagmi/external.d.ts +3 -10
- package/dist/lib/web3/wagmi/external.d.ts.map +1 -1
- package/dist/lib/web3/wagmi/external.js +2 -17
- package/dist/lib/web3/wagmi/external.js.map +1 -1
- package/dist/lib/web3/wagmi/switchChain.d.ts.map +1 -1
- package/dist/lib/web3/wagmi/switchChain.js +1 -5
- package/dist/lib/web3/wagmi/switchChain.js.map +1 -1
- package/dist/styles.css +57 -18
- package/dist/transactions/queries/ensureCallsStatus.d.ts.map +1 -1
- package/dist/transactions/queries/ensureCallsStatus.js +3 -11
- package/dist/transactions/queries/ensureCallsStatus.js.map +1 -1
- package/dist/transactions/queries/ensureTxReceipt.d.ts.map +1 -1
- package/dist/transactions/queries/ensureTxReceipt.js +4 -7
- package/dist/transactions/queries/ensureTxReceipt.js.map +1 -1
- package/dist/transactions/state/effects/finalize.d.ts +1 -7
- package/dist/transactions/state/effects/finalize.d.ts.map +1 -1
- package/dist/transactions/state/effects/finalize.js +7 -41
- package/dist/transactions/state/effects/finalize.js.map +1 -1
- package/dist/transactions/state/hooks/useActivateEffects.d.ts.map +1 -1
- package/dist/transactions/state/hooks/useActivateEffects.js +2 -4
- package/dist/transactions/state/hooks/useActivateEffects.js.map +1 -1
- package/dist/transactions/state/transactionsActionAtom.d.ts.map +1 -1
- package/dist/transactions/state/transactionsActionAtom.js +15 -55
- package/dist/transactions/state/transactionsActionAtom.js.map +1 -1
- package/dist/transactions/state/transactionsAtom.js +2 -2
- package/dist/transactions/state/transactionsAtom.js.map +1 -1
- package/dist/transactions/types.d.ts +1 -11
- package/dist/transactions/types.d.ts.map +1 -1
- package/dist/transactions/utils.d.ts +1 -2
- package/dist/transactions/utils.d.ts.map +1 -1
- package/dist/transactions/utils.js +1 -6
- package/dist/transactions/utils.js.map +1 -1
- package/package.json +2 -1
- package/dist/components/web3/ConnectExternalProvider/constants.d.ts +0 -2
- package/dist/components/web3/ConnectExternalProvider/constants.d.ts.map +0 -1
- package/dist/components/web3/ConnectExternalProvider/constants.js +0 -4
- package/dist/components/web3/ConnectExternalProvider/constants.js.map +0 -1
- package/dist/components/web3/ConnectExternalProvider/utils.d.ts +0 -8
- package/dist/components/web3/ConnectExternalProvider/utils.d.ts.map +0 -1
- package/dist/components/web3/ConnectExternalProvider/utils.js +0 -9
- package/dist/components/web3/ConnectExternalProvider/utils.js.map +0 -1
- package/dist/transactions/hash.d.ts +0 -7
- package/dist/transactions/hash.d.ts.map +0 -1
- package/dist/transactions/hash.js +0 -35
- package/dist/transactions/hash.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensureCallsStatus.js","sources":["../../../src/transactions/queries/ensureCallsStatus.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"ensureCallsStatus.js","sources":["../../../src/transactions/queries/ensureCallsStatus.ts"],"sourcesContent":["import { SAFE_CALLS_WAIT_TIMEOUT } from \"@/lib/constants\";\nimport { queryClient as _queryClient } from \"@/lib/queryClient\";\nimport { wagmiConfig as _wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport type { QueryClient } from \"@tanstack/react-query\";\nimport { waitForCallsStatus, type Config } from \"@wagmi/core\";\n\nimport {\n waitForCallsStatusQueryKey,\n type WaitForCallsStatusData,\n} from \"wagmi/query\";\n\nexport type EnsureCallsStatusFn = (options: {\n id: string;\n}) => Promise<WaitForCallsStatusData>;\n\ntype EnsureCallsStatusFactory = (params?: {\n queryClient?: QueryClient;\n wagmiConfig?: Config;\n isSafe?: boolean;\n}) => EnsureCallsStatusFn;\n\nexport const ensureCallsStatusFactory: EnsureCallsStatusFactory =\n ({\n queryClient = _queryClient,\n wagmiConfig = _wagmiConfig,\n isSafe = false,\n } = {}) =>\n async ({ id }) => {\n const timeout = isSafe ? SAFE_CALLS_WAIT_TIMEOUT : undefined;\n const queryKey = waitForCallsStatusQueryKey({\n id,\n timeout, // important to include timeout into queryKey to match useAwaitCalls queryKey\n });\n const status = await queryClient.ensureQueryData({\n queryKey,\n queryFn: async () => {\n return waitForCallsStatus(wagmiConfig, {\n id,\n throwOnFailure: true,\n timeout,\n });\n },\n });\n\n return status;\n };\n"],"names":["ensureCallsStatusFactory","queryClient","_queryClient","wagmiConfig","_wagmiConfig","isSafe","id","timeout","SAFE_CALLS_WAIT_TIMEOUT","undefined","queryKey","waitForCallsStatusQueryKey","status","ensureQueryData","queryFn","waitForCallsStatus","throwOnFailure"],"mappings":";;;;;;AAqBO,MAAMA,2BACXA,CAAC;AAAA,eACCC,aAAAA,GAAcC,WAAAA;AAAAA,eACdC,aAAAA,GAAcC,WAAAA;AAAAA,EACdC,MAAAA,GAAS;AACX,CAAA,GAAI,OACJ,OAAO;AAAA,EAAEC;AAAG,CAAA,KAAM;AAChB,EAAA,MAAMC,OAAAA,GAAUF,SAASG,uBAAAA,GAA0BC,MAAAA;AACnD,EAAA,MAAMC,WAAWC,0BAAAA,CAA2B;AAAA,IAC1CL,EAAAA;AAAAA,IACAC;AAAAA;AAAAA,GACD,CAAA;AACD,EAAA,MAAMK,MAAAA,GAAS,MAAMX,aAAAA,CAAYY,eAAAA,CAAgB;AAAA,IAC/CH,QAAAA;AAAAA,IACAI,SAAS,YAAY;AACnB,MAAA,OAAOC,mBAAmBZ,aAAAA,EAAa;AAAA,QACrCG,EAAAA;AAAAA,QACAU,cAAAA,EAAgB,IAAA;AAAA,QAChBT;AAAAA,OACD,CAAA;AAAA,IACH;AAAA,GACD,CAAA;AAED,EAAA,OAAOK,MAAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensureTxReceipt.d.ts","sourceRoot":"","sources":["../../../src/transactions/queries/ensureTxReceipt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAU,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAI3E,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ensureTxReceipt.d.ts","sourceRoot":"","sources":["../../../src/transactions/queries/ensureTxReceipt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAU,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAI3E,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,cAAc,CAAC;AAI1C,KAAK,YAAY,GAAG,CAAC,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;AAEjE,MAAM,MAAM,iBAAiB,GAAG,CAC9B,OAAO,EAAE,YAAY,CACnB,IAAI,CAAC,oBAAoB,EAAE,MAAM,GAAG,SAAS,GAAG,eAAe,CAAC,EAChE,MAAM,GAAG,SAAS,CACnB,GAAG;IACF,UAAU,CAAC,EAAE,YAAY,CAAC;CAC3B,KACE,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEjC,KAAK,sBAAsB,GAAG,CAAC,MAAM,CAAC,EAAE;IACtC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,YAAY,CAAC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,KAAK,iBAAiB,CAAC;AAExB,eAAO,MAAM,sBAAsB,EAAE,sBAsClC,CAAC"}
|
|
@@ -7,26 +7,23 @@ import { SAFE_CALLS_WAIT_TIMEOUT } from '../../lib/constants/index.js';
|
|
|
7
7
|
import 'wagmi/chains';
|
|
8
8
|
import { getAccount, getConnectorClient } from '@wagmi/core';
|
|
9
9
|
import { isSafeConnector } from '../../hooks/connectors/useIsGnosisSafeConnector.js';
|
|
10
|
-
import { isExternalConnectorWithSafeIframe } from '../../core/state/externalProviderAtom.js';
|
|
11
10
|
|
|
12
11
|
const ensureTxReceiptFactory = ({
|
|
13
12
|
queryClient: queryClient$1 = queryClient,
|
|
14
13
|
wagmiConfig: wagmiConfig$1 = wagmiConfig,
|
|
15
|
-
isSafe
|
|
14
|
+
isSafe
|
|
16
15
|
} = {}) => async ({
|
|
17
16
|
hash,
|
|
18
17
|
chainId,
|
|
19
18
|
confirmations,
|
|
20
19
|
onReplaced
|
|
21
20
|
}) => {
|
|
21
|
+
const timeout = isSafe ? SAFE_CALLS_WAIT_TIMEOUT : void 0;
|
|
22
|
+
let config = wagmiConfig$1;
|
|
22
23
|
const {
|
|
23
24
|
connector
|
|
24
25
|
} = getAccount(wagmiConfig$1);
|
|
25
|
-
|
|
26
|
-
const isSafe = _isSafe || isConnectorSafe || !!connector && await isExternalConnectorWithSafeIframe(connector);
|
|
27
|
-
const timeout = isSafe ? SAFE_CALLS_WAIT_TIMEOUT : void 0;
|
|
28
|
-
let config = wagmiConfig$1;
|
|
29
|
-
if (isConnectorSafe) {
|
|
26
|
+
if (connector && isSafeConnector(connector)) {
|
|
30
27
|
const safeClient = await getConnectorClient(wagmiConfig$1, {
|
|
31
28
|
chainId,
|
|
32
29
|
connector
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensureTxReceipt.js","sources":["../../../src/transactions/queries/ensureTxReceipt.ts"],"sourcesContent":["import type { UseAwaitTxParameters } from \"@/hooks/txs/queries/useAwaitTx\";\nimport { queryClient as _queryClient } from \"@/lib/queryClient\";\nimport { wagmiConfig as _wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport type { QueryClient } from \"@tanstack/react-query\";\n\nimport { assert, type MarkRequired } from \"ts-essentials\";\nimport { type ReplacementReturnType, type TransactionReceipt } from \"viem\";\n\nimport { waitForTransactionReceiptQueryOptions } from \"wagmi/query\";\nimport { SAFE_CALLS_WAIT_TIMEOUT } from \"@/lib/constants\";\nimport { type Chain } from \"wagmi/chains\";\nimport { getAccount, getConnectorClient } from \"@wagmi/core\";\nimport { isSafeConnector } from \"@/hooks/connectors/useIsGnosisSafeConnector\";\
|
|
1
|
+
{"version":3,"file":"ensureTxReceipt.js","sources":["../../../src/transactions/queries/ensureTxReceipt.ts"],"sourcesContent":["import type { UseAwaitTxParameters } from \"@/hooks/txs/queries/useAwaitTx\";\nimport { queryClient as _queryClient } from \"@/lib/queryClient\";\nimport { wagmiConfig as _wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport type { QueryClient } from \"@tanstack/react-query\";\n\nimport { assert, type MarkRequired } from \"ts-essentials\";\nimport { type ReplacementReturnType, type TransactionReceipt } from \"viem\";\n\nimport { waitForTransactionReceiptQueryOptions } from \"wagmi/query\";\nimport { SAFE_CALLS_WAIT_TIMEOUT } from \"@/lib/constants\";\nimport { type Chain } from \"wagmi/chains\";\nimport { getAccount, getConnectorClient } from \"@wagmi/core\";\nimport { isSafeConnector } from \"@/hooks/connectors/useIsGnosisSafeConnector\";\n\ntype OnReplacedCb = (data: ReplacementReturnType<Chain>) => void;\n\nexport type EnsureTxReceiptFn = (\n options: MarkRequired<\n Pick<UseAwaitTxParameters, \"hash\" | \"chainId\" | \"confirmations\">,\n \"hash\" | \"chainId\"\n > & {\n onReplaced?: OnReplacedCb;\n }\n) => Promise<TransactionReceipt>;\n\ntype EnsureTxReceiptFactory = (params?: {\n queryClient?: QueryClient;\n wagmiConfig?: typeof _wagmiConfig;\n isSafe?: boolean;\n}) => EnsureTxReceiptFn;\n\nexport const ensureTxReceiptFactory: EnsureTxReceiptFactory =\n ({ queryClient = _queryClient, wagmiConfig = _wagmiConfig, isSafe } = {}) =>\n async ({ hash, chainId, confirmations, onReplaced }) => {\n const timeout = isSafe ? SAFE_CALLS_WAIT_TIMEOUT : undefined;\n\n let config = wagmiConfig;\n const { connector } = getAccount(wagmiConfig);\n // always use connector client if connected through native safe connector.\n // safe provider returns a safeTxHash that is different from a real tx hash.\n // if connected to safe through WalletConnect - publicClient returns a real tx hash.\n if (connector && isSafeConnector(connector)) {\n const safeClient = await getConnectorClient(wagmiConfig, {\n chainId,\n connector,\n });\n // force waitForTransactionReceiptQueryOptions to use SafeClient internally\n config = {\n ...wagmiConfig,\n getClient: (options) => {\n assert(!options || options.chainId === chainId, \"chainId mismatch\");\n return safeClient;\n },\n } as typeof wagmiConfig;\n }\n\n // wagmi/core waitForTransactionReceipt throws on receipt.status==\"reverted\",\n // unlike viem waitForTransactionReceipt which returns the receipt as is\n const queryOptions = waitForTransactionReceiptQueryOptions(config, {\n hash,\n chainId,\n confirmations,\n timeout,\n onReplaced,\n });\n\n const receipt = await queryClient.ensureQueryData(queryOptions);\n\n return receipt;\n };\n"],"names":["ensureTxReceiptFactory","queryClient","_queryClient","wagmiConfig","_wagmiConfig","isSafe","hash","chainId","confirmations","onReplaced","timeout","SAFE_CALLS_WAIT_TIMEOUT","undefined","config","connector","getAccount","isSafeConnector","safeClient","getConnectorClient","getClient","options","assert","queryOptions","waitForTransactionReceiptQueryOptions","receipt","ensureQueryData"],"mappings":";;;;;;;;;;AA+BO,MAAMA,yBACXA,CAAC;AAAA,eAAEC,aAAAA,GAAcC,WAAAA;AAAAA,eAAcC,aAAAA,GAAcC,WAAAA;AAAAA,EAAcC;AAAO,CAAA,GAAI,OACtE,OAAO;AAAA,EAAEC,IAAAA;AAAAA,EAAMC,OAAAA;AAAAA,EAASC,aAAAA;AAAAA,EAAeC;AAAW,CAAA,KAAM;AACtD,EAAA,MAAMC,OAAAA,GAAUL,SAASM,uBAAAA,GAA0BC,MAAAA;AAEnD,EAAA,IAAIC,MAAAA,GAASV,aAAAA;AACb,EAAA,MAAM;AAAA,IAAEW;AAAAA,GAAU,GAAIC,WAAWZ,aAAW,CAAA;AAI5C,EAAA,IAAIW,SAAAA,IAAaE,eAAAA,CAAgBF,SAAS,CAAA,EAAG;AAC3C,IAAA,MAAMG,UAAAA,GAAa,MAAMC,kBAAAA,CAAmBf,aAAAA,EAAa;AAAA,MACvDI,OAAAA;AAAAA,MACAO;AAAAA,KACD,CAAA;AAEDD,IAAAA,MAAAA,GAAS;AAAA,MACP,GAAGV,aAAAA;AAAAA,MACHgB,WAAYC,CAAAA,OAAAA,KAAY;AACtBC,QAAAA,MAAAA,CAAO,CAACD,OAAAA,IAAWA,OAAAA,CAAQb,OAAAA,KAAYA,SAAS,kBAAkB,CAAA;AAClE,QAAA,OAAOU,UAAAA;AAAAA,MACT;AAAA,KACF;AAAA,EACF;AAIA,EAAA,MAAMK,YAAAA,GAAeC,sCAAsCV,MAAAA,EAAQ;AAAA,IACjEP,IAAAA;AAAAA,IACAC,OAAAA;AAAAA,IACAC,aAAAA;AAAAA,IACAE,OAAAA;AAAAA,IACAD;AAAAA,GACD,CAAA;AAED,EAAA,MAAMe,OAAAA,GAAU,MAAMvB,aAAAA,CAAYwB,eAAAA,CAAgBH,YAAY,CAAA;AAE9D,EAAA,OAAOE,OAAAA;AACT;;;;"}
|
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
export declare const
|
|
2
|
-
effect: import('jotai-effect').Effect;
|
|
3
|
-
};
|
|
4
|
-
export declare const finalizeStandaloneSafeTxsEffect: import('jotai').Atom<void> & {
|
|
1
|
+
export declare const finalizeStandoloneTxsEffect: import('jotai').Atom<void> & {
|
|
5
2
|
effect: import('jotai-effect').Effect;
|
|
6
3
|
};
|
|
7
4
|
export declare const finalizeBatchTxsEffect: import('jotai').Atom<void> & {
|
|
8
5
|
effect: import('jotai-effect').Effect;
|
|
9
6
|
};
|
|
10
|
-
export declare const finalizeBatchSafeTxsEffect: import('jotai').Atom<void> & {
|
|
11
|
-
effect: import('jotai-effect').Effect;
|
|
12
|
-
};
|
|
13
7
|
//# sourceMappingURL=finalize.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finalize.d.ts","sourceRoot":"","sources":["../../../../src/transactions/state/effects/finalize.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"finalize.d.ts","sourceRoot":"","sources":["../../../../src/transactions/state/effects/finalize.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,2BAA2B;;CAOtC,CAAC;AAKH,eAAO,MAAM,sBAAsB;;CAWjC,CAAC"}
|
|
@@ -2,61 +2,27 @@ import { atomEffect } from 'jotai-effect';
|
|
|
2
2
|
import { allPendingStandaloneTransactionItemsAtom, allPendingBatchTransactionItemsAtom } from '../transactionsAtom.js';
|
|
3
3
|
import { finalizeStandaloneTxAtom, finalizeBatchTxAtom } from '../transactionsActionAtom.js';
|
|
4
4
|
import { transactionLogger } from '../../logger.js';
|
|
5
|
-
import { accountAtom
|
|
6
|
-
import { isSafeConnector } from '../../../hooks/connectors/useIsGnosisSafeConnector.js';
|
|
7
|
-
import { isGnosisSafeTx } from '../../utils.js';
|
|
5
|
+
import { accountAtom } from '../../../lib/web3/wagmi/external.js';
|
|
8
6
|
|
|
9
7
|
let hasRunStandaloneEffect = false;
|
|
10
|
-
const
|
|
8
|
+
const finalizeStandoloneTxsEffect = atomEffect((get, set) => {
|
|
11
9
|
if (hasRunStandaloneEffect) return;
|
|
12
10
|
hasRunStandaloneEffect = true;
|
|
13
|
-
const pendingStandaloneTxs = get(allPendingStandaloneTransactionItemsAtom)
|
|
11
|
+
const pendingStandaloneTxs = get(allPendingStandaloneTransactionItemsAtom);
|
|
14
12
|
transactionLogger.log("Effect::pendingStandaloneTxs", pendingStandaloneTxs);
|
|
15
13
|
pendingStandaloneTxs.forEach((tx) => set(finalizeStandaloneTxAtom, tx));
|
|
16
14
|
});
|
|
17
|
-
let hasRunStandaloneSafeEffect = false;
|
|
18
|
-
const finalizeStandaloneSafeTxsEffect = atomEffect((get, set) => {
|
|
19
|
-
if (hasRunStandaloneSafeEffect) return;
|
|
20
|
-
const {
|
|
21
|
-
connector,
|
|
22
|
-
address
|
|
23
|
-
} = get(accountAtom);
|
|
24
|
-
const connectedSafe = connector && isSafeConnector(connector);
|
|
25
|
-
if (connectedSafe && !!connector.getAccounts && !!connector.getChainId && address) {
|
|
26
|
-
hasRunStandaloneSafeEffect = true;
|
|
27
|
-
const addressLower = address.toLowerCase();
|
|
28
|
-
const pendingSafeTxs = get(allPendingStandaloneTransactionItemsAtom).filter(isGnosisSafeTx).filter((tx) => tx.account.toLowerCase() === addressLower);
|
|
29
|
-
transactionLogger.log("Effect::pendingSafeTxs", pendingSafeTxs);
|
|
30
|
-
pendingSafeTxs.forEach((tx) => set(finalizeStandaloneTxAtom, tx));
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
15
|
let hasRunBatchEffect = false;
|
|
34
16
|
const finalizeBatchTxsEffect = atomEffect((get, set) => {
|
|
35
17
|
if (hasRunBatchEffect) return;
|
|
36
|
-
const
|
|
37
|
-
if (
|
|
18
|
+
const account = get(accountAtom);
|
|
19
|
+
if (account) {
|
|
38
20
|
hasRunBatchEffect = true;
|
|
39
|
-
const pendingBatchTxs = get(allPendingBatchTransactionItemsAtom)
|
|
21
|
+
const pendingBatchTxs = get(allPendingBatchTransactionItemsAtom);
|
|
40
22
|
transactionLogger.log("Effect::pendingBatchTxs", pendingBatchTxs);
|
|
41
23
|
pendingBatchTxs.forEach((tx) => set(finalizeBatchTxAtom, tx));
|
|
42
24
|
}
|
|
43
25
|
});
|
|
44
|
-
let hasRunBatchSafeEffect = false;
|
|
45
|
-
const finalizeBatchSafeTxsEffect = atomEffect((get, set) => {
|
|
46
|
-
if (hasRunBatchSafeEffect) return;
|
|
47
|
-
const {
|
|
48
|
-
connector,
|
|
49
|
-
address
|
|
50
|
-
} = get(accountAtom);
|
|
51
|
-
const connectedSafe = connector && isSafeConnector(connector);
|
|
52
|
-
if (connectedSafe && !!connector.getAccounts && !!connector.getChainId && address) {
|
|
53
|
-
hasRunBatchSafeEffect = true;
|
|
54
|
-
const addressLower = address.toLowerCase();
|
|
55
|
-
const pendingSafeBatchTxs = get(allPendingBatchTransactionItemsAtom).filter(isGnosisSafeTx).filter((tx) => tx.account.toLowerCase() === addressLower);
|
|
56
|
-
transactionLogger.log("Effect::pendingSafeBatchTxs", pendingSafeBatchTxs);
|
|
57
|
-
pendingSafeBatchTxs.forEach((tx) => set(finalizeBatchTxAtom, tx));
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
26
|
|
|
61
|
-
export {
|
|
27
|
+
export { finalizeBatchTxsEffect, finalizeStandoloneTxsEffect };
|
|
62
28
|
//# sourceMappingURL=finalize.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finalize.js","sources":["../../../../src/transactions/state/effects/finalize.ts"],"sourcesContent":["import { atomEffect } from \"jotai-effect\";\nimport {\n allPendingBatchTransactionItemsAtom,\n allPendingStandaloneTransactionItemsAtom,\n} from \"../transactionsAtom\";\nimport {\n finalizeBatchTxAtom,\n finalizeStandaloneTxAtom,\n} from \"../transactionsActionAtom\";\n\nimport { transactionLogger } from \"../../logger\";\nimport { accountAtom
|
|
1
|
+
{"version":3,"file":"finalize.js","sources":["../../../../src/transactions/state/effects/finalize.ts"],"sourcesContent":["import { atomEffect } from \"jotai-effect\";\nimport {\n allPendingBatchTransactionItemsAtom,\n allPendingStandaloneTransactionItemsAtom,\n} from \"../transactionsAtom\";\nimport {\n finalizeBatchTxAtom,\n finalizeStandaloneTxAtom,\n} from \"../transactionsActionAtom\";\n\nimport { transactionLogger } from \"../../logger\";\nimport { accountAtom } from \"@/lib/web3/wagmi/external\";\n\n// run only once on app load\nlet hasRunStandaloneEffect = false;\nexport const finalizeStandoloneTxsEffect = atomEffect((get, set) => {\n if (hasRunStandaloneEffect) return;\n hasRunStandaloneEffect = true;\n\n const pendingStandaloneTxs = get(allPendingStandaloneTransactionItemsAtom);\n transactionLogger.log(\"Effect::pendingStandaloneTxs\", pendingStandaloneTxs);\n pendingStandaloneTxs.forEach((tx) => set(finalizeStandaloneTxAtom, tx));\n});\n\n// run only once after account is connected and available in atom\n// because waitForCallsStatus requires wallet to be connected\nlet hasRunBatchEffect = false;\nexport const finalizeBatchTxsEffect = atomEffect((get, set) => {\n if (hasRunBatchEffect) return;\n\n const account = get(accountAtom);\n if (account) {\n hasRunBatchEffect = true;\n\n const pendingBatchTxs = get(allPendingBatchTransactionItemsAtom);\n transactionLogger.log(\"Effect::pendingBatchTxs\", pendingBatchTxs);\n pendingBatchTxs.forEach((tx) => set(finalizeBatchTxAtom, tx));\n }\n});\n"],"names":["hasRunStandaloneEffect","finalizeStandoloneTxsEffect","atomEffect","get","set","pendingStandaloneTxs","allPendingStandaloneTransactionItemsAtom","transactionLogger","log","forEach","tx","finalizeStandaloneTxAtom","hasRunBatchEffect","finalizeBatchTxsEffect","account","accountAtom","pendingBatchTxs","allPendingBatchTransactionItemsAtom","finalizeBatchTxAtom"],"mappings":";;;;;;AAcA,IAAIA,sBAAAA,GAAyB,KAAA;AACtB,MAAMC,2BAAAA,GAA8BC,UAAAA,CAAW,CAACC,GAAAA,EAAKC,GAAAA,KAAQ;AAClE,EAAA,IAAIJ,sBAAAA,EAAwB;AAC5BA,EAAAA,sBAAAA,GAAyB,IAAA;AAEzB,EAAA,MAAMK,oBAAAA,GAAuBF,IAAIG,wCAAwC,CAAA;AACzEC,EAAAA,iBAAAA,CAAkBC,GAAAA,CAAI,gCAAgCH,oBAAoB,CAAA;AAC1EA,EAAAA,oBAAAA,CAAqBI,OAAAA,CAASC,CAAAA,EAAAA,KAAON,GAAAA,CAAIO,wBAAAA,EAA0BD,EAAE,CAAC,CAAA;AACxE,CAAC;AAID,IAAIE,iBAAAA,GAAoB,KAAA;AACjB,MAAMC,sBAAAA,GAAyBX,UAAAA,CAAW,CAACC,GAAAA,EAAKC,GAAAA,KAAQ;AAC7D,EAAA,IAAIQ,iBAAAA,EAAmB;AAEvB,EAAA,MAAME,OAAAA,GAAUX,IAAIY,WAAW,CAAA;AAC/B,EAAA,IAAID,OAAAA,EAAS;AACXF,IAAAA,iBAAAA,GAAoB,IAAA;AAEpB,IAAA,MAAMI,eAAAA,GAAkBb,IAAIc,mCAAmC,CAAA;AAC/DV,IAAAA,iBAAAA,CAAkBC,GAAAA,CAAI,2BAA2BQ,eAAe,CAAA;AAChEA,IAAAA,eAAAA,CAAgBP,OAAAA,CAASC,CAAAA,EAAAA,KAAON,GAAAA,CAAIc,mBAAAA,EAAqBR,EAAE,CAAC,CAAA;AAAA,EAC9D;AACF,CAAC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useActivateEffects.d.ts","sourceRoot":"","sources":["../../../../src/transactions/state/hooks/useActivateEffects.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useActivateEffects.d.ts","sourceRoot":"","sources":["../../../../src/transactions/state/hooks/useActivateEffects.ts"],"names":[],"mappings":"AAMA,wBAAgB,kBAAkB,SAIjC"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { useAtom } from '../../../core/store.js';
|
|
2
|
-
import {
|
|
2
|
+
import { finalizeStandoloneTxsEffect, finalizeBatchTxsEffect } from '../effects/finalize.js';
|
|
3
3
|
|
|
4
4
|
function useActivateEffects() {
|
|
5
|
-
useAtom(
|
|
6
|
-
useAtom(finalizeStandaloneSafeTxsEffect);
|
|
5
|
+
useAtom(finalizeStandoloneTxsEffect);
|
|
7
6
|
useAtom(finalizeBatchTxsEffect);
|
|
8
|
-
useAtom(finalizeBatchSafeTxsEffect);
|
|
9
7
|
}
|
|
10
8
|
|
|
11
9
|
export { useActivateEffects };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useActivateEffects.js","sources":["../../../../src/transactions/state/hooks/useActivateEffects.ts"],"sourcesContent":["import { useAtom } from \"@/core/store\";\nimport {\n finalizeBatchTxsEffect,\n
|
|
1
|
+
{"version":3,"file":"useActivateEffects.js","sources":["../../../../src/transactions/state/hooks/useActivateEffects.ts"],"sourcesContent":["import { useAtom } from \"@/core/store\";\nimport {\n finalizeBatchTxsEffect,\n finalizeStandoloneTxsEffect,\n} from \"@/transactions/state/effects/finalize\";\n\nexport function useActivateEffects() {\n // atomEffects must be rendered for subscriptions to activate\n useAtom(finalizeStandoloneTxsEffect);\n useAtom(finalizeBatchTxsEffect);\n}\n"],"names":["useActivateEffects","useAtom","finalizeStandoloneTxsEffect","finalizeBatchTxsEffect"],"mappings":";;;AAMO,SAAAA,kBAAAA,GAAA;AAELC,EAAAA,OAAAA,CAAQC,2BAA2B,CAAA;AACnCD,EAAAA,OAAAA,CAAQE,sBAAsB,CAAA;AAAC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionsActionAtom.d.ts","sourceRoot":"","sources":["../../../src/transactions/state/transactionsActionAtom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"transactionsActionAtom.d.ts","sourceRoot":"","sources":["../../../src/transactions/state/transactionsActionAtom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAsBlB,eAAO,MAAM,SAAS;;CAoBrB,CAAC;AAEF,eAAO,MAAM,wBAAwB;;CA0BnC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;CA8B9B,CAAC;AAEH,eAAO,MAAM,KAAK,GAAU,aAAa,kBAAkB,kBAE1D,CAAC"}
|
|
@@ -5,24 +5,18 @@ import { ensureTxReceiptFactory } from '../queries/ensureTxReceipt.js';
|
|
|
5
5
|
import { WaitForTransactionReceiptTimeoutError, TransactionReceiptNotFoundError, WaitForCallsStatusTimeoutError, MethodNotSupportedRpcError } from 'viem';
|
|
6
6
|
import { transactionLogger } from '../logger.js';
|
|
7
7
|
import { transactionsAtom } from './transactionsAtom.js';
|
|
8
|
-
import {
|
|
9
|
-
import { assert } from 'ts-essentials';
|
|
8
|
+
import { isStandaloneTransactionItem, isBatchTransactionItem } from '../utils.js';
|
|
10
9
|
import { accountAtom } from '../../lib/web3/wagmi/external.js';
|
|
10
|
+
import { assert } from 'ts-essentials';
|
|
11
11
|
|
|
12
12
|
const addTxAtom = atom(null, async (get, set, transaction) => {
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
address
|
|
16
|
-
} = get(accountAtom);
|
|
17
|
-
assert(connector && address, "connector and address are required");
|
|
13
|
+
const account = get(accountAtom);
|
|
14
|
+
assert(account, "addTxAtom: account is required");
|
|
18
15
|
const txWithMeta = {
|
|
19
16
|
...transaction,
|
|
20
|
-
account
|
|
17
|
+
account,
|
|
21
18
|
timestamp: Date.now(),
|
|
22
|
-
dropped: false
|
|
23
|
-
connectorData: {
|
|
24
|
-
type: connector.type
|
|
25
|
-
}
|
|
19
|
+
dropped: false
|
|
26
20
|
};
|
|
27
21
|
set(transactionsAtom, (current) => assignTx(current, txWithMeta));
|
|
28
22
|
if (isStandaloneTransactionItem(txWithMeta)) {
|
|
@@ -36,30 +30,18 @@ const finalizeStandaloneTxAtom = atom(null, async (_, set, transaction) => {
|
|
|
36
30
|
...transaction
|
|
37
31
|
};
|
|
38
32
|
const ensureTxReceipt = ensureTxReceiptFactory();
|
|
39
|
-
const isTxThroughSafe = isGnosisSafeTx(finalizedTx);
|
|
40
33
|
try {
|
|
41
|
-
|
|
42
|
-
hash:
|
|
43
|
-
chainId:
|
|
34
|
+
finalizedTx.receipt = await ensureTxReceipt({
|
|
35
|
+
hash: transaction.transactionHash,
|
|
36
|
+
chainId: transaction.chainId
|
|
44
37
|
});
|
|
45
|
-
finalizedTx.receipt = txReceipt;
|
|
46
38
|
} catch (error) {
|
|
47
39
|
if (error instanceof WaitForTransactionReceiptTimeoutError || error instanceof TransactionReceiptNotFoundError) {
|
|
48
40
|
finalizedTx.dropped = true;
|
|
49
|
-
transactionLogger.error(
|
|
50
|
-
error,
|
|
51
|
-
finalizedTx,
|
|
52
|
-
isTxThroughSafe
|
|
53
|
-
});
|
|
41
|
+
transactionLogger.error(`finalizeStandaloneTxAtom::Transaction ${transaction.transactionHash} dropped with error: ${error.message}`);
|
|
54
42
|
} else throw error;
|
|
55
43
|
} finally {
|
|
56
|
-
|
|
57
|
-
set(transactionsAtom, (current) => assignTx(current, finalizedTx));
|
|
58
|
-
transactionLogger.log("tx finalized", {
|
|
59
|
-
finalizedTx,
|
|
60
|
-
isTxThroughSafe
|
|
61
|
-
});
|
|
62
|
-
}
|
|
44
|
+
set(transactionsAtom, (current) => assignTx(current, finalizedTx));
|
|
63
45
|
}
|
|
64
46
|
});
|
|
65
47
|
const finalizeBatchTxAtom = atom(null, async (_, set, transaction) => {
|
|
@@ -72,30 +54,20 @@ const finalizeBatchTxAtom = atom(null, async (_, set, transaction) => {
|
|
|
72
54
|
receipts,
|
|
73
55
|
status
|
|
74
56
|
} = await ensureCallsStatus({
|
|
75
|
-
id:
|
|
57
|
+
id: transaction.callsId
|
|
76
58
|
});
|
|
77
59
|
finalizedTx.callsStatus = status;
|
|
78
60
|
finalizedTx.receipt = receipts?.[receipts.length - 1];
|
|
79
61
|
} catch (error) {
|
|
80
62
|
if (error instanceof WaitForCallsStatusTimeoutError || error instanceof MethodNotSupportedRpcError) {
|
|
81
63
|
finalizedTx.dropped = true;
|
|
82
|
-
transactionLogger.error(
|
|
83
|
-
error,
|
|
84
|
-
finalizedTx
|
|
85
|
-
});
|
|
64
|
+
transactionLogger.error(`finalizeBatchTxAtom::Batch transaction ${transaction.callsId} dropped with error: ${error.message}`);
|
|
86
65
|
} else {
|
|
87
66
|
finalizedTx.callsStatus = "failure";
|
|
88
|
-
transactionLogger.error("batch tx failed", {
|
|
89
|
-
error,
|
|
90
|
-
finalizedTx
|
|
91
|
-
});
|
|
92
67
|
throw error;
|
|
93
68
|
}
|
|
94
69
|
} finally {
|
|
95
70
|
set(transactionsAtom, (current) => assignTx(current, finalizedTx));
|
|
96
|
-
transactionLogger.log("batch tx finalized", {
|
|
97
|
-
finalizedTx
|
|
98
|
-
});
|
|
99
71
|
}
|
|
100
72
|
});
|
|
101
73
|
const addTx = async (transaction) => {
|
|
@@ -103,7 +75,7 @@ const addTx = async (transaction) => {
|
|
|
103
75
|
};
|
|
104
76
|
function sanitizeTx(tx) {
|
|
105
77
|
if (isBatchTransactionItem(tx)) {
|
|
106
|
-
|
|
78
|
+
return {
|
|
107
79
|
action: tx.action,
|
|
108
80
|
account: tx.account,
|
|
109
81
|
chainId: tx.chainId,
|
|
@@ -114,14 +86,8 @@ function sanitizeTx(tx) {
|
|
|
114
86
|
receipt: tx.receipt,
|
|
115
87
|
transactionSpecificData: tx.transactionSpecificData
|
|
116
88
|
};
|
|
117
|
-
if (tx.connectorData) {
|
|
118
|
-
txItem2.connectorData = {
|
|
119
|
-
type: tx.connectorData.type
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
return txItem2;
|
|
123
89
|
}
|
|
124
|
-
|
|
90
|
+
return {
|
|
125
91
|
action: tx.action,
|
|
126
92
|
chainId: tx.chainId,
|
|
127
93
|
account: tx.account,
|
|
@@ -131,12 +97,6 @@ function sanitizeTx(tx) {
|
|
|
131
97
|
receipt: tx.receipt,
|
|
132
98
|
transactionSpecificData: tx.transactionSpecificData
|
|
133
99
|
};
|
|
134
|
-
if (tx.connectorData) {
|
|
135
|
-
txItem.connectorData = {
|
|
136
|
-
type: tx.connectorData.type
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
return txItem;
|
|
140
100
|
}
|
|
141
101
|
function assignTx(currentTransactions, transaction) {
|
|
142
102
|
transactionLogger.log("assignTx", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionsActionAtom.js","sources":["../../../src/transactions/state/transactionsActionAtom.ts"],"sourcesContent":["import type {\n TransactionItem,\n StandaloneTransactionItem,\n BatchTransactionItem,\n MinTransactionItem,\n} from \"../types\";\nimport { atom } from \"jotai\";\nimport { jotaiStore } from \"@/core/store\";\n\nimport { ensureCallsStatusFactory } from \"../queries/ensureCallsStatus\";\nimport { ensureTxReceiptFactory } from \"../queries/ensureTxReceipt\";\nimport {\n WaitForCallsStatusTimeoutError,\n TransactionReceiptNotFoundError,\n WaitForTransactionReceiptTimeoutError,\n MethodNotSupportedRpcError,\n} from \"viem\";\nimport { transactionLogger } from \"../logger\";\nimport {\n transactionsAtom,\n type TransactionsMap,\n type TransactionsState,\n} from \"./transactionsAtom\";\nimport {\n isBatchTransactionItem,\n isGnosisSafeTx,\n isStandaloneTransactionItem,\n} from \"../utils\";\nimport { assert } from \"ts-essentials\";\nimport { accountAtom } from \"@/lib/web3/wagmi/external\";\n\nexport const addTxAtom = atom<null, [transaction: MinTransactionItem], void>(\n null,\n async (get, set, transaction) => {\n const { connector, address } = get(accountAtom);\n assert(connector && address, \"connector and address are required\");\n\n const txWithMeta: TransactionItem = {\n ...transaction,\n account: address,\n timestamp: Date.now(),\n dropped: false,\n connectorData: {\n type: connector.type,\n },\n };\n set(transactionsAtom, (current) => assignTx(current, txWithMeta));\n\n if (isStandaloneTransactionItem(txWithMeta)) {\n await set(finalizeStandaloneTxAtom, txWithMeta);\n } else {\n await set(finalizeBatchTxAtom, txWithMeta);\n }\n }\n);\n\nexport const finalizeStandaloneTxAtom = atom<\n null,\n [StandaloneTransactionItem],\n Promise<void>\n>(null, async (_, set, transaction) => {\n const finalizedTx: StandaloneTransactionItem = { ...transaction };\n const ensureTxReceipt = ensureTxReceiptFactory();\n const isTxThroughSafe = isGnosisSafeTx(finalizedTx);\n\n try {\n // ensureTxReceipt internally makes sure to use walletClient for Safe connector\n const txReceipt = await ensureTxReceipt({\n hash: finalizedTx.transactionHash,\n chainId: finalizedTx.chainId,\n });\n finalizedTx.receipt = txReceipt;\n } catch (error) {\n if (\n error instanceof WaitForTransactionReceiptTimeoutError ||\n error instanceof TransactionReceiptNotFoundError\n ) {\n finalizedTx.dropped = true;\n transactionLogger.error(\"tx dropped\", {\n error,\n finalizedTx,\n isTxThroughSafe,\n });\n } else throw error;\n } finally {\n if (finalizedTx.receipt || finalizedTx.dropped) {\n set(transactionsAtom, (current) => assignTx(current, finalizedTx));\n transactionLogger.log(\"tx finalized\", { finalizedTx, isTxThroughSafe });\n }\n }\n});\n\nexport const finalizeBatchTxAtom = atom<\n null,\n [BatchTransactionItem],\n Promise<void>\n>(null, async (_, set, transaction) => {\n const finalizedTx: BatchTransactionItem = { ...transaction };\n const ensureCallsStatus = ensureCallsStatusFactory();\n\n try {\n const { receipts, status } = await ensureCallsStatus({\n id: finalizedTx.callsId,\n });\n finalizedTx.callsStatus = status;\n finalizedTx.receipt = receipts?.[receipts.length - 1];\n } catch (error) {\n if (\n error instanceof WaitForCallsStatusTimeoutError ||\n error instanceof MethodNotSupportedRpcError\n ) {\n finalizedTx.dropped = true;\n transactionLogger.error(\"batch tx dropped\", { error, finalizedTx });\n } else {\n finalizedTx.callsStatus = \"failure\";\n transactionLogger.error(\"batch tx failed\", { error, finalizedTx });\n throw error;\n }\n } finally {\n set(transactionsAtom, (current) => assignTx(current, finalizedTx));\n transactionLogger.log(\"batch tx finalized\", { finalizedTx });\n }\n});\n\nexport const addTx = async (transaction: MinTransactionItem) => {\n return jotaiStore.set(addTxAtom, transaction);\n};\n\nfunction sanitizeTx(tx: TransactionItem): TransactionItem {\n if (isBatchTransactionItem(tx)) {\n const txItem = {\n action: tx.action,\n account: tx.account,\n chainId: tx.chainId,\n callsId: tx.callsId,\n callsStatus: tx.callsStatus,\n timestamp: tx.timestamp,\n dropped: tx.dropped,\n receipt: tx.receipt,\n transactionSpecificData: tx.transactionSpecificData,\n } as BatchTransactionItem;\n\n if (tx.connectorData) {\n txItem.connectorData = {\n type: tx.connectorData.type,\n };\n }\n\n return txItem;\n }\n\n const txItem = {\n action: tx.action,\n chainId: tx.chainId,\n account: tx.account,\n transactionHash: tx.transactionHash,\n timestamp: tx.timestamp,\n dropped: tx.dropped,\n receipt: tx.receipt,\n transactionSpecificData: tx.transactionSpecificData,\n } as StandaloneTransactionItem;\n\n if (tx.connectorData) {\n txItem.connectorData = {\n type: tx.connectorData.type,\n };\n }\n\n return txItem;\n}\n\nfunction assignTx(\n currentTransactions: TransactionsState,\n transaction: TransactionItem\n): TransactionsState {\n transactionLogger.log(\"assignTx\", {\n account: transaction.account,\n transaction,\n });\n\n const accountTransactions = currentTransactions[transaction.account] || {};\n const identifier = isStandaloneTransactionItem(transaction)\n ? transaction.transactionHash\n : transaction.callsId;\n\n const updatedAccountTransactions: TransactionsMap = {\n ...accountTransactions,\n [identifier]: sanitizeTx({\n ...accountTransactions[identifier],\n ...transaction,\n }),\n };\n\n return {\n ...currentTransactions,\n [transaction.account]: updatedAccountTransactions,\n };\n}\n"],"names":["addTxAtom","atom","get","set","transaction","connector","address","accountAtom","assert","txWithMeta","account","timestamp","Date","now","dropped","connectorData","type","transactionsAtom","current","assignTx","isStandaloneTransactionItem","finalizeStandaloneTxAtom","finalizeBatchTxAtom","_","finalizedTx","ensureTxReceipt","ensureTxReceiptFactory","isTxThroughSafe","isGnosisSafeTx","txReceipt","hash","transactionHash","chainId","receipt","error","WaitForTransactionReceiptTimeoutError","TransactionReceiptNotFoundError","transactionLogger","log","ensureCallsStatus","ensureCallsStatusFactory","receipts","status","id","callsId","callsStatus","length","WaitForCallsStatusTimeoutError","MethodNotSupportedRpcError","addTx","jotaiStore","sanitizeTx","tx","isBatchTransactionItem","txItem","action","transactionSpecificData","currentTransactions","accountTransactions","identifier","updatedAccountTransactions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transactionsActionAtom.js","sources":["../../../src/transactions/state/transactionsActionAtom.ts"],"sourcesContent":["import type {\n TransactionItem,\n StandaloneTransactionItem,\n BatchTransactionItem,\n MinTransactionItem,\n} from \"../types\";\nimport { atom } from \"jotai\";\nimport { jotaiStore } from \"@/core/store\";\n\nimport { ensureCallsStatusFactory } from \"../queries/ensureCallsStatus\";\nimport { ensureTxReceiptFactory } from \"../queries/ensureTxReceipt\";\nimport {\n WaitForCallsStatusTimeoutError,\n TransactionReceiptNotFoundError,\n WaitForTransactionReceiptTimeoutError,\n MethodNotSupportedRpcError,\n} from \"viem\";\nimport { transactionLogger } from \"../logger\";\nimport {\n transactionsAtom,\n type TransactionsMap,\n type TransactionsState,\n} from \"./transactionsAtom\";\nimport { isBatchTransactionItem, isStandaloneTransactionItem } from \"../utils\";\nimport { accountAtom } from \"@/lib/web3/wagmi/external\";\nimport { assert } from \"ts-essentials\";\n\nexport const addTxAtom = atom<null, [transaction: MinTransactionItem], void>(\n null,\n async (get, set, transaction) => {\n const account = get(accountAtom);\n assert(account, \"addTxAtom: account is required\");\n\n const txWithMeta = {\n ...transaction,\n account,\n timestamp: Date.now(),\n dropped: false,\n };\n set(transactionsAtom, (current) => assignTx(current, txWithMeta));\n\n if (isStandaloneTransactionItem(txWithMeta)) {\n await set(finalizeStandaloneTxAtom, txWithMeta);\n } else {\n await set(finalizeBatchTxAtom, txWithMeta);\n }\n }\n);\n\nexport const finalizeStandaloneTxAtom = atom<\n null,\n [StandaloneTransactionItem],\n Promise<void>\n>(null, async (_, set, transaction) => {\n const finalizedTx: StandaloneTransactionItem = { ...transaction };\n const ensureTxReceipt = ensureTxReceiptFactory();\n\n try {\n finalizedTx.receipt = await ensureTxReceipt({\n hash: transaction.transactionHash,\n chainId: transaction.chainId,\n });\n } catch (error) {\n if (\n error instanceof WaitForTransactionReceiptTimeoutError ||\n error instanceof TransactionReceiptNotFoundError\n ) {\n finalizedTx.dropped = true;\n transactionLogger.error(\n `finalizeStandaloneTxAtom::Transaction ${transaction.transactionHash} dropped with error: ${error.message}`\n );\n } else throw error;\n } finally {\n set(transactionsAtom, (current) => assignTx(current, finalizedTx));\n }\n});\n\nexport const finalizeBatchTxAtom = atom<\n null,\n [BatchTransactionItem],\n Promise<void>\n>(null, async (_, set, transaction) => {\n const finalizedTx: BatchTransactionItem = { ...transaction };\n const ensureCallsStatus = ensureCallsStatusFactory();\n\n try {\n const { receipts, status } = await ensureCallsStatus({\n id: transaction.callsId,\n });\n finalizedTx.callsStatus = status;\n finalizedTx.receipt = receipts?.[receipts.length - 1];\n } catch (error) {\n if (\n error instanceof WaitForCallsStatusTimeoutError ||\n error instanceof MethodNotSupportedRpcError\n ) {\n finalizedTx.dropped = true;\n transactionLogger.error(\n `finalizeBatchTxAtom::Batch transaction ${transaction.callsId} dropped with error: ${error.message}`\n );\n } else {\n finalizedTx.callsStatus = \"failure\";\n throw error;\n }\n } finally {\n set(transactionsAtom, (current) => assignTx(current, finalizedTx));\n }\n});\n\nexport const addTx = async (transaction: MinTransactionItem) => {\n return jotaiStore.set(addTxAtom, transaction);\n};\n\nfunction sanitizeTx(tx: TransactionItem): TransactionItem {\n if (isBatchTransactionItem(tx)) {\n return {\n action: tx.action,\n account: tx.account,\n chainId: tx.chainId,\n callsId: tx.callsId,\n callsStatus: tx.callsStatus,\n timestamp: tx.timestamp,\n dropped: tx.dropped,\n receipt: tx.receipt,\n transactionSpecificData: tx.transactionSpecificData,\n } as BatchTransactionItem;\n }\n\n return {\n action: tx.action,\n chainId: tx.chainId,\n account: tx.account,\n transactionHash: tx.transactionHash,\n timestamp: tx.timestamp,\n dropped: tx.dropped,\n receipt: tx.receipt,\n transactionSpecificData: tx.transactionSpecificData,\n } as StandaloneTransactionItem;\n}\n\nfunction assignTx(\n currentTransactions: TransactionsState,\n transaction: TransactionItem\n): TransactionsState {\n transactionLogger.log(\"assignTx\", {\n account: transaction.account,\n transaction,\n });\n\n const accountTransactions = currentTransactions[transaction.account] || {};\n const identifier = isStandaloneTransactionItem(transaction)\n ? transaction.transactionHash\n : transaction.callsId;\n\n const updatedAccountTransactions: TransactionsMap = {\n ...accountTransactions,\n [identifier]: sanitizeTx({\n ...accountTransactions[identifier],\n ...transaction,\n }),\n };\n\n return {\n ...currentTransactions,\n [transaction.account]: updatedAccountTransactions,\n };\n}\n"],"names":["addTxAtom","atom","get","set","transaction","account","accountAtom","assert","txWithMeta","timestamp","Date","now","dropped","transactionsAtom","current","assignTx","isStandaloneTransactionItem","finalizeStandaloneTxAtom","finalizeBatchTxAtom","_","finalizedTx","ensureTxReceipt","ensureTxReceiptFactory","receipt","hash","transactionHash","chainId","error","WaitForTransactionReceiptTimeoutError","TransactionReceiptNotFoundError","transactionLogger","message","ensureCallsStatus","ensureCallsStatusFactory","receipts","status","id","callsId","callsStatus","length","WaitForCallsStatusTimeoutError","MethodNotSupportedRpcError","addTx","jotaiStore","sanitizeTx","tx","isBatchTransactionItem","action","transactionSpecificData","currentTransactions","log","accountTransactions","identifier","updatedAccountTransactions"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { atomWithStorage, createJSONStorage } from 'jotai/utils';
|
|
|
2
2
|
import { atom } from 'jotai';
|
|
3
3
|
import { extractPendingTransactions, isStandaloneTransactionItem, isBatchTransactionItem, extractSwapTransactions } from '../utils.js';
|
|
4
4
|
import { serialize, deserialize } from 'wagmi';
|
|
5
|
-
import {
|
|
5
|
+
import { accountAtom } from '../../lib/web3/wagmi/external.js';
|
|
6
6
|
import { emptyArray } from '../../lib/constants/index.js';
|
|
7
7
|
import { LOCAL_STORAGE_PREFIX } from '../../lib/constants/storage.js';
|
|
8
8
|
|
|
@@ -20,7 +20,7 @@ const allTransactionsAtom = atom((get) => {
|
|
|
20
20
|
return Object.values(transactions).flatMap((txMap) => Object.values(txMap));
|
|
21
21
|
});
|
|
22
22
|
const userTransactionsAtom = atom((get) => {
|
|
23
|
-
const account = get(
|
|
23
|
+
const account = get(accountAtom);
|
|
24
24
|
if (!account) return emptyArray;
|
|
25
25
|
const transactions = get(transactionsAtom)[account];
|
|
26
26
|
if (!transactions) return emptyArray;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactionsAtom.js","sources":["../../../src/transactions/state/transactionsAtom.ts"],"sourcesContent":["import type {\n BatchTransactionItem,\n StandaloneTransactionItem,\n TransactionItem,\n TransactionItemSwap,\n} from \"../types\";\nimport { atomWithStorage, createJSONStorage } from \"jotai/utils\";\nimport { atom } from \"jotai\";\n\nimport {\n extractPendingTransactions,\n extractSwapTransactions,\n isStandaloneTransactionItem,\n isBatchTransactionItem,\n} from \"../utils\";\nimport { serialize, deserialize } from \"wagmi\";\nimport type { Address } from \"viem\";\nimport {
|
|
1
|
+
{"version":3,"file":"transactionsAtom.js","sources":["../../../src/transactions/state/transactionsAtom.ts"],"sourcesContent":["import type {\n BatchTransactionItem,\n StandaloneTransactionItem,\n TransactionItem,\n TransactionItemSwap,\n} from \"../types\";\nimport { atomWithStorage, createJSONStorage } from \"jotai/utils\";\nimport { atom } from \"jotai\";\n\nimport {\n extractPendingTransactions,\n extractSwapTransactions,\n isStandaloneTransactionItem,\n isBatchTransactionItem,\n} from \"../utils\";\nimport { serialize, deserialize } from \"wagmi\";\nimport type { Address } from \"viem\";\nimport { accountAtom } from \"@/lib/web3/wagmi/external\";\nimport { emptyArray } from \"@/lib/constants\";\nimport { LOCAL_STORAGE_PREFIX } from \"@/lib/constants/storage\";\n\n// Record<TxHash/CallsId, TransactionItem>\nexport type TransactionsMap = Record<string, TransactionItem>;\n\nexport type TransactionsState = Record<Address, TransactionsMap>;\n\nexport const transactionsAtom = atomWithStorage<TransactionsState>(\n `${LOCAL_STORAGE_PREFIX}_transactions`,\n {},\n createJSONStorage(() => localStorage, {\n // serialize/deserialize to handle bigint values\n replacer: (_, value) => serialize(value),\n reviver: (_, value) => {\n return typeof value === \"string\" ? deserialize(value) : value;\n },\n }),\n { getOnInit: true }\n);\n\nexport const allTransactionsAtom = atom<TransactionItem[]>((get) => {\n const transactions = get(transactionsAtom);\n return Object.values(transactions).flatMap((txMap) => Object.values(txMap));\n});\n\nexport const userTransactionsAtom = atom<TransactionItem[]>((get) => {\n const account = get(accountAtom);\n if (!account) return emptyArray;\n const transactions = get(transactionsAtom)[account];\n if (!transactions) return emptyArray;\n return Object.values(transactions);\n});\n\nexport const allStandaloneTransactionItemsAtom = atom<\n StandaloneTransactionItem[]\n>((get) => {\n const transactions = get(allTransactionsAtom);\n return transactions.filter(isStandaloneTransactionItem);\n});\n\nexport const allBatchTransactionItemsAtom = atom<BatchTransactionItem[]>(\n (get) => {\n const transactions = get(allTransactionsAtom);\n return transactions.filter(isBatchTransactionItem);\n }\n);\n\nexport const allPendingStandaloneTransactionItemsAtom = atom<\n StandaloneTransactionItem[]\n>((get) => {\n const transactions = get(allStandaloneTransactionItemsAtom);\n return extractPendingTransactions(transactions);\n});\n\nexport const allPendingBatchTransactionItemsAtom = atom<BatchTransactionItem[]>(\n (get) => {\n const transactions = get(allBatchTransactionItemsAtom);\n return extractPendingTransactions(transactions);\n }\n);\n\nexport const userPendingTransactionsAtom = atom<TransactionItem[]>((get) => {\n const transactions = get(userTransactionsAtom);\n return extractPendingTransactions(transactions);\n});\n\nexport const userSwapTransactionsAtom = atom<TransactionItemSwap[]>((get) => {\n const transactions = get(userTransactionsAtom);\n return extractSwapTransactions(transactions);\n});\n"],"names":["transactionsAtom","atomWithStorage","LOCAL_STORAGE_PREFIX","createJSONStorage","localStorage","replacer","_","value","serialize","reviver","deserialize","getOnInit","allTransactionsAtom","atom","get","transactions","Object","values","flatMap","txMap","userTransactionsAtom","account","accountAtom","emptyArray","allStandaloneTransactionItemsAtom","filter","isStandaloneTransactionItem","allBatchTransactionItemsAtom","isBatchTransactionItem","allPendingStandaloneTransactionItemsAtom","extractPendingTransactions","allPendingBatchTransactionItemsAtom","userPendingTransactionsAtom","userSwapTransactionsAtom","extractSwapTransactions"],"mappings":";;;;;;;;AA0BO,MAAMA,gBAAAA,GAAmBC,gBAC9B,CAAA,EAAGC,oBAAoB,iBACvB,EAAC,EACDC,iBAAAA,CAAkB,MAAMC,YAAAA,EAAc;AAAA;AAAA,EAEpCC,QAAAA,EAAUA,CAACC,CAAAA,EAAGC,KAAAA,KAAUC,UAAUD,KAAK,CAAA;AAAA,EACvCE,OAAAA,EAASA,CAACH,CAAAA,EAAGC,KAAAA,KAAU;AACrB,IAAA,OAAO,OAAOA,KAAAA,KAAU,QAAA,GAAWG,WAAAA,CAAYH,KAAK,CAAA,GAAIA,KAAAA;AAAAA,EAC1D;AACF,CAAC,CAAA,EACD;AAAA,EAAEI,SAAAA,EAAW;AAAK,CACpB;AAEO,MAAMC,mBAAAA,GAAsBC,KAAyBC,CAAAA,GAAAA,KAAQ;AAClE,EAAA,MAAMC,YAAAA,GAAeD,IAAId,gBAAgB,CAAA;AACzC,EAAA,OAAOgB,MAAAA,CAAOC,OAAOF,YAAY,CAAA,CAAEG,QAASC,CAAAA,KAAAA,KAAUH,MAAAA,CAAOC,MAAAA,CAAOE,KAAK,CAAC,CAAA;AAC5E,CAAC;AAEM,MAAMC,oBAAAA,GAAuBP,KAAyBC,CAAAA,GAAAA,KAAQ;AACnE,EAAA,MAAMO,OAAAA,GAAUP,IAAIQ,WAAW,CAAA;AAC/B,EAAA,IAAI,CAACD,SAAS,OAAOE,UAAAA;AACrB,EAAA,MAAMR,YAAAA,GAAeD,GAAAA,CAAId,gBAAgB,CAAA,CAAEqB,OAAO,CAAA;AAClD,EAAA,IAAI,CAACN,cAAc,OAAOQ,UAAAA;AAC1B,EAAA,OAAOP,MAAAA,CAAOC,OAAOF,YAAY,CAAA;AACnC,CAAC;AAEM,MAAMS,iCAAAA,GAAoCX,KAE9CC,CAAAA,GAAAA,KAAQ;AACT,EAAA,MAAMC,YAAAA,GAAeD,IAAIF,mBAAmB,CAAA;AAC5C,EAAA,OAAOG,YAAAA,CAAaU,OAAOC,2BAA2B,CAAA;AACxD,CAAC;AAEM,MAAMC,4BAAAA,GAA+Bd,KACzCC,CAAAA,GAAAA,KAAQ;AACP,EAAA,MAAMC,YAAAA,GAAeD,IAAIF,mBAAmB,CAAA;AAC5C,EAAA,OAAOG,YAAAA,CAAaU,OAAOG,sBAAsB,CAAA;AACnD,CACF;AAEO,MAAMC,wCAAAA,GAA2ChB,KAErDC,CAAAA,GAAAA,KAAQ;AACT,EAAA,MAAMC,YAAAA,GAAeD,IAAIU,iCAAiC,CAAA;AAC1D,EAAA,OAAOM,2BAA2Bf,YAAY,CAAA;AAChD,CAAC;AAEM,MAAMgB,mCAAAA,GAAsClB,KAChDC,CAAAA,GAAAA,KAAQ;AACP,EAAA,MAAMC,YAAAA,GAAeD,IAAIa,4BAA4B,CAAA;AACrD,EAAA,OAAOG,2BAA2Bf,YAAY,CAAA;AAChD,CACF;AAEO,MAAMiB,2BAAAA,GAA8BnB,KAAyBC,CAAAA,GAAAA,KAAQ;AAC1E,EAAA,MAAMC,YAAAA,GAAeD,IAAIM,oBAAoB,CAAA;AAC7C,EAAA,OAAOU,2BAA2Bf,YAAY,CAAA;AAChD,CAAC;AAEM,MAAMkB,wBAAAA,GAA2BpB,KAA6BC,CAAAA,GAAAA,KAAQ;AAC3E,EAAA,MAAMC,YAAAA,GAAeD,IAAIM,oBAAoB,CAAA;AAC7C,EAAA,OAAOc,wBAAwBnB,YAAY,CAAA;AAC7C,CAAC;;;;"}
|
|
@@ -3,15 +3,11 @@ import { SupportedChainId } from '../lib/web3/wagmi/types';
|
|
|
3
3
|
import { OrderData } from '@velora-dex/sdk';
|
|
4
4
|
import { DeltaOrderToPost } from '@velora-dex/sdk/dist/methods/delta/postDeltaOrder';
|
|
5
5
|
import { Address, Hash, Prettify, TransactionReceipt } from 'viem';
|
|
6
|
-
import { Connector } from 'wagmi';
|
|
7
|
-
import { safe } from 'wagmi/connectors';
|
|
8
|
-
type ConnectorData = Pick<Connector, "type">;
|
|
9
6
|
export type TransactionCommonData = {
|
|
10
7
|
chainId: SupportedChainId;
|
|
11
8
|
timestamp: number;
|
|
12
9
|
account: Address;
|
|
13
10
|
dropped: boolean;
|
|
14
|
-
connectorData?: ConnectorData;
|
|
15
11
|
};
|
|
16
12
|
export interface StandaloneTransactionItemData extends TransactionCommonData {
|
|
17
13
|
transactionHash: Hash;
|
|
@@ -91,11 +87,5 @@ export type TransactionItem = TransactionItemSwap | TransactionItemApprove | Tra
|
|
|
91
87
|
export type MinTransactionItem = TransactionWithoutMeta<TransactionItem>;
|
|
92
88
|
export type StandaloneTransactionItem = Prettify<Extract<TransactionItem, StandaloneTransactionItemData>>;
|
|
93
89
|
export type BatchTransactionItem = Prettify<Extract<TransactionItem, BatchTransactionItemData>>;
|
|
94
|
-
export type TransactionWithoutMeta<T> = T extends Pick<TransactionItem, "dropped" | "timestamp" | "account"
|
|
95
|
-
export type GnosisSafeTransactionItem = Prettify<TransactionItem & {
|
|
96
|
-
connectorData: Prettify<ConnectorData & {
|
|
97
|
-
type: typeof safe.type;
|
|
98
|
-
}>;
|
|
99
|
-
}>;
|
|
100
|
-
export {};
|
|
90
|
+
export type TransactionWithoutMeta<T> = T extends Pick<TransactionItem, "dropped" | "timestamp" | "account"> ? Prettify<Omit<T, "dropped" | "timestamp" | "account">> : T;
|
|
101
91
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/transactions/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/transactions/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BatchTransactionItem, GnosisSafeTransactionItem, StandaloneTransactionItem, TransactionItem, TransactionItemSwap } from './types';
|
|
2
1
|
import { Hash } from 'viem';
|
|
2
|
+
import { BatchTransactionItem, StandaloneTransactionItem, TransactionItem, TransactionItemSwap } from './types';
|
|
3
3
|
export declare function isStandaloneTransactionItem(item: TransactionItem): item is StandaloneTransactionItem;
|
|
4
4
|
export declare function isBatchTransactionItem(item: TransactionItem): item is BatchTransactionItem;
|
|
5
5
|
export declare function extractPendingTransactions<T extends StandaloneTransactionItem | BatchTransactionItem>(transactions: T[]): T[];
|
|
@@ -8,5 +8,4 @@ export type TransactionItemSwapWithId = TransactionItemSwap & {
|
|
|
8
8
|
id: Hash;
|
|
9
9
|
};
|
|
10
10
|
export declare function combineSwapTransactionItems<T extends TransactionItemSwap>(...txArrays: T[][]): TransactionItemSwapWithId[];
|
|
11
|
-
export declare function isGnosisSafeTx(tx: TransactionItem): tx is GnosisSafeTransactionItem;
|
|
12
11
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/transactions/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,yBAAyB,EACzB,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/transactions/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EACV,oBAAoB,EACpB,yBAAyB,EACzB,eAAe,EACf,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,eAAe,GACpB,IAAI,IAAI,yBAAyB,CAEnC;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,eAAe,GACpB,IAAI,IAAI,oBAAoB,CAE9B;AAED,wBAAgB,0BAA0B,CACxC,CAAC,SAAS,yBAAyB,GAAG,oBAAoB,EAC1D,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAQxB;AAED,wBAAgB,uBAAuB,CACrC,YAAY,EAAE,CAAC,yBAAyB,GAAG,oBAAoB,CAAC,EAAE,GACjE,mBAAmB,EAAE,CAEvB;AAID,MAAM,MAAM,yBAAyB,GAAG,mBAAmB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC;AAE3E,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,mBAAmB,EACvE,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,GACjB,yBAAyB,EAAE,CAiB7B"}
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { isSafeConnector } from '../hooks/connectors/useIsGnosisSafeConnector.js';
|
|
2
|
-
|
|
3
1
|
function isStandaloneTransactionItem(item) {
|
|
4
2
|
return "transactionHash" in item;
|
|
5
3
|
}
|
|
@@ -23,9 +21,6 @@ function combineSwapTransactionItems(...txArrays) {
|
|
|
23
21
|
});
|
|
24
22
|
return Object.values(map);
|
|
25
23
|
}
|
|
26
|
-
function isGnosisSafeTx(tx) {
|
|
27
|
-
return !!tx.connectorData && isSafeConnector(tx.connectorData);
|
|
28
|
-
}
|
|
29
24
|
|
|
30
|
-
export { combineSwapTransactionItems, extractPendingTransactions, extractSwapTransactions, isBatchTransactionItem,
|
|
25
|
+
export { combineSwapTransactionItems, extractPendingTransactions, extractSwapTransactions, isBatchTransactionItem, isStandaloneTransactionItem };
|
|
31
26
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../src/transactions/utils.ts"],"sourcesContent":["import type {\n BatchTransactionItem,\n
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../src/transactions/utils.ts"],"sourcesContent":["import type { Hash } from \"viem\";\nimport type {\n BatchTransactionItem,\n StandaloneTransactionItem,\n TransactionItem,\n TransactionItemSwap,\n} from \"./types\";\n\nexport function isStandaloneTransactionItem(\n item: TransactionItem\n): item is StandaloneTransactionItem {\n return \"transactionHash\" in item;\n}\n\nexport function isBatchTransactionItem(\n item: TransactionItem\n): item is BatchTransactionItem {\n return \"callsId\" in item;\n}\n\nexport function extractPendingTransactions<\n T extends StandaloneTransactionItem | BatchTransactionItem,\n>(transactions: T[]): T[] {\n return transactions.filter(\n (tx) =>\n !tx.dropped &&\n (isStandaloneTransactionItem(tx)\n ? !tx.receipt\n : !tx.callsStatus || tx.callsStatus === \"pending\")\n );\n}\n\nexport function extractSwapTransactions(\n transactions: (StandaloneTransactionItem | BatchTransactionItem)[]\n): TransactionItemSwap[] {\n return transactions.filter((tx) => tx.action === \"swap\");\n}\n\n// not all TransactionItemSwap have transactionHash\n// id will be either transactionHash (for standalone tx) or receipt.transactionHash (for batch tx)\nexport type TransactionItemSwapWithId = TransactionItemSwap & { id: Hash };\n\nexport function combineSwapTransactionItems<T extends TransactionItemSwap>(\n ...txArrays: T[][]\n): TransactionItemSwapWithId[] {\n const map: Record<Hash, TransactionItemSwapWithId> = {};\n\n txArrays.flat().forEach((item) => {\n const transactionHash = isStandaloneTransactionItem(item)\n ? item.transactionHash\n : item.receipt?.transactionHash;\n\n // we can't rely on callsId for batch swap tx as identifier if we have another source of truth\n // better to not show pending calls until we have transactionHash\n // otherwise it may lead to duplicate entries in the Activities list\n // when transaction appeared in the metabase but we still have pending call in the local storage\n if (transactionHash)\n map[transactionHash] = { ...item, id: transactionHash };\n });\n\n return Object.values(map);\n}\n"],"names":["isStandaloneTransactionItem","item","isBatchTransactionItem","extractPendingTransactions","transactions","filter","tx","dropped","receipt","callsStatus","extractSwapTransactions","action","combineSwapTransactionItems","txArrays","map","flat","forEach","transactionHash","id","Object","values"],"mappings":"AAQO,SAASA,4BACdC,IAAAA,EACmC;AACnC,EAAA,OAAO,iBAAA,IAAqBA,IAAAA;AAC9B;AAEO,SAASC,uBACdD,IAAAA,EAC8B;AAC9B,EAAA,OAAO,SAAA,IAAaA,IAAAA;AACtB;AAEO,SAASE,2BAEdC,YAAAA,EAAwB;AACxB,EAAA,OAAOA,aAAaC,MAAAA,CACjBC,CAAAA,EAAAA,KACC,CAACA,EAAAA,CAAGC,YACHP,2BAAAA,CAA4BM,EAAE,CAAA,GAC3B,CAACA,GAAGE,OAAAA,GACJ,CAACF,GAAGG,WAAAA,IAAeH,EAAAA,CAAGG,gBAAgB,SAAA,CAC9C,CAAA;AACF;AAEO,SAASC,wBACdN,YAAAA,EACuB;AACvB,EAAA,OAAOA,YAAAA,CAAaC,MAAAA,CAAQC,CAAAA,EAAAA,KAAOA,EAAAA,CAAGK,WAAW,MAAM,CAAA;AACzD;AAMO,SAASC,+BACXC,QAAAA,EAC0B;AAC7B,EAAA,MAAMC,MAA+C,EAAC;AAEtDD,EAAAA,QAAAA,CAASE,IAAAA,EAAK,CAAEC,OAAAA,CAASf,CAAAA,IAAAA,KAAS;AAChC,IAAA,MAAMgB,kBAAkBjB,2BAAAA,CAA4BC,IAAI,IACpDA,IAAAA,CAAKgB,eAAAA,GACLhB,KAAKO,OAAAA,EAASS,eAAAA;AAMlB,IAAA,IAAIA,eAAAA,EACFH,GAAAA,CAAIG,eAAe,CAAA,GAAI;AAAA,MAAE,GAAGhB,IAAAA;AAAAA,MAAMiB,EAAAA,EAAID;AAAAA,KAAgB;AAAA,EAC1D,CAAC,CAAA;AAED,EAAA,OAAOE,MAAAA,CAAOC,OAAON,GAAG,CAAA;AAC1B;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@velora-dex/widget",
|
|
3
|
-
"version": "0.3.11-dev.
|
|
3
|
+
"version": "0.3.11-dev.3",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -83,6 +83,7 @@
|
|
|
83
83
|
"copy-to-clipboard": "^3.3.3",
|
|
84
84
|
"dayjs": "^1.11.18",
|
|
85
85
|
"immer": "^10.1.1",
|
|
86
|
+
"is-mobile": "^5.0.0",
|
|
86
87
|
"jotai": "^2.16.1",
|
|
87
88
|
"jotai-devtools": "^0.13.0",
|
|
88
89
|
"jotai-effect": "^2.2.3",
|