commons/client/src/routes/Details/index.tsx

60 lines
1.5 KiB
TypeScript
Raw Normal View History

2019-01-23 14:43:41 +01:00
import React, { Component } from 'react'
2019-04-30 19:19:28 +02:00
import { DDO, MetaData, Logger } from '@oceanprotocol/squid'
2019-02-14 13:33:21 +01:00
import Route from '../../components/templates/Route'
2019-02-15 13:10:57 +01:00
import Spinner from '../../components/atoms/Spinner'
import { User } from '../../context'
2019-02-14 13:33:21 +01:00
import AssetDetails from './AssetDetails'
2019-02-15 13:36:18 +01:00
import stylesApp from '../../App.module.scss'
2019-01-25 15:34:57 +01:00
2019-04-03 12:51:20 +02:00
interface DetailsProps {
location: Location
2019-04-30 19:19:28 +02:00
match: {
params: {
did: string
}
}
2019-04-03 12:51:20 +02:00
}
2019-02-05 17:05:28 +01:00
interface DetailsState {
2019-04-30 19:19:28 +02:00
ddo: DDO
metadata: MetaData
2019-01-25 15:34:57 +01:00
}
2019-02-05 17:29:01 +01:00
export default class Details extends Component<DetailsProps, DetailsState> {
2019-04-30 19:19:28 +02:00
public state = {
ddo: ({} as any) as DDO,
metadata: ({ base: { name: '' } } as any) as MetaData
}
2019-01-25 15:34:57 +01:00
public async componentDidMount() {
2019-04-30 19:19:28 +02:00
this.getData()
}
private async getData() {
try {
const { ocean } = this.context
const ddo = await ocean.assets.resolve(this.props.match.params.did)
const { metadata } = ddo.findServiceByType('Metadata')
this.setState({ ddo, metadata })
} catch (error) {
Logger.error(error.message)
}
2019-01-25 15:34:57 +01:00
}
2019-01-23 12:15:16 +01:00
2019-02-05 17:29:01 +01:00
public render() {
2019-02-14 13:33:21 +01:00
const { metadata, ddo } = this.state
2019-04-15 13:13:02 +02:00
return metadata.base.name !== '' ? (
<Route title={metadata.base.name}>
<AssetDetails metadata={metadata} ddo={ddo} />
2019-02-08 14:22:40 +01:00
</Route>
2019-04-15 13:13:02 +02:00
) : (
<div className={stylesApp.loader}>
<Spinner message={'Loading asset...'} />
</div>
2019-01-23 14:43:41 +01:00
)
}
2019-01-23 12:15:16 +01:00
}
Details.contextType = User