1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-07-01 06:11:43 +02:00
market/src/components/Asset/index.tsx

35 lines
1.0 KiB
TypeScript
Raw Normal View History

2020-07-21 14:04:32 +02:00
import React, { useState, useEffect, ReactElement } from 'react'
2021-10-13 18:48:59 +02:00
import Page from '@shared/Page'
import Alert from '@shared/atoms/Alert'
import Loader from '@shared/atoms/Loader'
import { useAsset } from '@context/Asset'
import AssetContent from './AssetContent'
2020-07-21 14:04:32 +02:00
2021-10-13 18:48:59 +02:00
export default function AssetDetails({ uri }: { uri: string }): ReactElement {
const { ddo, title, error, isInPurgatory, loading } = useAsset()
const [pageTitle, setPageTitle] = useState<string>()
2020-07-21 14:04:32 +02:00
useEffect(() => {
if (!ddo || error) {
setPageTitle('Could not retrieve asset')
return
2020-07-21 14:04:32 +02:00
}
setPageTitle(isInPurgatory ? '' : title)
}, [ddo, error, isInPurgatory, title])
2020-07-21 14:04:32 +02:00
return ddo && pageTitle !== undefined && !loading ? (
2021-05-28 14:47:47 +02:00
<Page title={pageTitle} uri={uri}>
<AssetContent ddo={ddo} />
2021-05-28 14:47:47 +02:00
</Page>
2020-07-21 14:04:32 +02:00
) : error ? (
<Page title={pageTitle} noPageHeader uri={uri}>
<Alert title={pageTitle} text={error} state="error" />
</Page>
2020-07-21 14:04:32 +02:00
) : (
<Page title={undefined} uri={uri}>
2020-07-21 14:04:32 +02:00
<Loader />
</Page>
2020-07-21 14:04:32 +02:00
)
}