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

Adjusting query to show assets from the same publisher but not the exact same asset

This commit is contained in:
Jamie Hewitt 2022-10-19 13:46:21 +03:00
parent cbf7958bc0
commit 7296a48fd6
2 changed files with 33 additions and 11 deletions

View File

@ -79,7 +79,11 @@ export default function AssetContent({
</Button> </Button>
</div> </div>
)} )}
<RelatedAssets tags={asset?.metadata?.tags} id={asset?.id} /> <RelatedAssets
tags={asset?.metadata?.tags}
dtAddress={asset?.datatokens[0]?.address}
owner={asset?.nft?.owner}
/>
</div> </div>
</article> </article>
</> </>

View File

@ -1,19 +1,21 @@
import React, { ReactElement, useEffect, useState } from 'react' import React, { ReactElement, useEffect, useState } from 'react'
import { generateBaseQuery, getFilterTerm } from '@utils/aquarius' import { generateBaseQuery } from '@utils/aquarius'
import { useUserPreferences } from '@context/UserPreferences' import { useUserPreferences } from '@context/UserPreferences'
import { SortTermOptions } from '../../../@types/aquarius/SearchQuery' import { SortTermOptions } from '../../../@types/aquarius/SearchQuery'
import SectionQueryResult from '../../Home/SectionQueryResult' import SectionQueryResult from '../../Home/SectionQueryResult'
export default function RelatedAssets({ export default function RelatedAssets({
tags, tags,
id dtAddress,
owner
}: { }: {
tags: string[] tags: string[]
id: string dtAddress: string
owner: string
}): ReactElement { }): ReactElement {
const { chainIds } = useUserPreferences() const { chainIds } = useUserPreferences()
const [queryRelatedAssets, setQueryRelatedAssets] = useState<SearchQuery>() const [queryRelatedAssets, setQueryRelatedAssets] = useState<SearchQuery>()
const modifiedTags = tags.toString().split(',').join(' OR ')
useEffect(() => { useEffect(() => {
const baseParamsSales = { const baseParamsSales = {
@ -22,19 +24,35 @@ export default function RelatedAssets({
size: 3 size: 3
}, },
nestedQuery: { nestedQuery: {
must_not: { must_not: [
match: { {
id query_string: {
query: `${dtAddress.toLowerCase()}`,
fields: ['datatokens.address']
} }
} }
],
must: [
{
query_string: {
query: modifiedTags,
fields: ['metadata.tags']
}
},
{
query_string: {
query: `${owner.toLowerCase()}`,
fields: ['nft.owner']
}
}
]
}, },
filters: [getFilterTerm('metadata.tags', tags)],
sortOptions: { sortOptions: {
sortBy: SortTermOptions.Orders sortBy: SortTermOptions.Orders
} as SortOptions } as SortOptions
} as BaseQueryParams } as BaseQueryParams
setQueryRelatedAssets(generateBaseQuery(baseParamsSales)) setQueryRelatedAssets(generateBaseQuery(baseParamsSales))
}, [chainIds]) }, [chainIds, dtAddress, tags])
return ( return (
<SectionQueryResult title="Related Assets:" query={queryRelatedAssets} /> <SectionQueryResult title="Related Assets:" query={queryRelatedAssets} />