mirror of
https://github.com/oceanprotocol/market.git
synced 2024-12-02 05:57:29 +01:00
* wagmi + ethers + web3modal setup * refactor wallet components * fallback providers, more config * kick out useWeb3 * remove all useWeb3 imports * more web3.js usage removal * isAddress utils replacement * restore add token / add network * less accountId changes * web3 legacy tinkering, utils/web3 → utils/wallet * legacy web3 object for ocean.js * graph sync fix, remove custom network switching code * package updates, merge fixes * downgrade to ethers v5 * fix project id * switch to ConnectKit * connectkit theming * add existing chains to wagmi * rewrite getPaymentCollector() * kick out getPaymentCollector completely, use wagmi hooks instead * Revert "kick out getPaymentCollector completely, use wagmi hooks instead" This reverts commit 54c7d1ef1a2dec0b1575a685125ba78336b30f59. * switch getPaymentCollector * calcBaseInGivenDatatokensOut reorg * wip integrate ocean lib 3.0.0 * update orbis components to use wagmi instead of web hooks * more oceanjs integration updates * more refactors * fix build * update ocean lib * fix publish * fix order fixed rate * remove logs * debug and stop infinite cycle orbis connect * fix orbis dm connection * mock use network and fix some more tests * mock wagmi switch network * mock wagmi useProvider createClient and connectKit getDefaultClient * fix jest tests * try storybook fix * cleanups and bump ocean lib * fix order * bump lib to next.5 and add more modal style * bump ocean.js lib to 3.0.0 --------- Co-authored-by: Matthias Kretschmann <m@kretschmann.io>
94 lines
2.8 KiB
TypeScript
94 lines
2.8 KiB
TypeScript
import React, { ReactElement, useEffect, useState } from 'react'
|
|
import { AssetWithOwnAllocation, getOwnAllocations } from '@utils/veAllocation'
|
|
import styles from './index.module.css'
|
|
import {
|
|
getFilterTerm,
|
|
generateBaseQuery,
|
|
queryMetadata
|
|
} from '@utils/aquarius'
|
|
import { useUserPreferences } from '@context/UserPreferences'
|
|
import { useCancelToken } from '@hooks/useCancelToken'
|
|
import { useIsMounted } from '@hooks/useIsMounted'
|
|
import { LoggerInstance } from '@oceanprotocol/lib'
|
|
import AssetListTable from './AssetListTable'
|
|
import { useAccount } from 'wagmi'
|
|
|
|
export default function Allocations(): ReactElement {
|
|
const { address: accountId } = useAccount()
|
|
const { chainIds } = useUserPreferences()
|
|
const isMounted = useIsMounted()
|
|
const newCancelToken = useCancelToken()
|
|
|
|
const [loading, setLoading] = useState<boolean>()
|
|
const [data, setData] = useState<AssetWithOwnAllocation[]>()
|
|
const [hasAllocations, setHasAllocations] = useState(false)
|
|
|
|
useEffect(() => {
|
|
if (!accountId) return
|
|
|
|
async function checkAllocations() {
|
|
try {
|
|
const allocations = await getOwnAllocations(chainIds, accountId)
|
|
setHasAllocations(allocations && allocations.length > 0)
|
|
} catch (error) {
|
|
LoggerInstance.error(error.message)
|
|
}
|
|
}
|
|
checkAllocations()
|
|
}, [accountId, chainIds])
|
|
|
|
useEffect(() => {
|
|
async function getAllocationAssets() {
|
|
if (!hasAllocations) return
|
|
|
|
try {
|
|
setLoading(true)
|
|
|
|
const allocations = await getOwnAllocations(chainIds, accountId)
|
|
setHasAllocations(allocations && allocations.length > 0)
|
|
|
|
const baseParams = {
|
|
chainIds,
|
|
filters: [
|
|
getFilterTerm(
|
|
'nftAddress',
|
|
allocations.map((x) => x.nftAddress)
|
|
)
|
|
],
|
|
ignorePurgatory: true
|
|
} as BaseQueryParams
|
|
|
|
const query = generateBaseQuery(baseParams)
|
|
|
|
const result = await queryMetadata(query, newCancelToken())
|
|
|
|
const assetsWithAllocation: AssetWithOwnAllocation[] = []
|
|
|
|
result?.results.forEach((asset) => {
|
|
const allocation = allocations.find(
|
|
(x) => x.nftAddress.toLowerCase() === asset.nftAddress.toLowerCase()
|
|
)
|
|
assetsWithAllocation.push({
|
|
asset,
|
|
allocation: `${allocation.allocation} %`
|
|
})
|
|
})
|
|
|
|
if (!isMounted()) return
|
|
setData(assetsWithAllocation)
|
|
setLoading(false)
|
|
} catch (error) {
|
|
LoggerInstance.error(error.message)
|
|
}
|
|
}
|
|
getAllocationAssets()
|
|
}, [hasAllocations, accountId, chainIds, isMounted, newCancelToken])
|
|
|
|
return (
|
|
<section className={styles.section}>
|
|
<h3>Your Allocated Assets</h3>
|
|
<AssetListTable data={data} isLoading={loading} />
|
|
</section>
|
|
)
|
|
}
|