diff --git a/src/hooks/index.ts b/src/hooks/index.ts index 27127d3..5cff582 100644 --- a/src/hooks/index.ts +++ b/src/hooks/index.ts @@ -1,3 +1,4 @@ export * from './useConsume' export * from './useMetadata' export * from './useCompute' +export * from './useSearch' diff --git a/src/hooks/useSearch/index.ts b/src/hooks/useSearch/index.ts new file mode 100644 index 0000000..25e9f76 --- /dev/null +++ b/src/hooks/useSearch/index.ts @@ -0,0 +1 @@ +export * from './useSearch' diff --git a/src/hooks/useSearch/useSearch.ts b/src/hooks/useSearch/useSearch.ts new file mode 100644 index 0000000..4308b96 --- /dev/null +++ b/src/hooks/useSearch/useSearch.ts @@ -0,0 +1,69 @@ +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 { + searchQuery: (query: SearchQuery) => Promise + getPublishedList: ( + account: string, + page: number, + offset: number + ) => Promise + searchError?: string +} + +function useSearch(): UseSearch { + const { ocean, account, config } = useOcean() + const [searchError, setSearchError] = useState() + + async function searchQuery(query: SearchQuery): Promise { + 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 { + if (!ocean || !account) return + + setSearchError(undefined) + + try { + const searchQuery = { + page, + offset, + query: { + 'publicKey.owner': [account] + }, + sort: { + created: -1 + } + } as SearchQuery + const aquarius = new Aquarius(config.aquariusUri as string, Logger) + return await aquarius.queryMetadata(searchQuery) + } catch (error) { + setSearchError(error.message) + } + } + + return { searchQuery, getPublishedList, searchError } +} + +export { useSearch, UseSearch } +export default useSearch