1
0
mirror of https://github.com/oceanprotocol/market.git synced 2024-12-02 05:57:29 +01:00

Merge pull request #51 from oceanprotocol/feature/config

config refactor
This commit is contained in:
mihaisc 2020-08-12 12:51:41 +03:00 committed by GitHub
commit 920d5c59fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 84 additions and 54 deletions

View File

@ -1,28 +1,8 @@
const { ConfigHelper } = require('@oceanprotocol/lib') module.exports = {
network: process.env.GATSBY_NETWORK || 'rinkeby',
const network = process.env.GATSBY_NETWORK || 'rinkeby'
function getDefaultOceanConfig() {
return new ConfigHelper().getConfig(
network,
process.env.GATSBY_INFURA_PROJECT_ID
)
}
const appConfig = {
oceanConfig: {
...getDefaultOceanConfig(),
verbose: 3
},
network,
infuraProjectId: process.env.GATSBY_INFURA_PROJECT_ID || 'xxx', infuraProjectId: process.env.GATSBY_INFURA_PROJECT_ID || 'xxx',
marketFeeAddress: marketFeeAddress:
process.env.GATSBY_MARKET_FEE_ADDRESS || process.env.GATSBY_MARKET_FEE_ADDRESS ||
'0x903322C7E45A60d7c8C3EA236c5beA9Af86310c7', '0x903322C7E45A60d7c8C3EA236c5beA9Af86310c7',
marketFeeAmount: process.env.GATSBY_MARKET_FEE_AMOUNT || '0.1' // in % marketFeeAmount: process.env.GATSBY_MARKET_FEE_AMOUNT || '0.1' // in %
} }
module.exports = {
getDefaultOceanConfig,
appConfig
}

View File

@ -1,7 +1,7 @@
require('dotenv').config() require('dotenv').config()
const siteContent = require('./content/site.json') const siteContent = require('./content/site.json')
const { appConfig } = require('./app.config') const appConfig = require('./app.config')
module.exports = { module.exports = {
siteMetadata: { siteMetadata: {

6
package-lock.json generated
View File

@ -3606,9 +3606,9 @@
} }
}, },
"@oceanprotocol/react": { "@oceanprotocol/react": {
"version": "0.0.32", "version": "0.0.34",
"resolved": "https://registry.npmjs.org/@oceanprotocol/react/-/react-0.0.32.tgz", "resolved": "https://registry.npmjs.org/@oceanprotocol/react/-/react-0.0.34.tgz",
"integrity": "sha512-MN0/kpAGfqod9mFKbynhfElMYqYSZuT5as/Nnr3YKAuaCDiuTGc7jqF2nnNZraN5nOcti8DKHkCLsLF9qNNRpw==", "integrity": "sha512-xgKNuVszU0eYtDnByPaI0PSZgO1S+haWlMOGvmLTfxiKv2A/m2qK09gFiY5SgiGsPozphG5daTw7M0dyf0tD1w==",
"requires": { "requires": {
"@oceanprotocol/lib": "^0.1.11", "@oceanprotocol/lib": "^0.1.11",
"axios": "^0.19.2", "axios": "^0.19.2",

View File

@ -23,7 +23,7 @@
"@loadable/component": "^5.13.1", "@loadable/component": "^5.13.1",
"@oceanprotocol/art": "^3.0.0", "@oceanprotocol/art": "^3.0.0",
"@oceanprotocol/lib": "^0.1.11", "@oceanprotocol/lib": "^0.1.11",
"@oceanprotocol/react": "^0.0.32", "@oceanprotocol/react": "^0.0.34",
"@oceanprotocol/typographies": "^0.1.0", "@oceanprotocol/typographies": "^0.1.0",
"@sindresorhus/slugify": "^1.0.0", "@sindresorhus/slugify": "^1.0.0",
"@tippyjs/react": "^4.1.0", "@tippyjs/react": "^4.1.0",

View File

@ -7,18 +7,17 @@ import { updateQueryStringParameter } from '../../utils'
import styles from './AssetList.module.css' import styles from './AssetList.module.css'
import { MetadataMarket } from '../../@types/Metadata' import { MetadataMarket } from '../../@types/Metadata'
import { DDO } from '@oceanprotocol/lib' import { DDO } from '@oceanprotocol/lib'
import { getDefaultOceanConfig } from '../../../app.config' import { useOcean } from '@oceanprotocol/react'
declare type AssetListProps = { declare type AssetListProps = {
queryResult: QueryResult queryResult: QueryResult
} }
const AssetList: React.FC<AssetListProps> = ({ queryResult }) => { const AssetList: React.FC<AssetListProps> = ({ queryResult }) => {
const { config } = useOcean()
const location = useLocation() const location = useLocation()
const navigate = useNavigate() const navigate = useNavigate()
const { metadataStoreUri } = getDefaultOceanConfig()
// Construct the urls on the pagination links. This is only for UX, // Construct the urls on the pagination links. This is only for UX,
// since the links are no <Link> they will not work by itself. // since the links are no <Link> they will not work by itself.
function hrefBuilder(pageIndex: number) { function hrefBuilder(pageIndex: number) {
@ -54,7 +53,7 @@ const AssetList: React.FC<AssetListProps> = ({ queryResult }) => {
}) })
) : ( ) : (
<div className={styles.empty}> <div className={styles.empty}>
No results found in {metadataStoreUri} No results found in {config.metadataStoreUri}
</div> </div>
)} )}
</div> </div>

View File

@ -6,11 +6,10 @@ import AssetList from '../organisms/AssetList'
import { QueryResult } from '@oceanprotocol/lib/dist/node/metadatastore/MetadataStore' import { QueryResult } from '@oceanprotocol/lib/dist/node/metadatastore/MetadataStore'
import Container from '../atoms/Container' import Container from '../atoms/Container'
import Loader from '../atoms/Loader' import Loader from '../atoms/Loader'
import { getDefaultOceanConfig } from '../../../app.config' import { useOcean } from '@oceanprotocol/react'
async function getLatestAssets() { async function getLatestAssets(metadataStoreUri: string) {
try { try {
const { metadataStoreUri } = getDefaultOceanConfig()
const metadataStore = new MetadataStore(metadataStoreUri, Logger) const metadataStore = new MetadataStore(metadataStoreUri, Logger)
const result = await metadataStore.queryMetadata({ const result = await metadataStore.queryMetadata({
@ -27,12 +26,13 @@ async function getLatestAssets() {
} }
export default function HomePage(): ReactElement { export default function HomePage(): ReactElement {
const { config } = useOcean()
const [queryResult, setQueryResult] = useState<QueryResult>() const [queryResult, setQueryResult] = useState<QueryResult>()
const [loading, setLoading] = useState(true) const [loading, setLoading] = useState(true)
useEffect(() => { useEffect(() => {
async function init() { async function init() {
const results = await getLatestAssets() const results = await getLatestAssets(config.metadataStoreUri)
setQueryResult(results) setQueryResult(results)
setLoading(false) setLoading(false)
} }

View File

@ -6,7 +6,7 @@ import { MetadataMarket, ServiceMetadataMarket } from '../../@types/Metadata'
import { MetadataStore, Logger, DDO } from '@oceanprotocol/lib' import { MetadataStore, Logger, DDO } from '@oceanprotocol/lib'
import Alert from '../../components/atoms/Alert' import Alert from '../../components/atoms/Alert'
import Loader from '../../components/atoms/Loader' import Loader from '../../components/atoms/Loader'
import { getDefaultOceanConfig } from '../../../app.config' import { useOcean } from '@oceanprotocol/react'
export default function PageTemplateAssetDetails({ export default function PageTemplateAssetDetails({
did, did,
@ -15,6 +15,7 @@ export default function PageTemplateAssetDetails({
did: string did: string
uri: string uri: string
}): ReactElement { }): ReactElement {
const { config } = useOcean()
const [metadata, setMetadata] = useState<MetadataMarket>() const [metadata, setMetadata] = useState<MetadataMarket>()
const [title, setTitle] = useState<string>() const [title, setTitle] = useState<string>()
const [error, setError] = useState<string>() const [error, setError] = useState<string>()
@ -23,8 +24,7 @@ export default function PageTemplateAssetDetails({
useEffect(() => { useEffect(() => {
async function init() { async function init() {
try { try {
const { metadataStoreUri } = getDefaultOceanConfig() const metadataStore = new MetadataStore(config.metadataStoreUri, Logger)
const metadataStore = new MetadataStore(metadataStoreUri, Logger)
const ddo = await metadataStore.retrieveDDO(did) const ddo = await metadataStore.retrieveDDO(did)
setDdo(ddo) setDdo(ddo)

View File

@ -7,6 +7,7 @@ import styles from './index.module.css'
import queryString from 'query-string' import queryString from 'query-string'
import { getResults } from './utils' import { getResults } from './utils'
import Loader from '../../atoms/Loader' import Loader from '../../atoms/Loader'
import { useOcean } from '@oceanprotocol/react'
export declare type SearchPageProps = { export declare type SearchPageProps = {
text: string | string[] text: string | string[]
@ -19,6 +20,7 @@ export default function SearchPage({
}: { }: {
location: Location location: Location
}): ReactElement { }): ReactElement {
const { config } = useOcean()
const parsed = queryString.parse(location.search) const parsed = queryString.parse(location.search)
const { text, tag, page } = parsed const { text, tag, page } = parsed
const [queryResult, setQueryResult] = useState<QueryResult>() const [queryResult, setQueryResult] = useState<QueryResult>()
@ -27,7 +29,7 @@ export default function SearchPage({
useEffect(() => { useEffect(() => {
async function initSearch() { async function initSearch() {
setLoading(true) setLoading(true)
const queryResult = await getResults(parsed) const queryResult = await getResults(parsed, config.metadataStoreUri)
setQueryResult(queryResult) setQueryResult(queryResult)
setLoading(false) setLoading(false)
} }

View File

@ -4,7 +4,6 @@ import {
} from '@oceanprotocol/lib/dist/node/metadatastore/MetadataStore' } from '@oceanprotocol/lib/dist/node/metadatastore/MetadataStore'
import { priceQueryParamToWei } from '../../../utils' import { priceQueryParamToWei } from '../../../utils'
import { MetadataStore, Logger } from '@oceanprotocol/lib' import { MetadataStore, Logger } from '@oceanprotocol/lib'
import { getDefaultOceanConfig } from '../../../../app.config'
export function getSearchQuery( export function getSearchQuery(
page?: string | string[], page?: string | string[],
@ -32,7 +31,10 @@ export function getSearchQuery(
} as SearchQuery } as SearchQuery
} }
export async function getResults(params: any): Promise<QueryResult> { export async function getResults(
params: any,
metadataStoreUri: string
): Promise<QueryResult> {
const { text, tag, page, offset, minPrice, maxPrice } = params const { text, tag, page, offset, minPrice, maxPrice } = params
const minPriceParsed = priceQueryParamToWei( const minPriceParsed = priceQueryParamToWei(
@ -52,7 +54,6 @@ export async function getResults(params: any): Promise<QueryResult> {
]) ])
: undefined : undefined
const { metadataStoreUri } = getDefaultOceanConfig()
const metadataStore = new MetadataStore(metadataStoreUri, Logger) const metadataStore = new MetadataStore(metadataStoreUri, Logger)
const queryResult = await metadataStore.queryMetadata( const queryResult = await metadataStore.queryMetadata(
getSearchQuery(page, offset, text, tag, priceQuery) getSearchQuery(page, offset, text, tag, priceQuery)

View File

@ -0,0 +1,35 @@
import React, { useEffect } from 'react'
import { useOcean } from '@oceanprotocol/react'
import { getOceanConfig } from './wrapRootElement'
export function NetworkMonitor() {
const { connect, web3Provider } = useOcean()
const handleNetworkChanged = (chainId: number) => {
// temp hack
let network = ''
switch (chainId) {
case 1: {
network = 'mainnet'
break
}
case 4: {
network = 'rinkeby'
break
}
}
const config = getOceanConfig(network)
connect(config)
}
useEffect(() => {
if (!web3Provider) return
web3Provider.on('chainChanged', handleNetworkChanged)
return () => {
web3Provider.removeListener('chainChanged', handleNetworkChanged)
}
}, [web3Provider])
return <></>
}

View File

@ -1,16 +1,31 @@
import React, { ReactElement } from 'react' import React, { ReactElement } from 'react'
import { OceanProvider } from '@oceanprotocol/react' import { OceanProvider } from '@oceanprotocol/react'
import { appConfig } from '../../app.config' import { ConfigHelper } from '@oceanprotocol/lib'
import { web3ModalOpts } from '../utils/wallet' import { web3ModalOpts } from '../utils/wallet'
import { NetworkMonitor } from './NetworkMonitor'
import appConfig from '../../app.config'
const wrapRootElement = ({ export function getOceanConfig(network: string): ConfigHelper {
return new ConfigHelper().getConfig(
network,
process.env.GATSBY_INFURA_PROJECT_ID
)
}
export default function wrapRootElement({
element element
}: { }: {
element: ReactElement element: ReactElement
}): ReactElement => ( }): ReactElement {
<OceanProvider config={appConfig.oceanConfig} web3ModalOpts={web3ModalOpts}> const oceanInitialConfig = getOceanConfig(appConfig.network)
{element}
</OceanProvider>
)
export default wrapRootElement return (
<OceanProvider
initialConfig={oceanInitialConfig}
web3ModalOpts={web3ModalOpts}
>
<NetworkMonitor />
{element}
</OceanProvider>
)
}

View File

@ -1,7 +1,5 @@
import loadable from '@loadable/component' import loadable from '@loadable/component'
import { appConfig } from '../../app.config' import { infuraProjectId, network } from '../../app.config'
const { infuraProjectId, network, oceanConfig } = appConfig
const web3ModalTheme = { const web3ModalTheme = {
background: 'var(--brand-white)', background: 'var(--brand-white)',
@ -27,7 +25,7 @@ const providerOptions = {
package: Torus, package: Torus,
options: { options: {
networkParams: { networkParams: {
host: oceanConfig.url // optional // host: oceanConfig.url // optional
// chainId: 1337, // optional // chainId: 1337, // optional
// networkId: 1337 // optional // networkId: 1337 // optional
} }