mirror of
https://github.com/cerc-io/mars-interface.git
synced 2025-07-02 07:35:19 +00:00
51 lines
1.8 KiB
TypeScript
51 lines
1.8 KiB
TypeScript
import { useVaultParams } from 'hooks/queries/useVaultParams'
|
|
import { ReactNode, useEffect } from 'react'
|
|
import useStore from 'store'
|
|
import { AccountNftClient, CreditManagerClient } from 'types/classes'
|
|
|
|
interface FieldsContainerProps {
|
|
children: ReactNode
|
|
}
|
|
|
|
export const FieldsContainer = ({ children }: FieldsContainerProps) => {
|
|
const { data: vaultParams } = useVaultParams()
|
|
const client = useStore((s) => s.client)
|
|
const currentNetwork = useStore((s) => s.currentNetwork)
|
|
const networkConfig = useStore((s) => s.networkConfig)
|
|
const userWalletAddress = useStore((s) => s.userWalletAddress)
|
|
const getVaults = useStore((s) => s.getVaults)
|
|
const setCreditManagerMsgComposer = useStore((s) => s.setCreditManagerMsgComposer)
|
|
|
|
const creditManagerAddress = networkConfig.contracts.creditManager
|
|
const accountNftContractAddress = networkConfig.contracts.accountNft
|
|
|
|
useEffect(() => {
|
|
if (!networkConfig.isFieldsEnabled || !creditManagerAddress || !accountNftContractAddress)
|
|
return
|
|
|
|
if (!client || client.connectedWallet.network.chainId !== currentNetwork) return
|
|
useStore.setState({
|
|
creditManagerClient: new CreditManagerClient(creditManagerAddress, client),
|
|
accountNftClient: new AccountNftClient(accountNftContractAddress, client),
|
|
apys: null,
|
|
})
|
|
|
|
getVaults({ refetch: true })
|
|
}, [
|
|
client,
|
|
networkConfig,
|
|
accountNftContractAddress,
|
|
creditManagerAddress,
|
|
currentNetwork,
|
|
getVaults,
|
|
vaultParams,
|
|
])
|
|
|
|
useEffect(() => {
|
|
if (!userWalletAddress || !networkConfig.contracts.creditManager) return
|
|
setCreditManagerMsgComposer(userWalletAddress, networkConfig.contracts.creditManager)
|
|
}, [userWalletAddress, networkConfig.contracts.creditManager, setCreditManagerMsgComposer])
|
|
|
|
return <>{children}</>
|
|
}
|