const useOwnedTokensMetadata = (chain) => {
const {data: accounts} = useQuery({
querykey: ['accounts', chain],
queryFn: () => fetchAccounts(chain),
})
const {data: ownedTokens} = useQuery({
queryKey: ['ownedTokens', accounts, chain],
queryFn: accounts ? () => fetchOwnedTokens(accounts, chain) : skipToken,
})
const {data: ownedNfts} = useQuery({
queryKey: ['ownedNfts', accounts, chain],
queryFn: accounts && shouldFetchNfts(chain) ? () => fetchOwnedNfts(accounts, chain) : skipToken,
})
const {data: ownedTokensMetadata} = useQuery({
queryKey: ['tokensMetadata', ownedTokens, ownedNfts, chain],
queryFn: ownedTokens && (ownedNfts || !shouldFetchNfts(chain))
? () => fetchMetadataFor(ownedTokens, ownedNfts, chain),
: skipToken,
})
return {data: ownedTokensMetadata}
}
const useAllOwnedTokensMetadata = (chains) => {
return useQueries({
queries: chains.map(
// What to do? Can't map them onto hooks.
(chain) => useOwnedTokensMetadata(chain)
),
combine: useCallback(...),
})
}
const useOwnedTokensMetadata = (chain) => {
const {data: accounts} = useQuery({
querykey: ['accounts', chain],
queryFn: () => fetchAccounts(chain),
})
const {data: ownedTokens} = useQuery({
queryKey: ['ownedTokens', accounts, chain],
queryFn: accounts ? () => fetchOwnedTokens(accounts, chain) : skipToken,
})
const {data: ownedNfts} = useQuery({
queryKey: ['ownedNfts', accounts, chain],
queryFn: accounts && shouldFetchNfts(chain) ? () => fetchOwnedNfts(accounts, chain) : skipToken,
})
const {data: ownedTokensMetadata} = useQuery({
queryKey: ['tokensMetadata', ownedTokens, ownedNfts, chain],
queryFn: ownedTokens && (ownedNfts || !shouldFetchNfts(chain))
? () => fetchMetadataFor(ownedTokens, ownedNfts, chain),
: skipToken,
})
return {data: ownedTokensMetadata}
}
const useAllOwnedTokensMetadata = (chains) => {
return useQueries({
queries: chains.map(
// What to do? Can't map them onto hooks.
(chain) => useOwnedTokensMetadata(chain)
),
combine: useCallback(...),
})
}