From 5a4d25ada11a800bc240f1ace53178a131bb39a0 Mon Sep 17 00:00:00 2001 From: Jernej Pregelj Date: Mon, 11 Mar 2019 11:06:08 +0100 Subject: [PATCH] add invoice view --- src/Routes.tsx | 2 ++ src/data/menu.json | 4 ++++ src/routes/Invoices.tsx | 51 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 src/routes/Invoices.tsx diff --git a/src/Routes.tsx b/src/Routes.tsx index 4b82bf3..3881062 100644 --- a/src/Routes.tsx +++ b/src/Routes.tsx @@ -8,6 +8,7 @@ import NotFound from './routes/NotFound' import Publish from './routes/Publish/' import Search from './routes/Search' import Faucet from './routes/Faucet' +import Invoices from './routes/Invoices' import Styleguide from './routes/Styleguide' const Routes = () => ( @@ -19,6 +20,7 @@ const Routes = () => ( + ) diff --git a/src/data/menu.json b/src/data/menu.json index b48c27b..9169df2 100644 --- a/src/data/menu.json +++ b/src/data/menu.json @@ -3,6 +3,10 @@ "title": "Publish", "link": "/publish" }, + { + "title": "Invoices", + "link": "/invoices" + }, { "title": "Faucet", "link": "/faucet" diff --git a/src/routes/Invoices.tsx b/src/routes/Invoices.tsx new file mode 100644 index 0000000..5e48617 --- /dev/null +++ b/src/routes/Invoices.tsx @@ -0,0 +1,51 @@ +import React, { Component } from 'react' +import Route from '../components/templates/Route' +import { User } from '../context/User' +import Asset from '../components/molecules/Asset' +import styles from './Search.module.scss' + +interface InvoicesState { + results: any[] +} + +export default class Invoices extends Component<{}, InvoicesState> { + public state = { results: [] } + + public async componentDidMount() { + /* + TODO: + - squid-js with exposed contracts + - request user to sign (unlock account) to get public key? retrieve it form previous signatures? + - subscribe to the `AccessSecretStoreCondition.Fulfill` event filtering by `_grantee` : https://github.com/oceanprotocol/keeper-contracts/blob/release/v0.8/contracts/conditions/AccessSecretStoreCondition.sol#L13 + AccessSecretStoreCondition.Fulfill({_grantee: 'public key'}, { fromBlock: 0, toBlock: 'latest' }).get((error, eventResult) => { + if (error) + console.log('Error in myEvent event handler: ' + error); + else + console.log('events: ' + JSON.stringify(eventResult.args)); + }); + */ + const assets = await this.context.ocean.assets.search('') + this.setState({ results: assets }) + } + + public renderResults = () => + this.state.results.length ? ( +
+ {this.state.results.map(asset => ( + + ))} +
+ ) : ( +
No invoices yet
+ ) + + public render() { + return ( + + {this.renderResults()} + + ) + } +} + +Invoices.contextType = User