@lifi/widget 3.10.0 → 3.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/esm/config/version.d.ts +1 -1
- package/dist/esm/config/version.js +1 -1
- package/dist/esm/hooks/useGasRefuel.js +11 -1
- package/dist/esm/hooks/useGasRefuel.js.map +1 -1
- package/dist/esm/hooks/useToAddressRequirements.js +2 -1
- package/dist/esm/hooks/useToAddressRequirements.js.map +1 -1
- package/dist/esm/pages/TransactionPage/StatusBottomSheet.js +2 -3
- package/dist/esm/pages/TransactionPage/StatusBottomSheet.js.map +1 -1
- package/dist/esm/providers/WalletProvider/SDKProviders.js +16 -3
- package/dist/esm/providers/WalletProvider/SDKProviders.js.map +1 -1
- package/dist/esm/providers/WalletProvider/getSafeMultisigConfig.d.ts +8 -0
- package/dist/esm/providers/WalletProvider/getSafeMultisigConfig.js +95 -0
- package/dist/esm/providers/WalletProvider/getSafeMultisigConfig.js.map +1 -0
- package/dist/esm/types/widget.d.ts +2 -11
- package/dist/esm/types/widget.js.map +1 -1
- package/package.json +4 -4
- package/src/config/version.ts +1 -1
- package/src/hooks/useGasRefuel.ts +22 -1
- package/src/hooks/useToAddressRequirements.ts +4 -1
- package/src/pages/TransactionPage/StatusBottomSheet.tsx +0 -5
- package/src/providers/WalletProvider/SDKProviders.tsx +17 -3
- package/src/providers/WalletProvider/getSafeMultisigConfig.ts +144 -0
- package/src/types/widget.ts +0 -9
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [3.11.0](https://github.com/lifinance/widget/compare/v3.10.0...v3.11.0) (2024-11-01)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* improve Safe support ([#323](https://github.com/lifinance/widget/issues/323)) ([6f1e5d1](https://github.com/lifinance/widget/commit/6f1e5d1cbb4e00c4219b0256ef29a4636df4d4e4))
|
|
11
|
+
|
|
5
12
|
## [3.10.0](https://github.com/lifinance/widget/compare/v3.9.0...v3.10.0) (2024-10-30)
|
|
6
13
|
|
|
7
14
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export declare const name = "@lifi/widget";
|
|
2
|
-
export declare const version = "3.
|
|
2
|
+
export declare const version = "3.11.0";
|
|
@@ -1,17 +1,25 @@
|
|
|
1
|
+
import { useAccount } from '@lifi/wallet-management';
|
|
1
2
|
import { useMemo } from 'react';
|
|
2
3
|
import { useFieldValues } from '../stores/form/useFieldValues.js';
|
|
3
4
|
import { useAvailableChains } from './useAvailableChains.js';
|
|
4
5
|
import { useGasRecommendation } from './useGasRecommendation.js';
|
|
6
|
+
import { useIsContractAddress } from './useIsContractAddress.js';
|
|
5
7
|
import { useTokenBalance } from './useTokenBalance.js';
|
|
6
8
|
export const useGasRefuel = () => {
|
|
7
9
|
const { getChainById } = useAvailableChains();
|
|
8
10
|
const [fromChainId, fromTokenAddress, toChainId, toAddress] = useFieldValues('fromChain', 'fromToken', 'toChain', 'toAddress');
|
|
9
11
|
const toChain = getChainById(toChainId);
|
|
10
12
|
const fromChain = getChainById(fromChainId);
|
|
13
|
+
const { account } = useAccount({ chainType: fromChain?.chainType });
|
|
14
|
+
const isFromContractAddress = useIsContractAddress(account.address, fromChainId, account.chainType);
|
|
15
|
+
const isToContractAddress = useIsContractAddress(toAddress, toChainId, toChain?.chainType);
|
|
11
16
|
const { token: nativeToken } = useTokenBalance(toAddress, toChainId ? toChain?.nativeToken : undefined, toChain);
|
|
12
17
|
const { data: gasRecommendation, isLoading } = useGasRecommendation(toChainId, fromChainId, fromTokenAddress);
|
|
13
18
|
// When we bridge between ecosystems we need to be sure toAddress is set
|
|
14
19
|
const isChainTypeSatisfied = fromChain?.chainType !== toChain?.chainType ? Boolean(toAddress) : true;
|
|
20
|
+
const isToAddressSatisfied = isFromContractAddress
|
|
21
|
+
? toAddress && toAddress !== account.address && !isToContractAddress
|
|
22
|
+
: true;
|
|
15
23
|
const enabled = useMemo(() => {
|
|
16
24
|
if (
|
|
17
25
|
// We don't allow same chain refuel.
|
|
@@ -20,7 +28,8 @@ export const useGasRefuel = () => {
|
|
|
20
28
|
!gasRecommendation?.available ||
|
|
21
29
|
!gasRecommendation?.recommended ||
|
|
22
30
|
!nativeToken ||
|
|
23
|
-
!isChainTypeSatisfied
|
|
31
|
+
!isChainTypeSatisfied ||
|
|
32
|
+
!isToAddressSatisfied) {
|
|
24
33
|
return false;
|
|
25
34
|
}
|
|
26
35
|
const tokenBalance = nativeToken.amount ?? 0n;
|
|
@@ -32,6 +41,7 @@ export const useGasRefuel = () => {
|
|
|
32
41
|
fromChainId,
|
|
33
42
|
gasRecommendation,
|
|
34
43
|
isChainTypeSatisfied,
|
|
44
|
+
isToAddressSatisfied,
|
|
35
45
|
nativeToken,
|
|
36
46
|
toChainId,
|
|
37
47
|
]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGasRefuel.js","sourceRoot":"","sources":["../../../src/hooks/useGasRefuel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,MAAM,EAAE,YAAY,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAE7C,MAAM,CAAC,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,CAAC,GAAG,cAAc,CAC1E,WAAW,EACX,WAAW,EACX,SAAS,EACT,WAAW,CACZ,CAAA;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;IACvC,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAC,CAAA;IAE3C,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,eAAe,CAC5C,SAAS,EACT,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,EAC5C,OAAO,CACR,CAAA;IAED,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,GAAG,oBAAoB,CACjE,SAAS,EACT,WAAW,EACX,gBAAgB,CACjB,CAAA;IAED,wEAAwE;IACxE,MAAM,oBAAoB,GACxB,SAAS,EAAE,SAAS,KAAK,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAEzE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3B;QACE,oCAAoC;QACpC,uEAAuE;QACvE,WAAW,KAAK,SAAS;YACzB,CAAC,iBAAiB,EAAE,SAAS;YAC7B,CAAC,iBAAiB,EAAE,WAAW;YAC/B,CAAC,WAAW;YACZ,CAAC,oBAAoB,EACrB,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,IAAI,EAAE,CAAA;QAE7C,4DAA4D;QAC5D,MAAM,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;QAE3E,MAAM,eAAe,GAAG,YAAY,GAAG,iBAAiB,CAAA;QACxD,OAAO,eAAe,CAAA;IACxB,CAAC,EAAE;QACD,WAAW;QACX,iBAAiB;QACjB,oBAAoB;QACpB,WAAW;QACX,SAAS;KACV,CAAC,CAAA;IAEF,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,iBAAiB,EAAE,SAAS;QACtC,SAAS,EAAE,SAAS;QACpB,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,iBAAiB,EAAE,SAAS;YACtC,CAAC,CAAC,iBAAiB,CAAC,UAAU;YAC9B,CAAC,CAAC,SAAS;KACd,CAAA;AACH,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"useGasRefuel.js","sourceRoot":"","sources":["../../../src/hooks/useGasRefuel.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,9 +14,10 @@ export const useToAddressRequirements = () => {
|
|
|
14
14
|
});
|
|
15
15
|
const isFromContractAddress = useIsContractAddress(account.address, fromChainId, account.chainType);
|
|
16
16
|
const isDifferentChainType = fromChain && toChain && fromChain.chainType !== toChain.chainType;
|
|
17
|
+
const isCrossChainContractAddress = isFromContractAddress && fromChainId !== toChainId;
|
|
17
18
|
const requiredToAddress = requiredUI?.includes(RequiredUI.ToAddress) ||
|
|
18
19
|
isDifferentChainType ||
|
|
19
|
-
|
|
20
|
+
isCrossChainContractAddress;
|
|
20
21
|
return {
|
|
21
22
|
requiredToAddress,
|
|
22
23
|
requiredToChainType: toChain?.chainType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useToAddressRequirements.js","sourceRoot":"","sources":["../../../src/hooks/useToAddressRequirements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAEhE,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC3C,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAA;IACxC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;IACvE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;IAClD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;IAC9C,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;QAC7B,SAAS,EAAE,SAAS,EAAE,SAAS;KAChC,CAAC,CAAA;IACF,MAAM,qBAAqB,GAAG,oBAAoB,CAChD,OAAO,CAAC,OAAO,EACf,WAAW,EACX,OAAO,CAAC,SAAS,CAClB,CAAA;IAED,MAAM,oBAAoB,GACxB,SAAS,IAAI,OAAO,IAAI,SAAS,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CAAA;IAEnE,MAAM,iBAAiB,GACrB,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;QAC1C,oBAAoB;QACpB,
|
|
1
|
+
{"version":3,"file":"useToAddressRequirements.js","sourceRoot":"","sources":["../../../src/hooks/useToAddressRequirements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAEhE,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC3C,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAA;IACxC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;IACvE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;IAClD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;IAC9C,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC;QAC7B,SAAS,EAAE,SAAS,EAAE,SAAS;KAChC,CAAC,CAAA;IACF,MAAM,qBAAqB,GAAG,oBAAoB,CAChD,OAAO,CAAC,OAAO,EACf,WAAW,EACX,OAAO,CAAC,SAAS,CAClB,CAAA;IAED,MAAM,oBAAoB,GACxB,SAAS,IAAI,OAAO,IAAI,SAAS,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CAAA;IAEnE,MAAM,2BAA2B,GAC/B,qBAAqB,IAAI,WAAW,KAAK,SAAS,CAAA;IAEpD,MAAM,iBAAiB,GACrB,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;QAC1C,oBAAoB;QACpB,2BAA2B,CAAA;IAE7B,OAAO;QACL,iBAAiB;QACjB,mBAAmB,EAAE,OAAO,EAAE,SAAS;KACxC,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -40,7 +40,7 @@ export const StatusBottomSheetContent = ({ status, route, onClose }) => {
|
|
|
40
40
|
const { navigateBack, navigate } = useNavigateBack();
|
|
41
41
|
const queryClient = useQueryClient();
|
|
42
42
|
const { setFieldValue } = useFieldActions();
|
|
43
|
-
const { subvariant, subvariantOptions, contractSecondaryComponent, contractCompactComponent,
|
|
43
|
+
const { subvariant, subvariantOptions, contractSecondaryComponent, contractCompactComponent, } = useWidgetConfig();
|
|
44
44
|
const { getChainById } = useAvailableChains();
|
|
45
45
|
const ref = useRef();
|
|
46
46
|
useSetContentHeight(ref);
|
|
@@ -173,9 +173,8 @@ export const StatusBottomSheetContent = ({ status, route, onClose }) => {
|
|
|
173
173
|
const showContractComponent = subvariant === 'custom' &&
|
|
174
174
|
hasEnumFlag(status, RouteExecutionStatus.Done) &&
|
|
175
175
|
(contractCompactComponent || contractSecondaryComponent);
|
|
176
|
-
const VcComponent = status === RouteExecutionStatus.Done ? feeConfig?._vcComponent : undefined;
|
|
177
176
|
return (_jsxs(Box, { p: 3, ref: ref, children: [!showContractComponent ? (_jsx(CenterContainer, { children: _jsxs(IconCircle, { status: status, mb: 1, children: [status === RouteExecutionStatus.Idle ? (_jsx(InfoRounded, { color: "primary" })) : null, status === RouteExecutionStatus.Done ? (_jsx(Done, { color: "success" })) : null, hasEnumFlag(status, RouteExecutionStatus.Partial) ||
|
|
178
|
-
hasEnumFlag(status, RouteExecutionStatus.Refunded) ? (_jsx(WarningRounded, { color: "warning" })) : null, hasEnumFlag(status, RouteExecutionStatus.Failed) ? (_jsx(ErrorRounded, { color: "error" })) : null] }) })) : null, _jsx(CenterContainer, { children: _jsx(Typography, { py: 1, fontSize: 18, fontWeight: 700, children: title }) }), showContractComponent ? (contractCompactComponent || contractSecondaryComponent) : (_jsx(CenterContainer, { children: hasEnumFlag(status, RouteExecutionStatus.Done) ? (_jsx(Token, { token: toToken, py: 1, disableDescription: true })) : null })), !showContractComponent ? (primaryMessage ? (_jsx(Typography, { py: 1, children: primaryMessage })) : (_jsx(MessageSkeleton, {}))) : null, secondaryMessage ? (_jsx(Typography, { py: 1, children: secondaryMessage })) : null,
|
|
177
|
+
hasEnumFlag(status, RouteExecutionStatus.Refunded) ? (_jsx(WarningRounded, { color: "warning" })) : null, hasEnumFlag(status, RouteExecutionStatus.Failed) ? (_jsx(ErrorRounded, { color: "error" })) : null] }) })) : null, _jsx(CenterContainer, { children: _jsx(Typography, { py: 1, fontSize: 18, fontWeight: 700, children: title }) }), showContractComponent ? (contractCompactComponent || contractSecondaryComponent) : (_jsx(CenterContainer, { children: hasEnumFlag(status, RouteExecutionStatus.Done) ? (_jsx(Token, { token: toToken, py: 1, disableDescription: true })) : null })), !showContractComponent ? (primaryMessage ? (_jsx(Typography, { py: 1, children: primaryMessage })) : (_jsx(MessageSkeleton, {}))) : null, secondaryMessage ? (_jsx(Typography, { py: 1, children: secondaryMessage })) : null, _jsxs(Box, { sx: { display: 'flex', marginTop: 2, gap: 1.5 }, children: [hasEnumFlag(status, RouteExecutionStatus.Done) ? (_jsx(Button, { variant: "text", onClick: handleSeeDetails, fullWidth: true, children: t('button.seeDetails') })) : null, _jsxs(Button, { variant: "contained", fullWidth: true, onClick: handlePrimaryButton, children: [status === RouteExecutionStatus.Idle ? t('button.ok') : null, hasEnumFlag(status, RouteExecutionStatus.Done)
|
|
179
178
|
? t('button.done')
|
|
180
179
|
: null, status === RouteExecutionStatus.Failed
|
|
181
180
|
? t('button.seeDetails')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBottomSheet.js","sourceRoot":"","sources":["../../../../src/pages/TransactionPage/StatusBottomSheet.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"StatusBottomSheet.js","sourceRoot":"","sources":["../../../../src/pages/TransactionPage/StatusBottomSheet.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,27 +3,34 @@ import { useConfig as useBigmiConfig } from '@bigmi/react';
|
|
|
3
3
|
import { ChainType, EVM, Solana, UTXO, config } from '@lifi/sdk';
|
|
4
4
|
import { useWallet } from '@solana/wallet-adapter-react';
|
|
5
5
|
import { useEffect } from 'react';
|
|
6
|
-
import { useConfig as useWagmiConfig } from 'wagmi';
|
|
6
|
+
import { useAccount, useConfig as useWagmiConfig } from 'wagmi';
|
|
7
7
|
import { getConnectorClient as getWagmiConnectorClient, switchChain, } from 'wagmi/actions';
|
|
8
8
|
import { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js';
|
|
9
|
+
import { getSafeMultisigConfig } from './getSafeMultisigConfig.js';
|
|
9
10
|
export const SDKProviders = () => {
|
|
10
11
|
const { sdkConfig } = useWidgetConfig();
|
|
11
12
|
const { wallet } = useWallet();
|
|
12
13
|
const wagmiConfig = useWagmiConfig();
|
|
13
14
|
const bigmiConfig = useBigmiConfig();
|
|
15
|
+
const account = useAccount({ config: wagmiConfig });
|
|
14
16
|
useEffect(() => {
|
|
15
17
|
// Configure SDK Providers
|
|
16
18
|
const providers = [];
|
|
17
|
-
const hasConfiguredEVMProvider = sdkConfig?.providers?.
|
|
19
|
+
const hasConfiguredEVMProvider = sdkConfig?.providers?.find((provider) => provider.type === ChainType.EVM);
|
|
18
20
|
const hasConfiguredSVMProvider = sdkConfig?.providers?.some((provider) => provider.type === ChainType.SVM);
|
|
19
21
|
const hasConfiguredUTXOProvider = sdkConfig?.providers?.some((provider) => provider.type === ChainType.UTXO);
|
|
20
22
|
if (!hasConfiguredEVMProvider) {
|
|
23
|
+
// TODO: refactor this in favor of EIP-5792: Wallet Call API
|
|
24
|
+
const multisig = account.connector?.id === 'safe'
|
|
25
|
+
? getSafeMultisigConfig(account.connector)
|
|
26
|
+
: undefined;
|
|
21
27
|
providers.push(EVM({
|
|
22
28
|
getWalletClient: () => getWagmiConnectorClient(wagmiConfig),
|
|
23
29
|
switchChain: async (chainId) => {
|
|
24
30
|
const chain = await switchChain(wagmiConfig, { chainId });
|
|
25
31
|
return getWagmiConnectorClient(wagmiConfig, { chainId: chain.id });
|
|
26
32
|
},
|
|
33
|
+
multisig,
|
|
27
34
|
}));
|
|
28
35
|
}
|
|
29
36
|
if (!hasConfiguredSVMProvider) {
|
|
@@ -42,7 +49,13 @@ export const SDKProviders = () => {
|
|
|
42
49
|
providers.push(...sdkConfig.providers);
|
|
43
50
|
}
|
|
44
51
|
config.setProviders(providers);
|
|
45
|
-
}, [
|
|
52
|
+
}, [
|
|
53
|
+
account.connector,
|
|
54
|
+
bigmiConfig,
|
|
55
|
+
sdkConfig?.providers,
|
|
56
|
+
wagmiConfig,
|
|
57
|
+
wallet?.adapter,
|
|
58
|
+
]);
|
|
46
59
|
return null;
|
|
47
60
|
};
|
|
48
61
|
//# sourceMappingURL=SDKProviders.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SDKProviders.js","sourceRoot":"","sources":["../../../../src/providers/WalletProvider/SDKProviders.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,IAAI,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAC7E,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,cAAc,CAAA;AAE1D,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACjC,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"SDKProviders.js","sourceRoot":"","sources":["../../../../src/providers/WalletProvider/SDKProviders.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MultisigTransaction, MultisigTxDetails } from '@lifi/sdk';
|
|
2
|
+
import type { Connector } from 'wagmi';
|
|
3
|
+
export declare const getSafeMultisigConfig: (connector: Connector) => {
|
|
4
|
+
isMultisigWalletClient: boolean;
|
|
5
|
+
shouldBatchTransactions: boolean;
|
|
6
|
+
sendBatchTransaction: (batchTransactions: MultisigTransaction[]) => Promise<`0x${string}`>;
|
|
7
|
+
getMultisigTransactionDetails: (txHash: string, chainId: number, updateIntermediateStatus?: () => void) => Promise<MultisigTxDetails>;
|
|
8
|
+
};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
var TransactionStatus;
|
|
2
|
+
(function (TransactionStatus) {
|
|
3
|
+
TransactionStatus["AWAITING_CONFIRMATIONS"] = "AWAITING_CONFIRMATIONS";
|
|
4
|
+
TransactionStatus["AWAITING_EXECUTION"] = "AWAITING_EXECUTION";
|
|
5
|
+
TransactionStatus["CANCELLED"] = "CANCELLED";
|
|
6
|
+
TransactionStatus["FAILED"] = "FAILED";
|
|
7
|
+
TransactionStatus["SUCCESS"] = "SUCCESS";
|
|
8
|
+
})(TransactionStatus || (TransactionStatus = {}));
|
|
9
|
+
export const getSafeMultisigConfig = (connector) => {
|
|
10
|
+
const getMultisigTransactionDetails = async (txHash, chainId, updateIntermediateStatus) => {
|
|
11
|
+
const safeAppProvider = (await connector.getProvider());
|
|
12
|
+
const safeProviderSDK = safeAppProvider.sdk;
|
|
13
|
+
const safeTransactionDetails = await safeProviderSDK.txs.getBySafeTxHash(txHash);
|
|
14
|
+
const safeTxHash = safeTransactionDetails.txId;
|
|
15
|
+
const safeApiTransactionResponse = await fetch(`https://safe-client.safe.global/v1/chains/${chainId}/transactions/${safeTxHash}`);
|
|
16
|
+
const safeApiTransactionDetails = await safeApiTransactionResponse.json();
|
|
17
|
+
const nonTerminalStatus = [
|
|
18
|
+
TransactionStatus.SUCCESS,
|
|
19
|
+
TransactionStatus.CANCELLED,
|
|
20
|
+
TransactionStatus.FAILED,
|
|
21
|
+
];
|
|
22
|
+
const isSafeStatusPending = !nonTerminalStatus.includes(safeTransactionDetails.txStatus) &&
|
|
23
|
+
!nonTerminalStatus.includes(safeApiTransactionDetails.txStatus);
|
|
24
|
+
const isAwaitingExecution = [
|
|
25
|
+
safeTransactionDetails.txStatus,
|
|
26
|
+
safeApiTransactionDetails.txStatus,
|
|
27
|
+
].includes(TransactionStatus.AWAITING_EXECUTION);
|
|
28
|
+
if (isAwaitingExecution) {
|
|
29
|
+
updateIntermediateStatus?.();
|
|
30
|
+
}
|
|
31
|
+
if (isSafeStatusPending) {
|
|
32
|
+
await new Promise((resolve) => {
|
|
33
|
+
setTimeout(resolve, 5000);
|
|
34
|
+
});
|
|
35
|
+
return await getMultisigTransactionDetails(txHash, chainId, updateIntermediateStatus);
|
|
36
|
+
}
|
|
37
|
+
if ([
|
|
38
|
+
safeTransactionDetails.txStatus,
|
|
39
|
+
safeApiTransactionDetails.txStatus,
|
|
40
|
+
].includes(TransactionStatus.SUCCESS)) {
|
|
41
|
+
return {
|
|
42
|
+
status: 'DONE',
|
|
43
|
+
txHash: `0x${safeTransactionDetails.txHash?.slice(2)}`,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
if ([
|
|
47
|
+
safeTransactionDetails.txStatus,
|
|
48
|
+
safeApiTransactionDetails.txStatus,
|
|
49
|
+
].includes(TransactionStatus.FAILED)) {
|
|
50
|
+
return {
|
|
51
|
+
status: 'FAILED',
|
|
52
|
+
txHash: `0x${safeTransactionDetails.txHash?.slice(2)}`,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
if ([
|
|
56
|
+
safeTransactionDetails.txStatus,
|
|
57
|
+
safeApiTransactionDetails.txStatus,
|
|
58
|
+
].includes(TransactionStatus.CANCELLED)) {
|
|
59
|
+
return {
|
|
60
|
+
status: 'CANCELLED',
|
|
61
|
+
txHash: `0x${safeTransactionDetails.txHash?.slice(2)}`,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
if (isSafeStatusPending) {
|
|
65
|
+
return {
|
|
66
|
+
status: 'PENDING',
|
|
67
|
+
txHash: `0x${safeTransactionDetails.txHash?.slice(2)}`,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
status: 'PENDING',
|
|
72
|
+
txHash: `0x${safeTransactionDetails.txHash?.slice(2)}`,
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
const sendBatchTransaction = async (batchTransactions) => {
|
|
76
|
+
const safeAppProvider = (await connector.getProvider());
|
|
77
|
+
const safeProviderSDK = safeAppProvider.sdk;
|
|
78
|
+
try {
|
|
79
|
+
const { safeTxHash } = await safeProviderSDK.txs.send({
|
|
80
|
+
txs: batchTransactions,
|
|
81
|
+
});
|
|
82
|
+
return `0x${safeTxHash.slice(2)}`;
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
throw new Error(error);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
return {
|
|
89
|
+
isMultisigWalletClient: connector?.id === 'safe',
|
|
90
|
+
shouldBatchTransactions: connector?.id === 'safe',
|
|
91
|
+
sendBatchTransaction,
|
|
92
|
+
getMultisigTransactionDetails,
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=getSafeMultisigConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSafeMultisigConfig.js","sourceRoot":"","sources":["../../../../src/providers/WalletProvider/getSafeMultisigConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { BaseToken, ChainType, ContractCall, Order,
|
|
1
|
+
import type { BaseToken, ChainType, ContractCall, Order, RouteOptions, SDKConfig, StaticToken, Token } from '@lifi/sdk';
|
|
2
2
|
import type { Components, PaletteMode, PaletteOptions, Shape, Theme } from '@mui/material';
|
|
3
3
|
import type { TypographyOptions } from '@mui/material/styles/createTypography.js';
|
|
4
|
-
import type { CSSProperties,
|
|
4
|
+
import type { CSSProperties, MutableRefObject, ReactNode, RefObject } from 'react';
|
|
5
5
|
import type { CoinbaseWalletParameters, MetaMaskParameters, WalletConnectParameters } from 'wagmi/connectors';
|
|
6
6
|
import type { LanguageKey, LanguageResources } from '../providers/I18nProvider/types.js';
|
|
7
7
|
import type { DefaultFieldValues } from '../stores/form/types.js';
|
|
@@ -100,12 +100,6 @@ export interface WidgetFeeConfig {
|
|
|
100
100
|
* @returns A promise that resolves to the calculated fee as a number (e.g., 0.03 represents a 3% fee)
|
|
101
101
|
*/
|
|
102
102
|
calculateFee?(params: CalculateFeeParams): Promise<number | undefined>;
|
|
103
|
-
/**
|
|
104
|
-
* @internal
|
|
105
|
-
*/
|
|
106
|
-
_vcComponent: FC<{
|
|
107
|
-
route: RouteExtended;
|
|
108
|
-
}>;
|
|
109
103
|
}
|
|
110
104
|
export interface ToAddress {
|
|
111
105
|
name?: string;
|
|
@@ -147,9 +141,6 @@ export interface WidgetConfig {
|
|
|
147
141
|
contractTool?: WidgetContractTool;
|
|
148
142
|
integrator: string;
|
|
149
143
|
apiKey?: string;
|
|
150
|
-
/**
|
|
151
|
-
* @deprecated Use `feeConfig` instead.
|
|
152
|
-
*/
|
|
153
144
|
fee?: number;
|
|
154
145
|
feeConfig?: WidgetFeeConfig;
|
|
155
146
|
referrer?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget.js","sourceRoot":"","sources":["../../../src/types/widget.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"widget.js","sourceRoot":"","sources":["../../../src/types/widget.ts"],"names":[],"mappings":"AA6EA,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,uCAAyB,CAAA;IACzB,qCAAuB,CAAA;IACvB,qCAAuB,CAAA;IACvB,iCAAmB,CAAA;AACrB,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB;AAGD,MAAM,CAAN,IAAY,QAUX;AAVD,WAAY,QAAQ;IAClB,qCAAyB,CAAA;IACzB,mDAAuC,CAAA;IACvC,+BAAmB,CAAA;IACnB,iCAAqB,CAAA;IACrB,mCAAuB,CAAA;IACvB,mCAAuB,CAAA;IACvB,+BAAmB,CAAA;IACnB,qCAAyB,CAAA;IACzB,2DAA+C,CAAA;AACjD,CAAC,EAVW,QAAQ,KAAR,QAAQ,QAUnB;AAGD,MAAM,CAAN,IAAY,UAEX;AAFD,WAAY,UAAU;IACpB,qCAAuB,CAAA;AACzB,CAAC,EAFW,UAAU,KAAV,UAAU,QAErB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lifi/widget",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.11.0",
|
|
4
4
|
"description": "LI.FI Widget for cross-chain bridging and swapping. It will drive your multi-chain strategy and attract new users from everywhere.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/esm/index.js",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"@bigmi/react": "^0.0.4",
|
|
36
36
|
"@emotion/react": "^11.13.3",
|
|
37
37
|
"@emotion/styled": "^11.13.0",
|
|
38
|
-
"@lifi/sdk": "^3.4.
|
|
38
|
+
"@lifi/sdk": "^3.4.1",
|
|
39
39
|
"@mui/icons-material": "^5.16.7",
|
|
40
40
|
"@mui/lab": "^5.0.0-alpha.173",
|
|
41
41
|
"@mui/material": "^5.16.7",
|
|
@@ -53,10 +53,10 @@
|
|
|
53
53
|
"react-i18next": "^15.1.0",
|
|
54
54
|
"react-intersection-observer": "^9.13.1",
|
|
55
55
|
"react-router-dom": "^6.27.0",
|
|
56
|
-
"viem": "^2.21.
|
|
56
|
+
"viem": "^2.21.37",
|
|
57
57
|
"wagmi": "^2.12.25",
|
|
58
58
|
"zustand": "^4.5.5",
|
|
59
|
-
"@lifi/wallet-management": "^3.4.
|
|
59
|
+
"@lifi/wallet-management": "^3.4.2"
|
|
60
60
|
},
|
|
61
61
|
"peerDependencies": {
|
|
62
62
|
"react": ">=18",
|
package/src/config/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export const name = '@lifi/widget'
|
|
2
|
-
export const version = '3.
|
|
2
|
+
export const version = '3.11.0'
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { useAccount } from '@lifi/wallet-management'
|
|
1
2
|
import { useMemo } from 'react'
|
|
2
3
|
import { useFieldValues } from '../stores/form/useFieldValues.js'
|
|
3
4
|
import { useAvailableChains } from './useAvailableChains.js'
|
|
4
5
|
import { useGasRecommendation } from './useGasRecommendation.js'
|
|
6
|
+
import { useIsContractAddress } from './useIsContractAddress.js'
|
|
5
7
|
import { useTokenBalance } from './useTokenBalance.js'
|
|
6
8
|
|
|
7
9
|
export const useGasRefuel = () => {
|
|
@@ -17,6 +19,19 @@ export const useGasRefuel = () => {
|
|
|
17
19
|
const toChain = getChainById(toChainId)
|
|
18
20
|
const fromChain = getChainById(fromChainId)
|
|
19
21
|
|
|
22
|
+
const { account } = useAccount({ chainType: fromChain?.chainType })
|
|
23
|
+
|
|
24
|
+
const isFromContractAddress = useIsContractAddress(
|
|
25
|
+
account.address,
|
|
26
|
+
fromChainId,
|
|
27
|
+
account.chainType
|
|
28
|
+
)
|
|
29
|
+
const isToContractAddress = useIsContractAddress(
|
|
30
|
+
toAddress,
|
|
31
|
+
toChainId,
|
|
32
|
+
toChain?.chainType
|
|
33
|
+
)
|
|
34
|
+
|
|
20
35
|
const { token: nativeToken } = useTokenBalance(
|
|
21
36
|
toAddress,
|
|
22
37
|
toChainId ? toChain?.nativeToken : undefined,
|
|
@@ -33,6 +48,10 @@ export const useGasRefuel = () => {
|
|
|
33
48
|
const isChainTypeSatisfied =
|
|
34
49
|
fromChain?.chainType !== toChain?.chainType ? Boolean(toAddress) : true
|
|
35
50
|
|
|
51
|
+
const isToAddressSatisfied = isFromContractAddress
|
|
52
|
+
? toAddress && toAddress !== account.address && !isToContractAddress
|
|
53
|
+
: true
|
|
54
|
+
|
|
36
55
|
const enabled = useMemo(() => {
|
|
37
56
|
if (
|
|
38
57
|
// We don't allow same chain refuel.
|
|
@@ -41,7 +60,8 @@ export const useGasRefuel = () => {
|
|
|
41
60
|
!gasRecommendation?.available ||
|
|
42
61
|
!gasRecommendation?.recommended ||
|
|
43
62
|
!nativeToken ||
|
|
44
|
-
!isChainTypeSatisfied
|
|
63
|
+
!isChainTypeSatisfied ||
|
|
64
|
+
!isToAddressSatisfied
|
|
45
65
|
) {
|
|
46
66
|
return false
|
|
47
67
|
}
|
|
@@ -56,6 +76,7 @@ export const useGasRefuel = () => {
|
|
|
56
76
|
fromChainId,
|
|
57
77
|
gasRecommendation,
|
|
58
78
|
isChainTypeSatisfied,
|
|
79
|
+
isToAddressSatisfied,
|
|
59
80
|
nativeToken,
|
|
60
81
|
toChainId,
|
|
61
82
|
])
|
|
@@ -22,10 +22,13 @@ export const useToAddressRequirements = () => {
|
|
|
22
22
|
const isDifferentChainType =
|
|
23
23
|
fromChain && toChain && fromChain.chainType !== toChain.chainType
|
|
24
24
|
|
|
25
|
+
const isCrossChainContractAddress =
|
|
26
|
+
isFromContractAddress && fromChainId !== toChainId
|
|
27
|
+
|
|
25
28
|
const requiredToAddress =
|
|
26
29
|
requiredUI?.includes(RequiredUI.ToAddress) ||
|
|
27
30
|
isDifferentChainType ||
|
|
28
|
-
|
|
31
|
+
isCrossChainContractAddress
|
|
29
32
|
|
|
30
33
|
return {
|
|
31
34
|
requiredToAddress,
|
|
@@ -85,7 +85,6 @@ export const StatusBottomSheetContent: React.FC<
|
|
|
85
85
|
subvariantOptions,
|
|
86
86
|
contractSecondaryComponent,
|
|
87
87
|
contractCompactComponent,
|
|
88
|
-
feeConfig,
|
|
89
88
|
} = useWidgetConfig()
|
|
90
89
|
const { getChainById } = useAvailableChains()
|
|
91
90
|
|
|
@@ -252,9 +251,6 @@ export const StatusBottomSheetContent: React.FC<
|
|
|
252
251
|
hasEnumFlag(status, RouteExecutionStatus.Done) &&
|
|
253
252
|
(contractCompactComponent || contractSecondaryComponent)
|
|
254
253
|
|
|
255
|
-
const VcComponent =
|
|
256
|
-
status === RouteExecutionStatus.Done ? feeConfig?._vcComponent : undefined
|
|
257
|
-
|
|
258
254
|
return (
|
|
259
255
|
<Box p={3} ref={ref}>
|
|
260
256
|
{!showContractComponent ? (
|
|
@@ -300,7 +296,6 @@ export const StatusBottomSheetContent: React.FC<
|
|
|
300
296
|
{secondaryMessage ? (
|
|
301
297
|
<Typography py={1}>{secondaryMessage}</Typography>
|
|
302
298
|
) : null}
|
|
303
|
-
{VcComponent ? <VcComponent route={route} /> : null}
|
|
304
299
|
<Box sx={{ display: 'flex', marginTop: 2, gap: 1.5 }}>
|
|
305
300
|
{hasEnumFlag(status, RouteExecutionStatus.Done) ? (
|
|
306
301
|
<Button variant="text" onClick={handleSeeDetails} fullWidth>
|
|
@@ -5,23 +5,25 @@ import { ChainType, EVM, Solana, UTXO, config } from '@lifi/sdk'
|
|
|
5
5
|
import type { SignerWalletAdapter } from '@solana/wallet-adapter-base'
|
|
6
6
|
import { useWallet } from '@solana/wallet-adapter-react'
|
|
7
7
|
import { useEffect } from 'react'
|
|
8
|
-
import { useConfig as useWagmiConfig } from 'wagmi'
|
|
8
|
+
import { useAccount, useConfig as useWagmiConfig } from 'wagmi'
|
|
9
9
|
import {
|
|
10
10
|
getConnectorClient as getWagmiConnectorClient,
|
|
11
11
|
switchChain,
|
|
12
12
|
} from 'wagmi/actions'
|
|
13
13
|
import { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'
|
|
14
|
+
import { getSafeMultisigConfig } from './getSafeMultisigConfig.js'
|
|
14
15
|
|
|
15
16
|
export const SDKProviders = () => {
|
|
16
17
|
const { sdkConfig } = useWidgetConfig()
|
|
17
18
|
const { wallet } = useWallet()
|
|
18
19
|
const wagmiConfig = useWagmiConfig()
|
|
19
20
|
const bigmiConfig = useBigmiConfig()
|
|
21
|
+
const account = useAccount({ config: wagmiConfig })
|
|
20
22
|
|
|
21
23
|
useEffect(() => {
|
|
22
24
|
// Configure SDK Providers
|
|
23
25
|
const providers: SDKProvider[] = []
|
|
24
|
-
const hasConfiguredEVMProvider = sdkConfig?.providers?.
|
|
26
|
+
const hasConfiguredEVMProvider = sdkConfig?.providers?.find(
|
|
25
27
|
(provider) => provider.type === ChainType.EVM
|
|
26
28
|
)
|
|
27
29
|
const hasConfiguredSVMProvider = sdkConfig?.providers?.some(
|
|
@@ -31,6 +33,11 @@ export const SDKProviders = () => {
|
|
|
31
33
|
(provider) => provider.type === ChainType.UTXO
|
|
32
34
|
)
|
|
33
35
|
if (!hasConfiguredEVMProvider) {
|
|
36
|
+
// TODO: refactor this in favor of EIP-5792: Wallet Call API
|
|
37
|
+
const multisig =
|
|
38
|
+
account.connector?.id === 'safe'
|
|
39
|
+
? getSafeMultisigConfig(account.connector)
|
|
40
|
+
: undefined
|
|
34
41
|
providers.push(
|
|
35
42
|
EVM({
|
|
36
43
|
getWalletClient: () => getWagmiConnectorClient(wagmiConfig),
|
|
@@ -38,6 +45,7 @@ export const SDKProviders = () => {
|
|
|
38
45
|
const chain = await switchChain(wagmiConfig, { chainId })
|
|
39
46
|
return getWagmiConnectorClient(wagmiConfig, { chainId: chain.id })
|
|
40
47
|
},
|
|
48
|
+
multisig,
|
|
41
49
|
})
|
|
42
50
|
)
|
|
43
51
|
}
|
|
@@ -61,7 +69,13 @@ export const SDKProviders = () => {
|
|
|
61
69
|
providers.push(...sdkConfig.providers)
|
|
62
70
|
}
|
|
63
71
|
config.setProviders(providers)
|
|
64
|
-
}, [
|
|
72
|
+
}, [
|
|
73
|
+
account.connector,
|
|
74
|
+
bigmiConfig,
|
|
75
|
+
sdkConfig?.providers,
|
|
76
|
+
wagmiConfig,
|
|
77
|
+
wallet?.adapter,
|
|
78
|
+
])
|
|
65
79
|
|
|
66
80
|
return null
|
|
67
81
|
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import type { MultisigTransaction, MultisigTxDetails } from '@lifi/sdk'
|
|
3
|
+
import type { Connector } from 'wagmi'
|
|
4
|
+
|
|
5
|
+
enum TransactionStatus {
|
|
6
|
+
AWAITING_CONFIRMATIONS = 'AWAITING_CONFIRMATIONS',
|
|
7
|
+
AWAITING_EXECUTION = 'AWAITING_EXECUTION',
|
|
8
|
+
CANCELLED = 'CANCELLED',
|
|
9
|
+
FAILED = 'FAILED',
|
|
10
|
+
SUCCESS = 'SUCCESS',
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
type GatewayTransactionDetails = {
|
|
14
|
+
safeAddress: string
|
|
15
|
+
txId: string
|
|
16
|
+
executedAt?: number
|
|
17
|
+
txStatus: TransactionStatus
|
|
18
|
+
txHash?: string
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const getSafeMultisigConfig = (connector: Connector) => {
|
|
22
|
+
const getMultisigTransactionDetails = async (
|
|
23
|
+
txHash: string,
|
|
24
|
+
chainId: number,
|
|
25
|
+
updateIntermediateStatus?: () => void
|
|
26
|
+
): Promise<MultisigTxDetails> => {
|
|
27
|
+
const safeAppProvider = (await connector.getProvider()) as any
|
|
28
|
+
const safeProviderSDK = safeAppProvider.sdk
|
|
29
|
+
|
|
30
|
+
const safeTransactionDetails: GatewayTransactionDetails =
|
|
31
|
+
await safeProviderSDK.txs.getBySafeTxHash(txHash)
|
|
32
|
+
|
|
33
|
+
const safeTxHash = safeTransactionDetails.txId
|
|
34
|
+
|
|
35
|
+
const safeApiTransactionResponse = await fetch(
|
|
36
|
+
`https://safe-client.safe.global/v1/chains/${chainId}/transactions/${safeTxHash}`
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
const safeApiTransactionDetails = await safeApiTransactionResponse.json()
|
|
40
|
+
|
|
41
|
+
const nonTerminalStatus = [
|
|
42
|
+
TransactionStatus.SUCCESS,
|
|
43
|
+
TransactionStatus.CANCELLED,
|
|
44
|
+
TransactionStatus.FAILED,
|
|
45
|
+
]
|
|
46
|
+
|
|
47
|
+
const isSafeStatusPending =
|
|
48
|
+
!nonTerminalStatus.includes(safeTransactionDetails.txStatus) &&
|
|
49
|
+
!nonTerminalStatus.includes(safeApiTransactionDetails.txStatus)
|
|
50
|
+
|
|
51
|
+
const isAwaitingExecution = [
|
|
52
|
+
safeTransactionDetails.txStatus,
|
|
53
|
+
safeApiTransactionDetails.txStatus,
|
|
54
|
+
].includes(TransactionStatus.AWAITING_EXECUTION)
|
|
55
|
+
|
|
56
|
+
if (isAwaitingExecution) {
|
|
57
|
+
updateIntermediateStatus?.()
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (isSafeStatusPending) {
|
|
61
|
+
await new Promise((resolve) => {
|
|
62
|
+
setTimeout(resolve, 5000)
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
return await getMultisigTransactionDetails(
|
|
66
|
+
txHash,
|
|
67
|
+
chainId,
|
|
68
|
+
updateIntermediateStatus
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (
|
|
73
|
+
[
|
|
74
|
+
safeTransactionDetails.txStatus,
|
|
75
|
+
safeApiTransactionDetails.txStatus,
|
|
76
|
+
].includes(TransactionStatus.SUCCESS)
|
|
77
|
+
) {
|
|
78
|
+
return {
|
|
79
|
+
status: 'DONE',
|
|
80
|
+
txHash: `0x${safeTransactionDetails.txHash?.slice(2)}`,
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (
|
|
85
|
+
[
|
|
86
|
+
safeTransactionDetails.txStatus,
|
|
87
|
+
safeApiTransactionDetails.txStatus,
|
|
88
|
+
].includes(TransactionStatus.FAILED)
|
|
89
|
+
) {
|
|
90
|
+
return {
|
|
91
|
+
status: 'FAILED',
|
|
92
|
+
txHash: `0x${safeTransactionDetails.txHash?.slice(2)}`,
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (
|
|
97
|
+
[
|
|
98
|
+
safeTransactionDetails.txStatus,
|
|
99
|
+
safeApiTransactionDetails.txStatus,
|
|
100
|
+
].includes(TransactionStatus.CANCELLED)
|
|
101
|
+
) {
|
|
102
|
+
return {
|
|
103
|
+
status: 'CANCELLED',
|
|
104
|
+
txHash: `0x${safeTransactionDetails.txHash?.slice(2)}`,
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (isSafeStatusPending) {
|
|
109
|
+
return {
|
|
110
|
+
status: 'PENDING',
|
|
111
|
+
txHash: `0x${safeTransactionDetails.txHash?.slice(2)}`,
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return {
|
|
116
|
+
status: 'PENDING',
|
|
117
|
+
txHash: `0x${safeTransactionDetails.txHash?.slice(2)}`,
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const sendBatchTransaction = async (
|
|
122
|
+
batchTransactions: MultisigTransaction[]
|
|
123
|
+
): Promise<`0x${string}`> => {
|
|
124
|
+
const safeAppProvider = (await connector.getProvider()) as any
|
|
125
|
+
const safeProviderSDK = safeAppProvider.sdk
|
|
126
|
+
|
|
127
|
+
try {
|
|
128
|
+
const { safeTxHash } = await safeProviderSDK.txs.send({
|
|
129
|
+
txs: batchTransactions,
|
|
130
|
+
})
|
|
131
|
+
|
|
132
|
+
return `0x${safeTxHash.slice(2)}`
|
|
133
|
+
} catch (error) {
|
|
134
|
+
throw new Error(error as string)
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return {
|
|
139
|
+
isMultisigWalletClient: connector?.id === 'safe',
|
|
140
|
+
shouldBatchTransactions: connector?.id === 'safe',
|
|
141
|
+
sendBatchTransaction,
|
|
142
|
+
getMultisigTransactionDetails,
|
|
143
|
+
}
|
|
144
|
+
}
|
package/src/types/widget.ts
CHANGED
|
@@ -3,7 +3,6 @@ import type {
|
|
|
3
3
|
ChainType,
|
|
4
4
|
ContractCall,
|
|
5
5
|
Order,
|
|
6
|
-
RouteExtended,
|
|
7
6
|
RouteOptions,
|
|
8
7
|
SDKConfig,
|
|
9
8
|
StaticToken,
|
|
@@ -19,7 +18,6 @@ import type {
|
|
|
19
18
|
import type { TypographyOptions } from '@mui/material/styles/createTypography.js'
|
|
20
19
|
import type {
|
|
21
20
|
CSSProperties,
|
|
22
|
-
FC,
|
|
23
21
|
MutableRefObject,
|
|
24
22
|
ReactNode,
|
|
25
23
|
RefObject,
|
|
@@ -160,10 +158,6 @@ export interface WidgetFeeConfig {
|
|
|
160
158
|
* @returns A promise that resolves to the calculated fee as a number (e.g., 0.03 represents a 3% fee)
|
|
161
159
|
*/
|
|
162
160
|
calculateFee?(params: CalculateFeeParams): Promise<number | undefined>
|
|
163
|
-
/**
|
|
164
|
-
* @internal
|
|
165
|
-
*/
|
|
166
|
-
_vcComponent: FC<{ route: RouteExtended }>
|
|
167
161
|
}
|
|
168
162
|
|
|
169
163
|
export interface ToAddress {
|
|
@@ -212,9 +206,6 @@ export interface WidgetConfig {
|
|
|
212
206
|
contractTool?: WidgetContractTool
|
|
213
207
|
integrator: string
|
|
214
208
|
apiKey?: string
|
|
215
|
-
/**
|
|
216
|
-
* @deprecated Use `feeConfig` instead.
|
|
217
|
-
*/
|
|
218
209
|
fee?: number
|
|
219
210
|
feeConfig?: WidgetFeeConfig
|
|
220
211
|
referrer?: string
|