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

60 lines
1.7 KiB
TypeScript

import React, { ReactElement, useEffect, useState } from 'react'
import SearchBar from '../molecules/SearchBar'
import styles from './Home.module.css'
import { MetadataStore, Logger } from '@oceanprotocol/lib'
import AssetList from '../organisms/AssetList'
import { QueryResult } from '@oceanprotocol/lib/dist/node/metadatastore/MetadataStore'
import Container from '../atoms/Container'
import Loader from '../atoms/Loader'
import { useOcean } from '@oceanprotocol/react'
async function getLatestAssets(metadataStoreUri: string) {
try {
const metadataStore = new MetadataStore(metadataStoreUri, Logger)
const result = await metadataStore.queryMetadata({
page: 1,
// TODO: reduce assets here, once faulty assets pushed by external devs are removed
offset: 100,
query: {},
sort: { created: -1 }
})
return result
} catch (error) {
console.error(error.message)
}
}
export default function HomePage(): ReactElement {
const { config } = useOcean()
const [queryResult, setQueryResult] = useState<QueryResult>()
const [loading, setLoading] = useState(true)
useEffect(() => {
async function init() {
const results = await getLatestAssets(config.metadataStoreUri)
setQueryResult(results)
setLoading(false)
}
init()
}, [config.metadataStoreUri])
return (
<>
<Container narrow className={styles.searchWrap}>
<SearchBar />
</Container>
<section className={styles.latest}>
<h3>Latest Data Sets</h3>
{loading ? (
<Loader />
) : (
queryResult && <AssetList queryResult={queryResult} />
)}
</section>
</>
)
}