5007acb515
* osmosis initial setup and nft contract queries/mutations * display errors on ui * fix: create credit account queryMsg and contract * client initialization. loading indicator when pending io * added tx feedback on toast * remove unused wallet store code * fetch credit accounts moved to external hook * navigation copy * file name typo * remove console logs and unused imports * fix: credit accounts query msg * credit manager store. create credit account hook created * delete credit account hook. fees declaration moved to utils * update selected account when a new one is created * type inference for mutation hooks * loading indicator for async actions. onSuccess toast * credit accounts popover * minor improvements credit account slice * credit manager module state and respective markup * fix: credit account list threshold * credit manager component. currency formatter function update * update contract addresses * borrow screen initial setup * error handling mutation queries * update credit account list when address changes * update credit accounts query key to include address * update selected account when nothing is selected * credit manager wip. deposit and listing positions on credit account * FundAccount component moved to different file * removed unused code * lending assets switch * minor refactor injective balance hook to be more generic * style: font size minor adjustments * borrow action initial. display liabilities and borrow positions on credit manager * positions amount formatting * preserve selected account on local storage * prettier custom settings and respective files formatting * credit manager container moved to external file * removed threshold variable. nav elements moved to array declaration * Navigation component naming and minor cleanup * react query keys enum * query keys improvements * initial generated smart contract api type definitions
47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
import { SigningCosmWasmClient } from '@cosmjs/cosmwasm-stargate'
|
|
import { useQuery } from '@tanstack/react-query'
|
|
import { useEffect, useState } from 'react'
|
|
|
|
import useWalletStore from 'stores/useWalletStore'
|
|
import { chain } from 'utils/chains'
|
|
import { contractAddresses } from 'config/contracts'
|
|
import { queryKeys } from 'types/query-keys-factory'
|
|
|
|
type Result = string[]
|
|
|
|
const queryMsg = {
|
|
allowed_coins: {},
|
|
}
|
|
|
|
const useAllowedCoins = () => {
|
|
const [signingClient, setSigningClient] = useState<SigningCosmWasmClient>()
|
|
const address = useWalletStore((state) => state.address)
|
|
|
|
useEffect(() => {
|
|
;(async () => {
|
|
if (!window.keplr) return
|
|
|
|
const offlineSigner = window.keplr.getOfflineSigner(chain.chainId)
|
|
const clientInstance = await SigningCosmWasmClient.connectWithSigner(chain.rpc, offlineSigner)
|
|
|
|
setSigningClient(clientInstance)
|
|
})()
|
|
}, [address])
|
|
|
|
const result = useQuery<Result>(
|
|
queryKeys.allowedCoins(),
|
|
async () => signingClient?.queryContractSmart(contractAddresses.creditManager, queryMsg),
|
|
{
|
|
enabled: !!address && !!signingClient,
|
|
staleTime: Infinity,
|
|
}
|
|
)
|
|
|
|
return {
|
|
...result,
|
|
data: result?.data,
|
|
}
|
|
}
|
|
|
|
export default useAllowedCoins
|