mirror of
https://github.com/oceanprotocol/market.git
synced 2024-12-02 05:57:29 +01:00
Replace profile sold statistic value number with subgraph value (#926)
* replace sold number with subgraph value * remove unused function
This commit is contained in:
parent
2961c5e631
commit
e993114f51
@ -4,8 +4,8 @@ import { ReactElement } from 'react-markdown'
|
|||||||
import { useUserPreferences } from '../../../../providers/UserPreferences'
|
import { useUserPreferences } from '../../../../providers/UserPreferences'
|
||||||
import {
|
import {
|
||||||
getAccountLiquidityInOwnAssets,
|
getAccountLiquidityInOwnAssets,
|
||||||
getAccountNumberOfOrders,
|
|
||||||
getAssetsBestPrices,
|
getAssetsBestPrices,
|
||||||
|
getUserSales,
|
||||||
UserLiquidity,
|
UserLiquidity,
|
||||||
calculateUserLiquidity
|
calculateUserLiquidity
|
||||||
} from '../../../../utils/subgraph'
|
} from '../../../../utils/subgraph'
|
||||||
@ -34,32 +34,17 @@ export default function Stats({
|
|||||||
accountId: string
|
accountId: string
|
||||||
}): ReactElement {
|
}): ReactElement {
|
||||||
const { chainIds } = useUserPreferences()
|
const { chainIds } = useUserPreferences()
|
||||||
const { poolShares, assets, assetsTotal, downloadsTotal } = useProfile()
|
const { poolShares, assets, assetsTotal, sales } = useProfile()
|
||||||
|
|
||||||
const [sold, setSold] = useState(0)
|
|
||||||
const [publisherLiquidity, setPublisherLiquidity] = useState<UserLiquidity>()
|
const [publisherLiquidity, setPublisherLiquidity] = useState<UserLiquidity>()
|
||||||
const [totalLiquidity, setTotalLiquidity] = useState(0)
|
const [totalLiquidity, setTotalLiquidity] = useState(0)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!accountId) {
|
if (!accountId || chainIds.length === 0) {
|
||||||
setSold(0)
|
|
||||||
setPublisherLiquidity({ price: '0', oceanBalance: '0' })
|
setPublisherLiquidity({ price: '0', oceanBalance: '0' })
|
||||||
setTotalLiquidity(0)
|
setTotalLiquidity(0)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
}, [accountId, chainIds])
|
||||||
async function getSales() {
|
|
||||||
if (!assets) return
|
|
||||||
|
|
||||||
try {
|
|
||||||
const nrOrders = await getAccountNumberOfOrders(assets, chainIds)
|
|
||||||
setSold(nrOrders)
|
|
||||||
} catch (error) {
|
|
||||||
Logger.error(error.message)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
getSales()
|
|
||||||
}, [accountId, assets])
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!assets || !accountId || !chainIds) return
|
if (!assets || !accountId || !chainIds) return
|
||||||
@ -84,7 +69,7 @@ export default function Stats({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
getPublisherLiquidity()
|
getPublisherLiquidity()
|
||||||
}, [assets, accountId])
|
}, [assets, accountId, chainIds])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!poolShares) return
|
if (!poolShares) return
|
||||||
@ -112,7 +97,7 @@ export default function Stats({
|
|||||||
label="Total Liquidity"
|
label="Total Liquidity"
|
||||||
value={<Conversion price={`${totalLiquidity}`} hideApproximateSymbol />}
|
value={<Conversion price={`${totalLiquidity}`} hideApproximateSymbol />}
|
||||||
/>
|
/>
|
||||||
<NumberUnit label={`Sale${sold === 1 ? '' : 's'}`} value={sold} />
|
<NumberUnit label={`Sale${sales === 1 ? '' : 's'}`} value={sales} />
|
||||||
<NumberUnit label="Published" value={assetsTotal} />
|
<NumberUnit label="Published" value={assetsTotal} />
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
@ -7,7 +7,11 @@ import React, {
|
|||||||
useCallback,
|
useCallback,
|
||||||
ReactNode
|
ReactNode
|
||||||
} from 'react'
|
} from 'react'
|
||||||
import { getPoolSharesData, getUserTokenOrders } from '../utils/subgraph'
|
import {
|
||||||
|
getPoolSharesData,
|
||||||
|
getUserSales,
|
||||||
|
getUserTokenOrders
|
||||||
|
} from '../utils/subgraph'
|
||||||
import { useUserPreferences } from './UserPreferences'
|
import { useUserPreferences } from './UserPreferences'
|
||||||
import { PoolShares_poolShares as PoolShare } from '../@types/apollo/PoolShares'
|
import { PoolShares_poolShares as PoolShare } from '../@types/apollo/PoolShares'
|
||||||
import { DDO, Logger } from '@oceanprotocol/lib'
|
import { DDO, Logger } from '@oceanprotocol/lib'
|
||||||
@ -34,6 +38,7 @@ interface ProfileProviderValue {
|
|||||||
downloads: DownloadedAsset[]
|
downloads: DownloadedAsset[]
|
||||||
downloadsTotal: number
|
downloadsTotal: number
|
||||||
isDownloadsLoading: boolean
|
isDownloadsLoading: boolean
|
||||||
|
sales: number
|
||||||
}
|
}
|
||||||
|
|
||||||
const ProfileContext = createContext({} as ProfileProviderValue)
|
const ProfileContext = createContext({} as ProfileProviderValue)
|
||||||
@ -273,6 +278,27 @@ function ProfileProvider({
|
|||||||
}
|
}
|
||||||
}, [fetchDownloads, appConfig.metadataCacheUri, downloadsInterval])
|
}, [fetchDownloads, appConfig.metadataCacheUri, downloadsInterval])
|
||||||
|
|
||||||
|
//
|
||||||
|
// SALES NUMBER
|
||||||
|
//
|
||||||
|
const [sales, setSales] = useState(0)
|
||||||
|
useEffect(() => {
|
||||||
|
if (!accountId || chainIds.length === 0) {
|
||||||
|
setSales(0)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
async function getUserSalesNumber() {
|
||||||
|
try {
|
||||||
|
const result = await getUserSales(accountId, chainIds)
|
||||||
|
setSales(result)
|
||||||
|
Logger.log(`[profile] Fetched sales number: ${result}.`, result)
|
||||||
|
} catch (error) {
|
||||||
|
Logger.error(error.message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getUserSalesNumber()
|
||||||
|
}, [accountId, chainIds])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ProfileContext.Provider
|
<ProfileContext.Provider
|
||||||
value={{
|
value={{
|
||||||
@ -284,7 +310,8 @@ function ProfileProvider({
|
|||||||
isEthAddress,
|
isEthAddress,
|
||||||
downloads,
|
downloads,
|
||||||
downloadsTotal,
|
downloadsTotal,
|
||||||
isDownloadsLoading
|
isDownloadsLoading,
|
||||||
|
sales
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
|
@ -252,6 +252,14 @@ const UserTokenOrders = gql`
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
const UserSalesQuery = gql`
|
||||||
|
query UserSalesQuery($userSalesId: String) {
|
||||||
|
users(where: { id: $userSalesId }) {
|
||||||
|
id
|
||||||
|
nrSales
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
||||||
export function getSubgraphUri(chainId: number): string {
|
export function getSubgraphUri(chainId: number): string {
|
||||||
const config = getOceanConfig(chainId)
|
const config = getOceanConfig(chainId)
|
||||||
@ -613,29 +621,6 @@ export async function getHighestLiquidityDIDs(
|
|||||||
return [searchDids, didList.length]
|
return [searchDids, didList.length]
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getAccountNumberOfOrders(
|
|
||||||
assets: DDO[],
|
|
||||||
chainIds: number[]
|
|
||||||
): Promise<number> {
|
|
||||||
const datatokens: string[] = []
|
|
||||||
assets.forEach((ddo) => {
|
|
||||||
datatokens.push(ddo?.dataToken?.toLowerCase())
|
|
||||||
})
|
|
||||||
const queryVariables = {
|
|
||||||
datatokenId_in: datatokens
|
|
||||||
}
|
|
||||||
const results = await fetchDataForMultipleChains(
|
|
||||||
TotalAccountOrders,
|
|
||||||
queryVariables,
|
|
||||||
chainIds
|
|
||||||
)
|
|
||||||
let numberOfOrders = 0
|
|
||||||
for (const result of results) {
|
|
||||||
numberOfOrders += result?.tokenOrders?.length
|
|
||||||
}
|
|
||||||
return numberOfOrders
|
|
||||||
}
|
|
||||||
|
|
||||||
export function calculateUserLiquidity(poolShare: PoolShare): number {
|
export function calculateUserLiquidity(poolShare: PoolShare): number {
|
||||||
const ocean =
|
const ocean =
|
||||||
(poolShare.balance / poolShare.poolId.totalShares) *
|
(poolShare.balance / poolShare.poolId.totalShares) *
|
||||||
@ -722,3 +707,26 @@ export async function getUserTokenOrders(
|
|||||||
Logger.error(error.message)
|
Logger.error(error.message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function getUserSales(
|
||||||
|
accountId: string,
|
||||||
|
chainIds: number[]
|
||||||
|
): Promise<number> {
|
||||||
|
const variables = { userSalesId: accountId?.toLowerCase() }
|
||||||
|
try {
|
||||||
|
const userSales = await fetchDataForMultipleChains(
|
||||||
|
UserSalesQuery,
|
||||||
|
variables,
|
||||||
|
chainIds
|
||||||
|
)
|
||||||
|
let salesSum = 0
|
||||||
|
for (let i = 0; i < userSales.length; i++) {
|
||||||
|
if (userSales[i].users.length > 0) {
|
||||||
|
salesSum += userSales[i].users[0].nrSales
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return salesSum
|
||||||
|
} catch (error) {
|
||||||
|
Logger.log(error.message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user