* upgrade to next 13 * WIP: adjust to app dir * add docker + wallet connector * fix: update the wallet connect component * tidy: format * wip: make the wallet balance fetcher work * fix balance retrieval * MP-2258: added estimateFee hook (#94) * Mp 2259 queries to api (#96) * update next config for build errors * Convert queries to API + remove config * tidy: save some bytes by adding constants/env.ts * tidy: added URL_ prefix to REST, RPC and GQL --------- Co-authored-by: Linkie Link <linkielink.dev@gmail.com> * MP-2261: created useBroadcast hook for transactions (#95) * tidy: remove unneeded wallet images * Mp 2264 convert store (#97) * Merge stores into 1 * refactor codebase to use new store * fiex build and rename whitelisted to marketassets * tidy: import refactor * updated account navigation basics * feat: added loading component and fixed the disconnect button * fix: format * update new routing system * update config and dependencies * feat: create and delete credit account are restored * tidy: format * fix: fixed the deployment * update route structure (#98) * fix: creditAccountDeposit works again * fix: bugfixes * add apis, remove allowedCoins, get basic borrow tables (#99) Co-authored-by: bwvdhelm <34470358+bobthebuidlr@users.noreply.github.com> --------- Co-authored-by: bwvdhelm <34470358+bobthebuidlr@users.noreply.github.com>
54 lines
1.3 KiB
TypeScript
54 lines
1.3 KiB
TypeScript
'use client'
|
|
|
|
import { useQuery } from '@tanstack/react-query'
|
|
import { useMemo } from 'react'
|
|
|
|
import { ADDRESS_ACCOUNT_NFT } from 'constants/env'
|
|
import useStore from 'store'
|
|
import { queryKeys } from 'types/query-keys-factory'
|
|
|
|
type Result = {
|
|
tokens: string[]
|
|
}
|
|
|
|
export const useCreditAccounts = () => {
|
|
const address = useStore((s) => s.address)
|
|
const client = useStore((s) => s.signingClient)
|
|
const selectedAccount = useStore((s) => s.selectedAccount)
|
|
const accountNftAddress = ADDRESS_ACCOUNT_NFT
|
|
const setSelectedAccount = (account: string) => {
|
|
useStore.setState({ selectedAccount: account })
|
|
}
|
|
|
|
const queryMsg = useMemo(() => {
|
|
return {
|
|
tokens: {
|
|
owner: address,
|
|
},
|
|
}
|
|
}, [address])
|
|
|
|
const result = useQuery<Result>(
|
|
queryKeys.creditAccounts(address ?? ''),
|
|
async () => client?.queryContractSmart(accountNftAddress || '', queryMsg),
|
|
{
|
|
staleTime: Infinity,
|
|
enabled: !!address && !!client,
|
|
onSuccess: (data) => {
|
|
if (!data.tokens.includes(selectedAccount || '') && data.tokens.length > 0) {
|
|
setSelectedAccount(data.tokens[0])
|
|
}
|
|
},
|
|
},
|
|
)
|
|
|
|
return {
|
|
...result,
|
|
data: useMemo(() => {
|
|
if (!address) return []
|
|
|
|
return result?.data && result.data.tokens
|
|
}, [address, result?.data]),
|
|
}
|
|
}
|