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'
|
2019-04-15 11:40:25 +02:00
|
|
|
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
|
|
|
}
|
|
|
|
|
2019-02-01 13:01:36 +01:00
|
|
|
Details.contextType = User
|