import React, { Component } from 'react' import { DDO, MetaData, Logger } from '@oceanprotocol/squid' import Route from '../Route' import Spinner from '../../atoms/Spinner' import { User } from '../../../context' import AssetDetails from './AssetDetails' import stylesApp from '../../../App.module.scss' import Content from '../../atoms/Content' import CategoryImage from '../../atoms/CategoryImage' import styles from './index.module.scss' import withTracker from '../../../hoc/withTracker' import Web3message from '../../organisms/Web3message' interface AssetProps { match: { params: { did: string } } } interface AssetState { ocean: any ddo: DDO metadata: MetaData error: string isLoading: boolean } class Asset extends Component { public static contextType = User public state = { ocean: undefined, ddo: ({} as any) as DDO, metadata: ({ main: { name: '' } } as any) as MetaData, computeMetadata: undefined, error: '', isLoading: true } public async componentDidMount() { this.getData() } private async getData() { try { const { ocean } = this.context const ddo = await ocean.assets.resolve(this.props.match.params.did) const { attributes } = ddo.findServiceByType('metadata') this.setState({ ocean, ddo, metadata: attributes, isLoading: false }) } catch (error) { Logger.error(error.message) this.setState({ error: `We encountered an error: ${error.message}.` }) } } public render() { const { metadata, ddo, error, isLoading, ocean } = this.state const { main, additionalInformation } = metadata const hasError = error !== '' return isLoading && !hasError ? (
) : hasError ? (
{error}
) : ( ) } > ) } } export default withTracker(Asset)