@lifi/widget 3.9.0 → 3.10.1-alpha.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 +12 -0
- package/dist/esm/components/ChainSelect/useChainSelect.js +9 -3
- package/dist/esm/components/ChainSelect/useChainSelect.js.map +1 -1
- package/dist/esm/components/Header/CloseDrawerButton.js +4 -3
- package/dist/esm/components/Header/CloseDrawerButton.js.map +1 -1
- package/dist/esm/components/Header/WalletHeader.js +14 -10
- package/dist/esm/components/Header/WalletHeader.js.map +1 -1
- package/dist/esm/components/Step/StepTimer.js +13 -6
- package/dist/esm/components/Step/StepTimer.js.map +1 -1
- package/dist/esm/config/version.d.ts +1 -1
- package/dist/esm/config/version.js +1 -1
- package/dist/esm/config/version.js.map +1 -1
- package/dist/esm/i18n/bn.json +3 -4
- package/dist/esm/i18n/de.json +3 -4
- package/dist/esm/i18n/es.json +3 -4
- package/dist/esm/i18n/fr.json +3 -4
- package/dist/esm/i18n/hi.json +3 -4
- package/dist/esm/i18n/id.json +3 -4
- package/dist/esm/i18n/it.json +3 -4
- package/dist/esm/i18n/ja.json +3 -4
- package/dist/esm/i18n/ko.json +3 -4
- package/dist/esm/i18n/pt.json +3 -4
- package/dist/esm/i18n/th.json +3 -4
- package/dist/esm/i18n/tr.json +3 -4
- package/dist/esm/i18n/uk.json +3 -4
- package/dist/esm/i18n/vi.json +3 -4
- package/dist/esm/i18n/zh.json +3 -4
- package/dist/esm/pages/SendToWallet/ConnectedWalletsPage.js +2 -2
- package/dist/esm/pages/SendToWallet/ConnectedWalletsPage.js.map +1 -1
- package/dist/esm/pages/SendToWallet/RecentWalletsPage.js +2 -2
- package/dist/esm/pages/SendToWallet/RecentWalletsPage.js.map +1 -1
- package/dist/esm/providers/WalletProvider/SDKProviders.js +17 -4
- package/dist/esm/providers/WalletProvider/SDKProviders.js.map +1 -1
- package/dist/esm/providers/WalletProvider/WalletProvider.js +8 -2
- package/dist/esm/providers/WalletProvider/WalletProvider.js.map +1 -1
- package/dist/esm/providers/WalletProvider/useExternalWalletProvider.d.ts +8 -0
- package/dist/esm/providers/WalletProvider/useExternalWalletProvider.js +39 -0
- package/dist/esm/providers/WalletProvider/useExternalWalletProvider.js.map +1 -0
- package/dist/esm/stores/chains/ChainOrderStore.js +26 -5
- package/dist/esm/stores/chains/ChainOrderStore.js.map +1 -1
- package/dist/esm/types/widget.d.ts +9 -0
- package/package.json +4 -4
- package/src/components/ChainSelect/useChainSelect.ts +9 -4
- package/src/components/Header/CloseDrawerButton.tsx +4 -3
- package/src/components/Header/WalletHeader.tsx +20 -12
- package/src/components/Step/StepTimer.tsx +29 -19
- package/src/config/version.ts +1 -1
- package/src/i18n/bn.json +3 -4
- package/src/i18n/de.json +3 -4
- package/src/i18n/es.json +3 -4
- package/src/i18n/fr.json +3 -4
- package/src/i18n/hi.json +3 -4
- package/src/i18n/id.json +3 -4
- package/src/i18n/it.json +3 -4
- package/src/i18n/ja.json +3 -4
- package/src/i18n/ko.json +3 -4
- package/src/i18n/pt.json +3 -4
- package/src/i18n/th.json +3 -4
- package/src/i18n/tr.json +3 -4
- package/src/i18n/uk.json +3 -4
- package/src/i18n/vi.json +3 -4
- package/src/i18n/zh.json +3 -4
- package/src/pages/SendToWallet/ConnectedWalletsPage.tsx +2 -2
- package/src/pages/SendToWallet/RecentWalletsPage.tsx +2 -2
- package/src/providers/WalletProvider/SDKProviders.tsx +20 -6
- package/src/providers/WalletProvider/WalletProvider.tsx +9 -2
- package/src/providers/WalletProvider/useExternalWalletProvider.ts +53 -0
- package/src/stores/chains/ChainOrderStore.tsx +28 -5
- package/src/types/widget.ts +9 -0
- package/dist/esm/providers/WalletProvider/useHasExternalWalletProvider.d.ts +0 -7
- package/dist/esm/providers/WalletProvider/useHasExternalWalletProvider.js +0 -28
- package/dist/esm/providers/WalletProvider/useHasExternalWalletProvider.js.map +0 -1
- package/src/providers/WalletProvider/useHasExternalWalletProvider.ts +0 -36
package/src/i18n/vi.json
CHANGED
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
"bridgeReview": "",
|
|
17
17
|
"buy": "Mua",
|
|
18
18
|
"cancel": "Huỷ bỏ",
|
|
19
|
-
"changeWallet": "Thay đổi ví",
|
|
20
19
|
"checkoutReview": "",
|
|
21
20
|
"close": "Đóng",
|
|
22
21
|
"confirm": "Xác nhận",
|
|
22
|
+
"connectAnotherWallet": "",
|
|
23
23
|
"connectWallet": "Kết nối ví",
|
|
24
24
|
"contactSupport": "Liên hệ hỗ trợ",
|
|
25
25
|
"continue": "Tiếp tục",
|
|
@@ -142,6 +142,7 @@
|
|
|
142
142
|
"signatureRejected": "Cần có chữ ký để hoàn tất giao dịch. {{amount, number(maximumFractionDigits: 9)}} {{tokenSymbol}} tại {{chainName}} vẫn còn trong ví của bạn.",
|
|
143
143
|
"slippageThreshold": "Độ trượt giá lớn hơn ngưỡng xác định. Vui lòng yêu cầu một tuyến đường mới để nhận báo giá mới.",
|
|
144
144
|
"transactionCanceled": "Giao dịch đã bị huỷ.",
|
|
145
|
+
"transactionConflict": "",
|
|
145
146
|
"transactionExpired": "",
|
|
146
147
|
"transactionFailed": "Vui lòng kiểm tra block explorer để biết thêm thông tin.",
|
|
147
148
|
"transactionNotSent": "Giao dịch không được gửi.",
|
|
@@ -161,6 +162,7 @@
|
|
|
161
162
|
"signatureRejected": "Yêu cầu chữ ký",
|
|
162
163
|
"slippageNotMet": "Điều kiện trượt giá không được đáp ứng",
|
|
163
164
|
"transactionCanceled": "Giao dịch bị huỷ",
|
|
165
|
+
"transactionConflict": "",
|
|
164
166
|
"transactionExpired": "",
|
|
165
167
|
"transactionFailed": "Giao dịch không thành công",
|
|
166
168
|
"transactionSimulationFailed": "",
|
|
@@ -309,8 +311,5 @@
|
|
|
309
311
|
"noBookmarkedWallets": "Không có ví được đánh dấu",
|
|
310
312
|
"noConnectedWallets": "Không có ví được kết nối",
|
|
311
313
|
"noRecentWallets": "Không có ví gần đây"
|
|
312
|
-
},
|
|
313
|
-
"wallet": {
|
|
314
|
-
"extensionNotFound": "Chắc chắn rằng tiện ích trên trình duyệt {{name}} đã được kích hoạt tước khi chọn ví này."
|
|
315
314
|
}
|
|
316
315
|
}
|
package/src/i18n/zh.json
CHANGED
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
"bridgeReview": "",
|
|
17
17
|
"buy": "购买",
|
|
18
18
|
"cancel": "取消",
|
|
19
|
-
"changeWallet": "更换钱包",
|
|
20
19
|
"checkoutReview": "",
|
|
21
20
|
"close": "关闭",
|
|
22
21
|
"confirm": "确认",
|
|
22
|
+
"connectAnotherWallet": "",
|
|
23
23
|
"connectWallet": "关联钱包",
|
|
24
24
|
"contactSupport": "联系技术支持",
|
|
25
25
|
"continue": "继续",
|
|
@@ -142,6 +142,7 @@
|
|
|
142
142
|
"signatureRejected": "需要您签名来完成此次交易。不用担心,{{chainName}} 链上 {{amount, number(maximumFractionDigits: 9)}} 个 {{tokenSymbol}} 仍在您的钱包里。",
|
|
143
143
|
"slippageThreshold": "滑点大于预设值,请选择其他路由并获取新的价格。",
|
|
144
144
|
"transactionCanceled": "交易已被取消。",
|
|
145
|
+
"transactionConflict": "",
|
|
145
146
|
"transactionExpired": "",
|
|
146
147
|
"transactionFailed": "请查看区块浏览器以了解更多信息。",
|
|
147
148
|
"transactionNotSent": "交易未能发送。",
|
|
@@ -161,6 +162,7 @@
|
|
|
161
162
|
"signatureRejected": "交易需要签名。",
|
|
162
163
|
"slippageNotMet": "滑点未满足",
|
|
163
164
|
"transactionCanceled": "交易取消",
|
|
165
|
+
"transactionConflict": "",
|
|
164
166
|
"transactionExpired": "",
|
|
165
167
|
"transactionFailed": "交易失败",
|
|
166
168
|
"transactionSimulationFailed": "",
|
|
@@ -309,8 +311,5 @@
|
|
|
309
311
|
"noBookmarkedWallets": "没有收藏的钱包",
|
|
310
312
|
"noConnectedWallets": "没有已连接的钱包",
|
|
311
313
|
"noRecentWallets": "没有最近使用的钱包"
|
|
312
|
-
},
|
|
313
|
-
"wallet": {
|
|
314
|
-
"extensionNotFound": "在选择钱包之前,请确保只有{{name}} 浏览器的扩展应用处于激活状态。"
|
|
315
314
|
}
|
|
316
315
|
}
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
ContentCopyRounded,
|
|
5
5
|
MoreHoriz,
|
|
6
6
|
OpenInNewRounded,
|
|
7
|
-
|
|
7
|
+
Wallet,
|
|
8
8
|
} from '@mui/icons-material'
|
|
9
9
|
import { ListItemAvatar, ListItemText, MenuItem } from '@mui/material'
|
|
10
10
|
import { useId, useState } from 'react'
|
|
@@ -139,7 +139,7 @@ export const ConnectedWalletsPage = () => {
|
|
|
139
139
|
)
|
|
140
140
|
})}
|
|
141
141
|
{!accounts.length && (
|
|
142
|
-
<EmptyListIndicator icon={<
|
|
142
|
+
<EmptyListIndicator icon={<Wallet sx={{ fontSize: 48 }} />}>
|
|
143
143
|
{t('sendToWallet.noConnectedWallets')}
|
|
144
144
|
</EmptyListIndicator>
|
|
145
145
|
)}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ContentCopyRounded,
|
|
3
3
|
DeleteOutline,
|
|
4
|
+
History,
|
|
4
5
|
MoreHoriz,
|
|
5
6
|
OpenInNewRounded,
|
|
6
7
|
TurnedInNot,
|
|
7
|
-
Wallet,
|
|
8
8
|
} from '@mui/icons-material'
|
|
9
9
|
import { ListItemAvatar, ListItemText, MenuItem } from '@mui/material'
|
|
10
10
|
import { useId, useRef, useState } from 'react'
|
|
@@ -175,7 +175,7 @@ export const RecentWalletsPage = () => {
|
|
|
175
175
|
</ListItem>
|
|
176
176
|
))}
|
|
177
177
|
{!recentWallets.length && (
|
|
178
|
-
<EmptyListIndicator icon={<
|
|
178
|
+
<EmptyListIndicator icon={<History sx={{ fontSize: 48 }} />}>
|
|
179
179
|
{t('sendToWallet.noRecentWallets')}
|
|
180
180
|
</EmptyListIndicator>
|
|
181
181
|
)}
|
|
@@ -1,36 +1,43 @@
|
|
|
1
1
|
import { getConnectorClient as getBigmiConnectorClient } from '@bigmi/client'
|
|
2
2
|
import { useConfig as useBigmiConfig } from '@bigmi/react'
|
|
3
|
-
import type { SDKProvider } from '@lifi/sdk'
|
|
3
|
+
import type { EVMProvider, SDKProvider } from '@lifi/sdk'
|
|
4
4
|
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
|
-
import { useEffect } from 'react'
|
|
7
|
+
import { useContext, useEffect } from 'react'
|
|
8
8
|
import { 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 { EVMExternalContext } from './EVMExternalContext.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 hasExternalEVMContext = useContext(EVMExternalContext)
|
|
20
22
|
|
|
21
23
|
useEffect(() => {
|
|
22
24
|
// Configure SDK Providers
|
|
23
25
|
const providers: SDKProvider[] = []
|
|
24
|
-
const
|
|
26
|
+
const configuredEVMProvider = sdkConfig?.providers?.find(
|
|
25
27
|
(provider) => provider.type === ChainType.EVM
|
|
26
|
-
)
|
|
28
|
+
) as EVMProvider | undefined
|
|
27
29
|
const hasConfiguredSVMProvider = sdkConfig?.providers?.some(
|
|
28
30
|
(provider) => provider.type === ChainType.SVM
|
|
29
31
|
)
|
|
30
32
|
const hasConfiguredUTXOProvider = sdkConfig?.providers?.some(
|
|
31
33
|
(provider) => provider.type === ChainType.UTXO
|
|
32
34
|
)
|
|
33
|
-
|
|
35
|
+
// TODO: refactor this in favor of EIP-5792: Wallet Call API
|
|
36
|
+
const multisig =
|
|
37
|
+
!hasExternalEVMContext && configuredEVMProvider
|
|
38
|
+
? configuredEVMProvider.multisig
|
|
39
|
+
: undefined
|
|
40
|
+
if (!configuredEVMProvider || multisig) {
|
|
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
|
+
bigmiConfig,
|
|
74
|
+
hasExternalEVMContext,
|
|
75
|
+
sdkConfig?.providers,
|
|
76
|
+
wagmiConfig,
|
|
77
|
+
wallet?.adapter,
|
|
78
|
+
])
|
|
65
79
|
|
|
66
80
|
return null
|
|
67
81
|
}
|
|
@@ -7,6 +7,7 @@ import { EVMProvider } from './EVMProvider.js'
|
|
|
7
7
|
import { SDKProviders } from './SDKProviders.js'
|
|
8
8
|
import { SVMProvider } from './SVMProvider.js'
|
|
9
9
|
import { UTXOProvider } from './UTXOProvider.js'
|
|
10
|
+
import { useExternalWalletProvider } from './useExternalWalletProvider.js'
|
|
10
11
|
|
|
11
12
|
export const WalletProvider: FC<PropsWithChildren> = ({ children }) => {
|
|
12
13
|
return (
|
|
@@ -24,10 +25,16 @@ export const WalletProvider: FC<PropsWithChildren> = ({ children }) => {
|
|
|
24
25
|
export const WalletMenuProvider: FC<PropsWithChildren> = ({ children }) => {
|
|
25
26
|
const { walletConfig } = useWidgetConfig()
|
|
26
27
|
const { i18n } = useTranslation()
|
|
28
|
+
const { internalChainTypes } = useExternalWalletProvider()
|
|
27
29
|
|
|
28
30
|
const config: WalletManagementConfig = useMemo(() => {
|
|
29
|
-
return {
|
|
30
|
-
|
|
31
|
+
return {
|
|
32
|
+
locale: i18n.resolvedLanguage as never,
|
|
33
|
+
enabledChainTypes: internalChainTypes,
|
|
34
|
+
...walletConfig,
|
|
35
|
+
}
|
|
36
|
+
}, [i18n.resolvedLanguage, internalChainTypes, walletConfig])
|
|
37
|
+
|
|
31
38
|
return (
|
|
32
39
|
<WalletManagementProvider config={config}>
|
|
33
40
|
{children}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { ChainType } from '@lifi/sdk'
|
|
2
|
+
import { useContext, useMemo } from 'react'
|
|
3
|
+
import { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'
|
|
4
|
+
import { EVMExternalContext } from './EVMExternalContext.js'
|
|
5
|
+
import { SVMExternalContext } from './SVMExternalContext.js'
|
|
6
|
+
import { UTXOExternalContext } from './UTXOExternalContext.js'
|
|
7
|
+
|
|
8
|
+
interface ExternalWalletProvider {
|
|
9
|
+
useExternalWalletProvidersOnly: boolean
|
|
10
|
+
externalChainTypes: ChainType[]
|
|
11
|
+
internalChainTypes: ChainType[]
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const internalChainTypes = [ChainType.EVM, ChainType.SVM, ChainType.UTXO]
|
|
15
|
+
|
|
16
|
+
export function useExternalWalletProvider(): ExternalWalletProvider {
|
|
17
|
+
const { walletConfig } = useWidgetConfig()
|
|
18
|
+
const hasExternalEVMContext = useContext(EVMExternalContext)
|
|
19
|
+
const hasExternalSVMContext = useContext(SVMExternalContext)
|
|
20
|
+
const hasExternalUTXOContext = useContext(UTXOExternalContext)
|
|
21
|
+
|
|
22
|
+
const data = useMemo(() => {
|
|
23
|
+
const providers: ChainType[] = []
|
|
24
|
+
if (hasExternalEVMContext) {
|
|
25
|
+
providers.push(ChainType.EVM)
|
|
26
|
+
}
|
|
27
|
+
if (hasExternalSVMContext) {
|
|
28
|
+
providers.push(ChainType.SVM)
|
|
29
|
+
}
|
|
30
|
+
if (hasExternalUTXOContext) {
|
|
31
|
+
providers.push(ChainType.UTXO)
|
|
32
|
+
}
|
|
33
|
+
const hasExternalProvider =
|
|
34
|
+
hasExternalEVMContext || hasExternalSVMContext || hasExternalUTXOContext
|
|
35
|
+
|
|
36
|
+
const useExternalWalletProvidersOnly =
|
|
37
|
+
hasExternalProvider && !walletConfig?.usePartialWalletManagement
|
|
38
|
+
return {
|
|
39
|
+
useExternalWalletProvidersOnly,
|
|
40
|
+
externalChainTypes: providers,
|
|
41
|
+
internalChainTypes: internalChainTypes.filter(
|
|
42
|
+
(chainType) => !providers.includes(chainType)
|
|
43
|
+
),
|
|
44
|
+
}
|
|
45
|
+
}, [
|
|
46
|
+
hasExternalEVMContext,
|
|
47
|
+
hasExternalSVMContext,
|
|
48
|
+
hasExternalUTXOContext,
|
|
49
|
+
walletConfig?.usePartialWalletManagement,
|
|
50
|
+
])
|
|
51
|
+
|
|
52
|
+
return data
|
|
53
|
+
}
|
|
@@ -2,6 +2,7 @@ import { createContext, useContext, useEffect, useRef } from 'react'
|
|
|
2
2
|
import type { StoreApi } from 'zustand'
|
|
3
3
|
import type { UseBoundStoreWithEqualityFn } from 'zustand/traditional'
|
|
4
4
|
import { useChains } from '../../hooks/useChains.js'
|
|
5
|
+
import { useExternalWalletProvider } from '../../providers/WalletProvider/useExternalWalletProvider.js'
|
|
5
6
|
import { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'
|
|
6
7
|
import { isItemAllowed } from '../../utils/item.js'
|
|
7
8
|
import type { FormType } from '../form/types.js'
|
|
@@ -22,10 +23,12 @@ export function ChainOrderStoreProvider({
|
|
|
22
23
|
children,
|
|
23
24
|
...props
|
|
24
25
|
}: PersistStoreProviderProps) {
|
|
25
|
-
const { chains:
|
|
26
|
+
const { chains: chainsConfig } = useWidgetConfig()
|
|
26
27
|
const storeRef = useRef<ChainOrderStore>()
|
|
27
28
|
const { chains } = useChains()
|
|
28
29
|
const { setFieldValue, getFieldValues } = useFieldActions()
|
|
30
|
+
const { externalChainTypes, useExternalWalletProvidersOnly } =
|
|
31
|
+
useExternalWalletProvider()
|
|
29
32
|
|
|
30
33
|
if (!storeRef.current) {
|
|
31
34
|
storeRef.current = createChainOrderStore(props)
|
|
@@ -34,9 +37,22 @@ export function ChainOrderStoreProvider({
|
|
|
34
37
|
useEffect(() => {
|
|
35
38
|
if (chains) {
|
|
36
39
|
;(['from', 'to'] as FormType[]).forEach((key) => {
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
+
const configChainIds = chainsConfig?.[key]
|
|
41
|
+
const isFromKey = key === 'from'
|
|
42
|
+
|
|
43
|
+
const filteredChains = chains.filter((chain) => {
|
|
44
|
+
const passesChainsConfigFilter = configChainIds
|
|
45
|
+
? isItemAllowed(chain.id, configChainIds)
|
|
46
|
+
: true
|
|
47
|
+
// If the integrator uses external wallet management and has not opted in for partial wallet management,
|
|
48
|
+
// restrict the displayed chains to those compatible with external wallet management.
|
|
49
|
+
// This ensures users only see chains for which they can sign transactions.
|
|
50
|
+
const passesWalletConfigFilter = isFromKey
|
|
51
|
+
? !useExternalWalletProvidersOnly ||
|
|
52
|
+
externalChainTypes.includes(chain.chainType)
|
|
53
|
+
: true
|
|
54
|
+
return passesChainsConfigFilter && passesWalletConfigFilter
|
|
55
|
+
})
|
|
40
56
|
const chainOrder = storeRef.current?.getState().initializeChains(
|
|
41
57
|
filteredChains.map((chain) => chain.id),
|
|
42
58
|
key
|
|
@@ -49,7 +65,14 @@ export function ChainOrderStoreProvider({
|
|
|
49
65
|
}
|
|
50
66
|
})
|
|
51
67
|
}
|
|
52
|
-
}, [
|
|
68
|
+
}, [
|
|
69
|
+
chains,
|
|
70
|
+
chainsConfig,
|
|
71
|
+
externalChainTypes,
|
|
72
|
+
getFieldValues,
|
|
73
|
+
setFieldValue,
|
|
74
|
+
useExternalWalletProvidersOnly,
|
|
75
|
+
])
|
|
53
76
|
|
|
54
77
|
return (
|
|
55
78
|
<ChainOrderStoreContext.Provider value={storeRef.current}>
|
package/src/types/widget.ts
CHANGED
|
@@ -108,6 +108,15 @@ export interface WidgetWalletConfig {
|
|
|
108
108
|
walletConnect?: WalletConnectParameters
|
|
109
109
|
coinbase?: CoinbaseWalletParameters
|
|
110
110
|
metaMask?: MetaMaskParameters
|
|
111
|
+
/**
|
|
112
|
+
* Determines whether the widget should provide partial wallet management functionality.
|
|
113
|
+
*
|
|
114
|
+
* In partial mode, external wallet management will be used for "opt-out" providers,
|
|
115
|
+
* while the internal management is applied for any remaining providers that do not opt out.
|
|
116
|
+
* This allows a flexible balance between the integrator’s custom wallet menu and the widget’s native wallet menu.
|
|
117
|
+
* @default false
|
|
118
|
+
*/
|
|
119
|
+
usePartialWalletManagement?: boolean
|
|
111
120
|
}
|
|
112
121
|
|
|
113
122
|
export interface WidgetSDKConfig
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { ChainType } from '@lifi/sdk';
|
|
2
|
-
import { useContext, useMemo } from 'react';
|
|
3
|
-
import { EVMExternalContext } from './EVMExternalContext.js';
|
|
4
|
-
import { SVMExternalContext } from './SVMExternalContext.js';
|
|
5
|
-
import { UTXOExternalContext } from './UTXOExternalContext.js';
|
|
6
|
-
export function useHasExternalWalletProvider() {
|
|
7
|
-
const hasExternalEVMContext = useContext(EVMExternalContext);
|
|
8
|
-
const hasExternalSVMContext = useContext(SVMExternalContext);
|
|
9
|
-
const hasExternalUTXOContext = useContext(UTXOExternalContext);
|
|
10
|
-
const providers = useMemo(() => {
|
|
11
|
-
const providers = [];
|
|
12
|
-
if (hasExternalEVMContext) {
|
|
13
|
-
providers.push(ChainType.EVM);
|
|
14
|
-
}
|
|
15
|
-
if (hasExternalSVMContext) {
|
|
16
|
-
providers.push(ChainType.SVM);
|
|
17
|
-
}
|
|
18
|
-
if (hasExternalUTXOContext) {
|
|
19
|
-
providers.push(ChainType.UTXO);
|
|
20
|
-
}
|
|
21
|
-
return providers;
|
|
22
|
-
}, [hasExternalEVMContext, hasExternalSVMContext, hasExternalUTXOContext]);
|
|
23
|
-
return {
|
|
24
|
-
hasExternalProvider: hasExternalEVMContext || hasExternalSVMContext || hasExternalUTXOContext,
|
|
25
|
-
availableChainTypes: providers,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=useHasExternalWalletProvider.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useHasExternalWalletProvider.js","sourceRoot":"","sources":["../../../../src/providers/WalletProvider/useHasExternalWalletProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAO9D,MAAM,UAAU,4BAA4B;IAC1C,MAAM,qBAAqB,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAA;IAC5D,MAAM,qBAAqB,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAA;IAC5D,MAAM,sBAAsB,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAA;IAE9D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE;QAC7B,MAAM,SAAS,GAAgB,EAAE,CAAA;QACjC,IAAI,qBAAqB,EAAE,CAAC;YAC1B,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAC/B,CAAC;QACD,IAAI,qBAAqB,EAAE,CAAC;YAC1B,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAC/B,CAAC;QACD,IAAI,sBAAsB,EAAE,CAAC;YAC3B,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC,EAAE,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,sBAAsB,CAAC,CAAC,CAAA;IAE1E,OAAO;QACL,mBAAmB,EACjB,qBAAqB,IAAI,qBAAqB,IAAI,sBAAsB;QAC1E,mBAAmB,EAAE,SAAS;KAC/B,CAAA;AACH,CAAC"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { ChainType } from '@lifi/sdk'
|
|
2
|
-
import { useContext, useMemo } from 'react'
|
|
3
|
-
import { EVMExternalContext } from './EVMExternalContext.js'
|
|
4
|
-
import { SVMExternalContext } from './SVMExternalContext.js'
|
|
5
|
-
import { UTXOExternalContext } from './UTXOExternalContext.js'
|
|
6
|
-
|
|
7
|
-
interface ExternalWalletProvider {
|
|
8
|
-
hasExternalProvider: boolean
|
|
9
|
-
availableChainTypes: ChainType[]
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export function useHasExternalWalletProvider(): ExternalWalletProvider {
|
|
13
|
-
const hasExternalEVMContext = useContext(EVMExternalContext)
|
|
14
|
-
const hasExternalSVMContext = useContext(SVMExternalContext)
|
|
15
|
-
const hasExternalUTXOContext = useContext(UTXOExternalContext)
|
|
16
|
-
|
|
17
|
-
const providers = useMemo(() => {
|
|
18
|
-
const providers: ChainType[] = []
|
|
19
|
-
if (hasExternalEVMContext) {
|
|
20
|
-
providers.push(ChainType.EVM)
|
|
21
|
-
}
|
|
22
|
-
if (hasExternalSVMContext) {
|
|
23
|
-
providers.push(ChainType.SVM)
|
|
24
|
-
}
|
|
25
|
-
if (hasExternalUTXOContext) {
|
|
26
|
-
providers.push(ChainType.UTXO)
|
|
27
|
-
}
|
|
28
|
-
return providers
|
|
29
|
-
}, [hasExternalEVMContext, hasExternalSVMContext, hasExternalUTXOContext])
|
|
30
|
-
|
|
31
|
-
return {
|
|
32
|
-
hasExternalProvider:
|
|
33
|
-
hasExternalEVMContext || hasExternalSVMContext || hasExternalUTXOContext,
|
|
34
|
-
availableChainTypes: providers,
|
|
35
|
-
}
|
|
36
|
-
}
|