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 {
|
2021-06-14 14:37:03 +02:00
|
|
|
const { ddo, title, error, isInPurgatory, loading } = useAsset()
|
2020-12-10 14:30:40 +01:00
|
|
|
const [pageTitle, setPageTitle] = useState<string>()
|
2020-07-21 14:04:32 +02:00
|
|
|
|
|
|
|
useEffect(() => {
|
2020-11-20 14:31:28 +01:00
|
|
|
if (!ddo || error) {
|
2020-12-10 14:30:40 +01:00
|
|
|
setPageTitle('Could not retrieve asset')
|
2020-11-20 14:31:28 +01:00
|
|
|
return
|
2020-07-21 14:04:32 +02:00
|
|
|
}
|
2020-10-21 16:43:23 +02:00
|
|
|
|
2020-12-10 14:30:40 +01:00
|
|
|
setPageTitle(isInPurgatory ? '' : title)
|
|
|
|
}, [ddo, error, isInPurgatory, title])
|
2020-07-21 14:04:32 +02:00
|
|
|
|
2021-06-14 14:37:03 +02:00
|
|
|
return ddo && pageTitle !== undefined && !loading ? (
|
2021-05-28 14:47:47 +02:00
|
|
|
<Page title={pageTitle} uri={uri}>
|
2021-11-01 19:04:18 +01:00
|
|
|
<AssetContent ddo={ddo} />
|
2021-05-28 14:47:47 +02:00
|
|
|
</Page>
|
2020-07-21 14:04:32 +02:00
|
|
|
) : error ? (
|
2020-12-10 14:30:40 +01:00
|
|
|
<Page title={pageTitle} noPageHeader uri={uri}>
|
|
|
|
<Alert title={pageTitle} text={error} state="error" />
|
2020-11-18 20:01:33 +01:00
|
|
|
</Page>
|
2020-07-21 14:04:32 +02:00
|
|
|
) : (
|
2020-11-18 20:01:33 +01:00
|
|
|
<Page title={undefined} uri={uri}>
|
2020-07-21 14:04:32 +02:00
|
|
|
<Loader />
|
2020-11-18 20:01:33 +01:00
|
|
|
</Page>
|
2020-07-21 14:04:32 +02:00
|
|
|
)
|
|
|
|
}
|