From 7c9fe506ea4f90c71d1dc9c5e0ff8c4c3f9ec295 Mon Sep 17 00:00:00 2001 From: Nicolas Mahe Date: Fri, 2 Feb 2024 12:38:11 +0700 Subject: [PATCH] Flatten `ownerships` in `fetchAsset` query --- components/Token/Header.tsx | 6 ++++- components/Token/Metadata.tsx | 38 +++++++++++++-------------- components/Token/Owners/Modal.tsx | 39 +++++++++++++--------------- pages/tokens/[id]/index.gql | 43 +++++++++++++++++-------------- pages/tokens/[id]/index.tsx | 9 +++++-- 5 files changed, 73 insertions(+), 62 deletions(-) diff --git a/components/Token/Header.tsx b/components/Token/Header.tsx index c5cafeac..62183f4c 100644 --- a/components/Token/Header.tsx +++ b/components/Token/Header.tsx @@ -84,7 +84,11 @@ const TokenHeader: FC = ({ {asset.name} - + = ({ asset, sales }) => { +const TokenMetadata: FC = ({ asset, sales, ownerships }) => { const { t } = useTranslation('components') const isOpenCollection = asset.collection.mintType === 'PUBLIC' - const numberOfOwners = asset.ownerships.totalCount + const numberOfOwners = ownerships.totalCount const saleSupply = BigNumber.from(sales.totalAvailableQuantitySum) const totalSupply = BigNumber.from(asset.quantity) - const owners = asset.ownerships.nodes + const owners = ownerships.nodes return ( @@ -81,7 +81,7 @@ const TokenMetadata: FC = ({ asset, sales }) => { {t('token.metadata.owners')} - + )} {asset.collection.standard === 'ERC721' && ( diff --git a/components/Token/Owners/Modal.tsx b/components/Token/Owners/Modal.tsx index 399203e3..2e6ed96b 100644 --- a/components/Token/Owners/Modal.tsx +++ b/components/Token/Owners/Modal.tsx @@ -29,27 +29,27 @@ export type Props = { chainId: number collectionAddress: string tokenId: string - ownerships: { - totalCount: number - nodes: { - ownerAddress: string - quantity: string - owner: { - address: string - name: string | null - image: string | null - verification: { - status: AccountVerificationStatus - } | null - } - }[] - } + } + ownerships: { + totalCount: number + nodes: { + ownerAddress: string + quantity: string + owner: { + address: string + name: string | null + image: string | null + verification: { + status: AccountVerificationStatus + } | null + } + }[] } } const OwnerPaginationLimit = 8 -const OwnersModal: FC = ({ asset }) => { +const OwnersModal: FC = ({ asset, ownerships }) => { const { t } = useTranslation('components') const { isOpen, onOpen, onClose } = useDisclosure() const [page, setPage] = useState(1) @@ -76,10 +76,7 @@ const OwnersModal: FC = ({ asset }) => { return ( <> - + = ({ asset }) => { px={2.5} > - {asset.ownerships.totalCount} + {ownerships.totalCount} diff --git a/pages/tokens/[id]/index.gql b/pages/tokens/[id]/index.gql index 99b67003..03971762 100644 --- a/pages/tokens/[id]/index.gql +++ b/pages/tokens/[id]/index.gql @@ -54,25 +54,30 @@ query FetchAsset( owned: ownership(ownerAddress: $address) { quantity } - ownerships( - orderBy: [ - QUANTITY_DESC - ACCOUNT_BY_OWNER_ADDRESS__NAME_ASC - OWNER_ADDRESS_ASC - ] - first: 5 - ) { - totalCount - nodes { - ownerAddress - quantity - owner { - address - name - image - verification { - status - } + } + ownerships( + filter: { + chainId: { equalTo: $chainId } + collectionAddress: { equalTo: $collectionAddress } + tokenId: { equalTo: $tokenId } + } + orderBy: [ + QUANTITY_DESC + ACCOUNT_BY_OWNER_ADDRESS__NAME_ASC + OWNER_ADDRESS_ASC + ] + first: 5 + ) { + totalCount + nodes { + ownerAddress + quantity + owner { + address + name + image + verification { + status } } } diff --git a/pages/tokens/[id]/index.tsx b/pages/tokens/[id]/index.tsx index 36df4895..7b9d52e6 100644 --- a/pages/tokens/[id]/index.tsx +++ b/pages/tokens/[id]/index.tsx @@ -87,6 +87,7 @@ const DetailPage: NextPage = ({ now: nowProp }) => { const asset = data?.asset const sales = data?.sales const bids = data?.bids + const ownerships = data?.ownerships const media = useDetectAssetMedia(asset) @@ -227,10 +228,14 @@ const DetailPage: NextPage = ({ now: nowProp }) => { )} - {!asset || !sales ? ( + {!asset || !sales || !ownerships ? ( ) : ( - + )} {!asset || !sales || !data?.currencies?.nodes ? ( <>