1
0
mirror of https://github.com/oceanprotocol/commons.git synced 2023-03-15 18:03:00 +01:00

Merge pull request #128 from oceanprotocol/feature/total-assets

Output total assets
This commit is contained in:
Matthias Kretschmann 2019-05-20 13:30:54 +02:00 committed by GitHub
commit c859ac098e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 96 additions and 1 deletions

View File

@ -57,3 +57,17 @@
}
}
}
.stats {
text-align: center;
margin-bottom: $spacer * $line-height;
font-size: $font-size-small;
p {
margin-bottom: $spacer / 4;
}
p:last-child {
margin-bottom: 0;
}
}

View File

@ -1,4 +1,5 @@
import React from 'react'
import { Market } from '../../context'
import Content from '../atoms/Content'
import styles from './Footer.module.scss'
@ -6,6 +7,22 @@ import meta from '../../data/meta.json'
const Footer = () => (
<footer className={styles.footer}>
<aside className={styles.stats}>
<Content wide>
<p>
Online since March 2019.
<Market.Consumer>
{state =>
state.totalAssets > 0 &&
` With a total of ${
state.totalAssets
} registered assets.`
}
</Market.Consumer>
</p>
</Content>
</aside>
<Content wide>
<small>
&copy; {new Date().getFullYear()}{' '}

View File

@ -0,0 +1,59 @@
import React, { PureComponent } from 'react'
import { Logger, Ocean } from '@oceanprotocol/squid'
import { Market } from '.'
interface MarketProviderProps {
ocean: Ocean
}
interface MarketProviderState {
totalAssets: number
}
export default class MarketProvider extends PureComponent<
MarketProviderProps,
MarketProviderState
> {
public state = {
totalAssets: 0
}
public async componentDidMount() {}
public async componentDidUpdate(prevProps: any) {
// Using ocean prop instead of getting it from context to be able to compare.
// Cause there is no `prevContext`.
if (prevProps.ocean !== this.props.ocean) {
await this.getTotalAssets()
}
}
private getTotalAssets = async () => {
const searchQuery = {
offset: 1,
page: 1,
query: {
price: [-1, 1]
},
sort: {
value: 1
}
}
try {
const { ocean } = this.props
const search = await ocean.aquarius.queryMetadata(searchQuery)
this.setState({ totalAssets: search.totalResults })
} catch (error) {
Logger.error('Error', error.message)
}
}
public render() {
return (
<Market.Provider value={this.state}>
{this.props.children}
</Market.Provider>
)
}
}

View File

@ -4,6 +4,7 @@ import { Logger, Ocean, Account } from '@oceanprotocol/squid'
import { User } from '.'
import { provideOcean, requestFromFaucet, FaucetResponse } from '../ocean'
import { nodeHost, nodePort, nodeScheme } from '../config'
import MarketProvider from './MarketProvider'
const POLL_ACCOUNTS = 1000 // every 1s
const POLL_NETWORK = POLL_ACCOUNTS * 60 // every 1 min
@ -271,7 +272,9 @@ export default class UserProvider extends PureComponent<{}, UserProviderState> {
public render() {
return (
<User.Provider value={this.state}>
{this.props.children}
<MarketProvider ocean={this.state.ocean}>
{this.props.children}
</MarketProvider>
</User.Provider>
)
}

View File

@ -21,3 +21,5 @@ export const User = React.createContext({
},
message: ''
})
export const Market = React.createContext({ totalAssets: 0 })