Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/wallet-management/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
"dependencies": {
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
"@lifi/sdk": "4.0.0-alpha.4",
"@lifi/sdk": "^4.0.0-alpha.5",
"@lifi/widget-provider": "workspace:*",
"@mui/icons-material": "^7.3.5",
"@mui/material": "^7.3.6",
Expand Down
2 changes: 1 addition & 1 deletion packages/widget-embedded/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
},
"author": "Eugene Chybisov <eugene@li.finance>",
"dependencies": {
"@lifi/sdk": "4.0.0-alpha.4",
"@lifi/sdk": "^4.0.0-alpha.5",
"@lifi/wallet-management": "workspace:*",
"@lifi/widget": "workspace:*",
"@lifi/widget-provider-bitcoin": "workspace:*",
Expand Down
1 change: 0 additions & 1 deletion packages/widget-playground/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
"@bigmi/react": "^0.6.3",
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
"@lifi/sdk": "4.0.0-alpha.4",
"@lifi/widget": "workspace:*",
"@lifi/widget-provider-bitcoin": "workspace:*",
"@lifi/widget-provider-ethereum": "workspace:*",
Expand Down
1 change: 1 addition & 0 deletions packages/widget-playground/src/defaultWidgetConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ export const widgetBaseConfig: WidgetConfig = {
// },
sdkConfig: {
apiUrl: 'https://li.quest/v1',
chainsRefetchInterval: 1000 * 60 * 5, // 5 minutes
rpcUrls: {
[ChainId.SOL]: ['https://dacey-pp61jd-fast-mainnet.helius-rpc.com/'],
},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { getChainsFromConfig, type SDKBaseConfig } from '@lifi/sdk'
import { useQuery } from '@tanstack/react-query'
import { useWidgetChains, type WidgetConfig } from '@lifi/widget'
import type { FC, PropsWithChildren } from 'react'
import { useConfig } from '../../store/widgetConfig/useConfig.js'
import { ReownWalletProvider } from './ReownWalletProvider.js'
Expand All @@ -8,17 +7,7 @@ import { WidgetWalletConfigUpdater } from './WidgetWalletConfigUpdater.js'
export const WalletProvider: FC<PropsWithChildren> = ({ children }) => {
const { config } = useConfig()

const { data: chains, isLoading } = useQuery({
queryKey: ['chains'] as const,
queryFn: async () => {
return await getChainsFromConfig({
...config?.sdkConfig,
integrator: 'li.fi-playground',
} as SDKBaseConfig)
},
refetchInterval: 300_000,
staleTime: 300_000,
})
const { chains, isLoading } = useWidgetChains(config as WidgetConfig)

if (!chains?.length || isLoading) {
return null
Expand Down
4 changes: 2 additions & 2 deletions packages/widget-provider-bitcoin/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@
"dependencies": {
"@bigmi/client": "^0.6.3",
"@bigmi/core": "^0.6.3",
"@lifi/sdk": "4.0.0-alpha.4",
"@lifi/sdk-provider-bitcoin": "^4.0.0-alpha.4",
"@lifi/sdk": "^4.0.0-alpha.5",
"@lifi/sdk-provider-bitcoin": "^4.0.0-alpha.5",
"@lifi/widget-provider": "workspace:*"
},
"peerDependencies": {
Expand Down
4 changes: 2 additions & 2 deletions packages/widget-provider-ethereum/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@
"lifi"
],
"dependencies": {
"@lifi/sdk": "4.0.0-alpha.4",
"@lifi/sdk-provider-ethereum": "^4.0.0-alpha.4",
"@lifi/sdk": "^4.0.0-alpha.5",
"@lifi/sdk-provider-ethereum": "^4.0.0-alpha.5",
"@lifi/widget-provider": "workspace:*",
"viem": "^2.40.2"
},
Expand Down
4 changes: 2 additions & 2 deletions packages/widget-provider-solana/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@
"lifi"
],
"dependencies": {
"@lifi/sdk": "4.0.0-alpha.4",
"@lifi/sdk-provider-solana": "^4.0.0-alpha.4",
"@lifi/sdk": "^4.0.0-alpha.5",
"@lifi/sdk-provider-solana": "^4.0.0-alpha.5",
"@lifi/widget-provider": "workspace:*",
"@solana/wallet-adapter-base": "^0.9.27",
"@solana/wallet-adapter-coinbase": "^0.1.23",
Expand Down
4 changes: 2 additions & 2 deletions packages/widget-provider-sui/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@
"lifi"
],
"dependencies": {
"@lifi/sdk": "4.0.0-alpha.4",
"@lifi/sdk-provider-sui": "^4.0.0-alpha.4",
"@lifi/sdk": "^4.0.0-alpha.5",
"@lifi/sdk-provider-sui": "^4.0.0-alpha.5",
"@lifi/widget-provider": "workspace:*",
"@mysten/sui": "^1.45.0",
"@mysten/wallet-standard": "^0.19.7"
Expand Down
2 changes: 1 addition & 1 deletion packages/widget-provider/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
"lifi"
],
"dependencies": {
"@lifi/sdk": "4.0.0-alpha.4"
"@lifi/sdk": "^4.0.0-alpha.5"
},
"devDependencies": {
"cpy-cli": "^6.0.0",
Expand Down
2 changes: 1 addition & 1 deletion packages/widget/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
"dependencies": {
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
"@lifi/sdk": "4.0.0-alpha.4",
"@lifi/sdk": "^4.0.0-alpha.5",
"@lifi/wallet-management": "workspace:*",
"@lifi/widget-provider": "workspace:*",
"@mui/icons-material": "^7.3.5",
Expand Down
51 changes: 42 additions & 9 deletions packages/widget/src/hooks/useAvailableChains.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import type { ExtendedChain } from '@lifi/sdk'
import { ChainType, getChains } from '@lifi/sdk'
import { ChainType, createClient, getChains } from '@lifi/sdk'
import { useQuery } from '@tanstack/react-query'
import { useCallback } from 'react'
import { useSDKClient } from '../providers/SDKClientProvider.js'
import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'
import type { WidgetConfig } from '../types/widget.js'
import { getConfigItemSets, isItemAllowedForSets } from '../utils/item.js'
import { getQueryKey } from '../utils/queries.js'

Expand All @@ -19,9 +20,33 @@ const supportedChainTypes = [
ChainType.MVM,
]

export const useAvailableChains = (chainTypes?: ChainType[]) => {
const { chains, keyPrefix } = useWidgetConfig()
const sdkClient = useSDKClient()
export const useAvailableChains = (
chainTypes?: ChainType[],
externalWidgetConfig?: WidgetConfig
) => {
const {
chains: internalChains,
keyPrefix: internalKeyPrefix,
sdkConfig: internalSdkConfig,
} = useWidgetConfig()
const internalClient = useSDKClient()

const externalClient = externalWidgetConfig
? createClient({
...externalWidgetConfig.sdkConfig,
apiKey: externalWidgetConfig.apiKey,
integrator:
externalWidgetConfig.integrator ?? window?.location.hostname,
})
: undefined

// Overwrite widget config if passed as param
const keyPrefix = externalWidgetConfig?.keyPrefix ?? internalKeyPrefix
const chains = externalWidgetConfig?.chains ?? internalChains
const refetchInterval =
externalWidgetConfig?.sdkConfig?.chainsRefetchInterval ??
internalSdkConfig?.chainsRefetchInterval ??
300_000

const { data, isLoading } = useQuery({
queryKey: [
Expand All @@ -41,13 +66,21 @@ export const useAvailableChains = (chainTypes?: ChainType[]) => {
isItemAllowedForSets(chainType, chainsConfigSets)
)

const availableChains = await getChains(sdkClient, {
chainTypes: chainTypes || chainTypesRequest,
})
let availableChains: ExtendedChain[] = []
if (externalClient) {
availableChains = await getChains(externalClient, {
chainTypes: chainTypes || chainTypesRequest,
})
} else {
availableChains = (await internalClient.getChains()).filter((chain) =>
(chainTypes || chainTypesRequest)?.includes(chain.chainType)
)
}

return availableChains
},
refetchInterval: 300_000,
staleTime: 300_000,
refetchInterval,
staleTime: refetchInterval,
})

const getChainById: GetChainById = useCallback(
Expand Down
6 changes: 6 additions & 0 deletions packages/widget/src/hooks/useWidgetChains.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import type { WidgetConfig } from '../types/widget.js'
import { useAvailableChains } from './useAvailableChains.js'

export const useWidgetChains = (widgetConfig: WidgetConfig) => {
return useAvailableChains(undefined, widgetConfig)
}
1 change: 1 addition & 0 deletions packages/widget/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export * from './components/ContractComponent/NFT/types.js'
export * from './components/Skeleton/WidgetSkeleton.js'
export { defaultMaxHeight } from './config/constants.js'
export * from './config/version.js'
export { useWidgetChains } from './hooks/useWidgetChains.js'
export { useWidgetEvents, widgetEvents } from './hooks/useWidgetEvents.js'
export * from './stores/bookmarks/types.js'
export * from './stores/form/types.js'
Expand Down
Loading