1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-12-02 05:57:29 +01:00
EnzoVezzaro 5b2bb3045e
added N/A for negative values as well as missing data (#1691)
* added N/A for negative values as well as missing data

* added N/A in teaser for negative orders count

* added N/A to profile and asset teaser

* change typing on Conversion and PriceUnit

* remove log

* removed unnecessary check on price value
2022-09-22 17:17:12 +01:00

65 lines
1.8 KiB
TypeScript

import { LoggerInstance } from '@oceanprotocol/lib'
import React, { useEffect, useState, ReactElement } from 'react'
import { useUserPreferences } from '@context/UserPreferences'
import Conversion from '@shared/Price/Conversion'
import NumberUnit from './NumberUnit'
import styles from './Stats.module.css'
import { useProfile } from '@context/Profile'
import { getAccessDetailsForAssets } from '@utils/accessDetailsAndPricing'
export default function Stats({
accountId
}: {
accountId: string
}): ReactElement {
const { chainIds } = useUserPreferences()
const { assets, assetsTotal, sales } = useProfile()
const [totalSales, setTotalSales] = useState(0)
useEffect(() => {
if (!assets || !accountId || !chainIds) return
async function getPublisherTotalSales() {
try {
const assetsPrices = await getAccessDetailsForAssets(assets)
let count = 0
for (const priceInfo of assetsPrices) {
if (priceInfo?.accessDetails?.price && priceInfo.stats.orders > 0) {
count +=
parseInt(priceInfo.accessDetails.price) * priceInfo.stats.orders
}
}
setTotalSales(count)
} catch (error) {
LoggerInstance.error(error.message)
}
}
getPublisherTotalSales()
}, [assets, accountId, chainIds])
return (
<div className={styles.stats}>
<NumberUnit
label="Total Sales"
value={
totalSales > 0 ? (
<Conversion
price={totalSales}
symbol={'ocean'}
hideApproximateSymbol
/>
) : (
'0'
)
}
/>
<NumberUnit
label={`Sale${sales === 1 ? '' : 's'}`}
value={sales < 0 ? 0 : sales}
/>
<NumberUnit label="Published" value={assetsTotal} />
</div>
)
}