react/src/hooks/useSearch/useSearch.ts

70 lines
1.6 KiB
TypeScript
Raw Normal View History

import { useState } from 'react'
import { Logger } from '@oceanprotocol/squid'
import { useOcean } from '../../providers'
import {
SearchQuery,
Aquarius,
QueryResult
} from '@oceanprotocol/squid/dist/node/aquarius/Aquarius'
// TODO searchText
interface UseSearch {
2020-05-11 13:47:21 +02:00
searchWithQuery: (query: SearchQuery) => Promise<QueryResult>
getPublishedList: (
account: string,
page: number,
offset: number
) => Promise<QueryResult>
searchError?: string
}
function useSearch(): UseSearch {
const { ocean, account, config } = useOcean()
const [searchError, setSearchError] = useState<string | undefined>()
2020-05-11 13:47:21 +02:00
async function searchWithQuery(query: SearchQuery): Promise<QueryResult> {
if (!ocean || !account) return
setSearchError(undefined)
try {
const aquarius = new Aquarius(config.aquariusUri as string, Logger)
return await aquarius.queryMetadata(query)
} catch (error) {
setSearchError(error.message)
}
}
async function getPublishedList(
account: string,
page: number,
offset: number
): Promise<QueryResult> {
if (!ocean || !account) return
setSearchError(undefined)
try {
2020-05-06 14:31:36 +02:00
const query = {
page,
offset,
query: {
'publicKey.owner': [account]
},
sort: {
created: -1
}
} as SearchQuery
2020-05-06 14:32:05 +02:00
2020-05-11 13:47:21 +02:00
return await searchWithQuery(query)
} catch (error) {
setSearchError(error.message)
}
}
2020-05-11 13:47:21 +02:00
return { searchWithQuery, getPublishedList, searchError }
}
export { useSearch, UseSearch }
export default useSearch