@0xsequence/marketplace-sdk 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.storybook/main.ts +1 -1
- package/.storybook/preview.tsx +0 -1
- package/CHANGELOG.md +62 -13
- package/dist/BellIcon-IpHHEy8h.js +45 -0
- package/dist/BellIcon-IpHHEy8h.js.map +1 -0
- package/dist/{BellIcon-Cb9YEUzJ.js → CartIcon-C8zbor8H.js} +10 -49
- package/dist/CartIcon-C8zbor8H.js.map +1 -0
- package/dist/CollectibleCard-C2EWF0zo.d.ts +8 -0
- package/dist/{_internal-DslqcNC1.js → _internal-DkS2VUn5.js} +1 -1
- package/dist/{_internal-DslqcNC1.js.map → _internal-DkS2VUn5.js.map} +1 -1
- package/dist/{alien_swap-DJ98gZQp.js → alien_swap-BTJ7mSR-.js} +1 -1
- package/dist/{alien_swap-DJ98gZQp.js.map → alien_swap-BTJ7mSR-.js.map} +1 -1
- package/dist/{api-BmEQfSQa.js → api-DuLKn__v.js} +5 -3
- package/dist/api-DuLKn__v.js.map +1 -0
- package/dist/{aqua-xyz-n1PcCCZ0.js → aqua-xyz-BYJ9WSP_.js} +1 -1
- package/dist/{aqua-xyz-n1PcCCZ0.js.map → aqua-xyz-BYJ9WSP_.js.map} +1 -1
- package/dist/{aura-Bevk_YkS.js → aura-D7SUjgro.js} +1 -1
- package/dist/{aura-Bevk_YkS.js.map → aura-D7SUjgro.js.map} +1 -1
- package/dist/{blur-B5sHErx5.js → blur-BcnRFCaV.js} +1 -1
- package/dist/{blur-B5sHErx5.js.map → blur-BcnRFCaV.js.map} +1 -1
- package/dist/builder-api-BFuZNOaN.js.map +1 -1
- package/dist/builder.gen-B9wR2nvF.js.map +1 -1
- package/dist/{coinbase-D30W-lxA.js → coinbase-ChoX9Hw2.js} +1 -1
- package/dist/{coinbase-D30W-lxA.js.map → coinbase-ChoX9Hw2.js.map} +1 -1
- package/dist/components-CUv-wQr8.js +119 -0
- package/dist/components-CUv-wQr8.js.map +1 -0
- package/dist/{contracts-DPHFT2TA.js → contracts-D72LBOX3.js} +4 -5
- package/dist/{contracts-DPHFT2TA.js.map → contracts-D72LBOX3.js.map} +1 -1
- package/dist/{create-config-6uynwTeb.js → create-config-CIfejoCk.js} +6 -11
- package/dist/create-config-CIfejoCk.js.map +1 -0
- package/dist/{create-config-lLSrnkbb.d.ts → create-config-DV_dtaLt.d.ts} +24 -31
- package/dist/{element-C2NJexro.js → element-Dbcv5qya.js} +1 -1
- package/dist/{element-C2NJexro.js.map → element-Dbcv5qya.js.map} +1 -1
- package/dist/{filters-B8XS4tFH.d.ts → filters-zkMJaPey.d.ts} +6 -6
- package/dist/{foundation-QgY1lvUj.js → foundation-QPhUEUy8.js} +1 -1
- package/dist/{foundation-QgY1lvUj.js.map → foundation-QPhUEUy8.js.map} +1 -1
- package/dist/{index-ChSKFOMx.d.ts → index-B6aSbaw2.d.ts} +1 -1
- package/dist/{index-PSPpUxCE.d.ts → index-B8vaT3_s.d.ts} +4 -4
- package/dist/{index-DonXiSg2.d.ts → index-BaytncQc.d.ts} +100 -56
- package/dist/{index-CY5UEX4h.d.ts → index-BoNNplSx.d.ts} +2 -2
- package/dist/{index-QxxS6f9r.d.ts → index-Bv5XVLjH.d.ts} +1 -1
- package/dist/{index-CIkpYltz.d.ts → index-C768pAfu.d.ts} +3 -3
- package/dist/{index-DX0Vm8HY.d.ts → index-CM0ZTePs.d.ts} +1 -1
- package/dist/index-CMPUveNz.d.ts +64 -0
- package/dist/{index-ThUIs-Sy.d.ts → index-CQecU53t.d.ts} +28 -23
- package/dist/{index-CtF7EE2z.d.ts → index-CT8ZorFd.d.ts} +1 -1
- package/dist/{index-Dpyp7fQz.d.ts → index-CXscCUg7.d.ts} +12 -12
- package/dist/{index-ByW08-Z7.d.ts → index-D-UXGo5d.d.ts} +2 -2
- package/dist/{index-D71J5Ghd.d.ts → index-D6YMj82n.d.ts} +79 -79
- package/dist/{index-CQnGIGb5.d.ts → index-DJG0kiII.d.ts} +33 -33
- package/dist/{index-D2HohSwO.d.ts → index-DLUjc7Bx.d.ts} +52 -29
- package/dist/{index-C7xKVIr4.d.ts → index-DMBMM16q.d.ts} +37 -37
- package/dist/{index-DNU9xoGK.d.ts → index-DpeWm_vF.d.ts} +5 -5
- package/dist/{index-BuY_NKSX.d.ts → index-Yobo6icm.d.ts} +40 -28
- package/dist/{index-BGJXqdg6.d.ts → index-jGgfEHfQ.d.ts} +8 -8
- package/dist/index.d.ts +8 -8
- package/dist/index.js +12 -11
- package/dist/{listCollectiblesPaginated--AgXjajA.d.ts → listCollectiblesPaginated-Bq0QSOjJ.d.ts} +28 -26
- package/dist/{listCollections-Bbzbz7qW.d.ts → listCollections-dTCq00l5.d.ts} +168 -123
- package/dist/{looks-rare-CMVPny4v.js → looks-rare-C7cQztTR.js} +1 -1
- package/dist/{looks-rare-CMVPny4v.js.map → looks-rare-C7cQztTR.js.map} +1 -1
- package/dist/{lowestListing-BQHfQpfg.d.ts → lowestListing-CB5Te-Q9.d.ts} +41 -17
- package/dist/{magic-eden-IrWp2ZXk.js → magic-eden-D3r7jiBG.js} +1 -1
- package/dist/{magic-eden-IrWp2ZXk.js.map → magic-eden-D3r7jiBG.js.map} +1 -1
- package/dist/{manifold-DeOE-p2G.js → manifold-DsX0CBP-.js} +1 -1
- package/dist/{manifold-DeOE-p2G.js.map → manifold-DsX0CBP-.js.map} +1 -1
- package/dist/{marketCurrencies-CmOMCCOr.d.ts → marketCurrencies-Bzj8X4TL.d.ts} +8 -8
- package/dist/{marketplace-B5Z8G03R.js → marketplace-BYY8OloA.js} +1 -1
- package/dist/{marketplace-B5Z8G03R.js.map → marketplace-BYY8OloA.js.map} +1 -1
- package/dist/{marketplace-logos-D8t86gsW.js → marketplace-logos-Csv2MBwf.js} +21 -21
- package/dist/marketplace-logos-Csv2MBwf.js.map +1 -0
- package/dist/{marketplace.gen-JzNYpM0U.js → marketplace.gen-w2YvbEEo.js} +2 -2
- package/dist/marketplace.gen-w2YvbEEo.js.map +1 -0
- package/dist/{marketplaceConfig-sNh-MA5M.js → marketplaceConfig-BTy75Mbf.js} +8 -9
- package/dist/marketplaceConfig-BTy75Mbf.js.map +1 -0
- package/dist/{mintify-DG3GrljJ.js → mintify-DiOoDmO1.js} +1 -1
- package/dist/{mintify-DG3GrljJ.js.map → mintify-DiOoDmO1.js.map} +1 -1
- package/dist/{network-DnBEe1Ur.js → network-DtmiMhcg.js} +2 -2
- package/dist/network-DtmiMhcg.js.map +1 -0
- package/dist/networkconfigToWagmiChain-DbUf6HiO.js +15 -0
- package/dist/networkconfigToWagmiChain-DbUf6HiO.js.map +1 -0
- package/dist/{nftx-B3LH-ZYM.js → nftx-CP82jNra.js} +1 -1
- package/dist/{nftx-B3LH-ZYM.js.map → nftx-CP82jNra.js.map} +1 -1
- package/dist/{okx-CRFLrT3Z.js → okx-p9-4xRjs.js} +1 -1
- package/dist/{okx-CRFLrT3Z.js.map → okx-p9-4xRjs.js.map} +1 -1
- package/dist/{open-sea-cOpfl366.js → open-sea-D2GwAmKS.js} +1 -1
- package/dist/{open-sea-cOpfl366.js.map → open-sea-D2GwAmKS.js.map} +1 -1
- package/dist/{primary-sale-CLjXRrDj.js → primary-sale-DOmNDq2P.js} +1 -1
- package/dist/{primary-sale-CLjXRrDj.js.map → primary-sale-DOmNDq2P.js.map} +1 -1
- package/dist/{queries-BYT4GJw3.js → queries-EMA5CcwY.js} +208 -287
- package/dist/queries-EMA5CcwY.js.map +1 -0
- package/dist/{query-BTe7Wkrs.d.ts → query-BG-MA1MB.d.ts} +1 -1
- package/dist/{rarible-guwUx4cn.js → rarible-DqiiW9ki.js} +1 -1
- package/dist/{rarible-guwUx4cn.js.map → rarible-DqiiW9ki.js.map} +1 -1
- package/dist/react/_internal/api/index.d.ts +1 -1
- package/dist/react/_internal/api/index.js +4 -4
- package/dist/react/_internal/databeat/index.d.ts +1 -1
- package/dist/react/_internal/databeat/index.js +24 -21
- package/dist/react/_internal/index.d.ts +1 -1
- package/dist/react/_internal/index.js +8 -7
- package/dist/react/_internal/wagmi/index.d.ts +1 -1
- package/dist/react/_internal/wagmi/index.js +4 -3
- package/dist/react/hooks/config/index.d.ts +8 -8
- package/dist/react/hooks/config/index.js +24 -21
- package/dist/react/hooks/contracts/index.d.ts +6 -6
- package/dist/react/hooks/contracts/index.js +13 -12
- package/dist/react/hooks/data/collectibles/index.d.ts +4 -4
- package/dist/react/hooks/data/collectibles/index.js +24 -21
- package/dist/react/hooks/data/collections/index.d.ts +10 -10
- package/dist/react/hooks/data/collections/index.js +24 -21
- package/dist/react/hooks/data/index.d.ts +29 -29
- package/dist/react/hooks/data/index.js +25 -22
- package/dist/react/hooks/data/inventory/index.d.ts +28 -28
- package/dist/react/hooks/data/inventory/index.js +24 -21
- package/dist/react/hooks/data/market/index.d.ts +5 -11
- package/dist/react/hooks/data/market/index.js +24 -21
- package/dist/react/hooks/data/orders/index.d.ts +5 -11
- package/dist/react/hooks/data/orders/index.js +25 -22
- package/dist/react/hooks/data/primary-sales/index.d.ts +28 -28
- package/dist/react/hooks/data/primary-sales/index.js +24 -21
- package/dist/react/hooks/data/tokens/index.d.ts +4 -4
- package/dist/react/hooks/data/tokens/index.js +24 -21
- package/dist/react/hooks/index.d.ts +29 -29
- package/dist/react/hooks/index.js +25 -22
- package/dist/react/hooks/transactions/index.d.ts +2 -2
- package/dist/react/hooks/transactions/index.js +24 -21
- package/dist/react/hooks/ui/index.d.ts +4 -4
- package/dist/react/hooks/ui/index.js +24 -21
- package/dist/react/hooks/utils/index.d.ts +29 -29
- package/dist/react/hooks/utils/index.js +25 -22
- package/dist/react/index.d.ts +29 -29
- package/dist/react/index.js +25 -22
- package/dist/react/queries/index.d.ts +16 -16
- package/dist/react/queries/index.js +18 -17
- package/dist/react/ssr/index.d.ts +7 -7
- package/dist/react/ssr/index.js +9 -8
- package/dist/react/ssr/index.js.map +1 -1
- package/dist/react/ui/components/marketplace-collectible-card/components/footer/components/index.d.ts +3 -0
- package/dist/react/ui/components/marketplace-collectible-card/components/footer/components/index.js +22 -0
- package/dist/react/ui/components/marketplace-collectible-card/components/footer/index.d.ts +54 -0
- package/dist/react/ui/components/marketplace-collectible-card/components/footer/index.js +29 -0
- package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +5 -5
- package/dist/react/ui/components/marketplace-collectible-card/index.js +24 -21
- package/dist/react/ui/components/marketplace-collectible-card/utils/index.d.ts +2 -2
- package/dist/react/ui/components/marketplace-collectible-card/utils/index.js +9 -8
- package/dist/react/ui/components/marketplace-logos/index.d.ts +21 -21
- package/dist/react/ui/components/marketplace-logos/index.js +1 -1
- package/dist/react/ui/icons/index.js +13 -11
- package/dist/react/ui/index.d.ts +5 -5
- package/dist/react/ui/index.js +24 -21
- package/dist/react/ui/modals/_internal/components/actionModal/index.js +24 -21
- package/dist/react/utils/index.d.ts +1 -1
- package/dist/react/utils/index.js +5 -5
- package/dist/{react-Ceq8mamy.js → react-BLJ4DkPx.js} +723 -807
- package/dist/react-BLJ4DkPx.js.map +1 -0
- package/dist/{react-CbqXKOpt.css → react-F03jPjPk.css} +1 -1
- package/dist/{react-CbqXKOpt.css.map → react-F03jPjPk.css.map} +1 -1
- package/dist/{sequence-Dt2Xo7Fa.js → sequence-Bbb-TFKg.js} +1 -1
- package/dist/{sequence-Dt2Xo7Fa.js.map → sequence-Bbb-TFKg.js.map} +1 -1
- package/dist/styles/index.css +46 -24
- package/dist/{sudo-swap-CGoARONs.js → sudo-swap-CEPIM3Js.js} +1 -1
- package/dist/{sudo-swap-CGoARONs.js.map → sudo-swap-CEPIM3Js.js.map} +1 -1
- package/dist/{super-rare-NeQtZjcn.js → super-rare-CMEn9PoO.js} +1 -1
- package/dist/{super-rare-NeQtZjcn.js.map → super-rare-CMEn9PoO.js.map} +1 -1
- package/dist/{token-D9gZVqbX.js → token-CcyLz8Z8.js} +1 -1
- package/dist/{token-D9gZVqbX.js.map → token-CcyLz8Z8.js.map} +1 -1
- package/dist/{tokenSupplies-DXtkRYNO.d.ts → tokenSupplies-C470zTT0.d.ts} +23 -23
- package/dist/{transaction-CC2KxNF6.js → transaction-DZUW5RHu.js} +2 -8
- package/dist/transaction-DZUW5RHu.js.map +1 -0
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.js +2 -2
- package/dist/{types-G2PWxiJR.js → types-B_-cnkcP.js} +1 -1
- package/dist/types-B_-cnkcP.js.map +1 -0
- package/dist/{types-BlCa0TVE.d.ts → types-D6LkVrF0.d.ts} +18 -10
- package/dist/utils/abi/index.d.ts +4 -4
- package/dist/utils/abi/index.js +4 -4
- package/dist/utils/abi/marketplace/index.d.ts +1 -1
- package/dist/utils/abi/marketplace/index.js +1 -1
- package/dist/utils/abi/primary-sale/index.d.ts +1 -1
- package/dist/utils/abi/primary-sale/index.js +1 -1
- package/dist/utils/abi/token/index.d.ts +1 -1
- package/dist/utils/abi/token/index.js +1 -1
- package/dist/utils/index.d.ts +6 -6
- package/dist/utils/index.js +11 -10
- package/dist/{utils-CKJd-CRf.js → utils-BZEkdqWK.js} +7 -24
- package/dist/utils-BZEkdqWK.js.map +1 -0
- package/dist/{utils-wquIhK6T.js → utils-oVZxdK0o.js} +2 -2
- package/dist/utils-oVZxdK0o.js.map +1 -0
- package/dist/{waitForTransactionReceipt-DZxAuR9N.js → waitForTransactionReceipt-B08YZiDY.js} +3 -4
- package/dist/{waitForTransactionReceipt-DZxAuR9N.js.map → waitForTransactionReceipt-B08YZiDY.js.map} +1 -1
- package/dist/{x2y2-CQdg24VP.js → x2y2-DNe6JgtG.js} +1 -1
- package/dist/{x2y2-CQdg24VP.js.map → x2y2-DNe6JgtG.js.map} +1 -1
- package/dist/{zora-DdEydy4L.js → zora-w0Zqxxs4.js} +1 -1
- package/dist/{zora-DdEydy4L.js.map → zora-w0Zqxxs4.js.map} +1 -1
- package/package.json +35 -35
- package/src/react/_internal/api/marketplace.gen.ts +1 -1
- package/src/react/_internal/api/query-keys.ts +2 -0
- package/src/react/_internal/wagmi/__tests__/create-config.test.ts +19 -8
- package/src/react/_internal/wagmi/create-config.ts +6 -17
- package/src/react/hooks/config/__snapshots__/useMarketplaceConfig.test.tsx.snap +4 -4
- package/src/react/hooks/data/collectibles/useBalanceOfCollectible.laos.test.tsx +2 -2
- package/src/react/hooks/data/collectibles/useTokenBalances.test.tsx +151 -0
- package/src/react/hooks/data/collectibles/useTokenBalances.tsx +47 -0
- package/src/react/hooks/data/collections/__snapshots__/useListCollections.test.tsx.snap +6 -6
- package/src/react/hooks/data/inventory/useInventory.test.tsx +3 -98
- package/src/react/hooks/data/inventory/useInventory.tsx +2 -2
- package/src/react/hooks/data/market/useListMarketCardData.tsx +1 -1
- package/src/react/hooks/data/orders/useListOffersForCollectible.tsx +70 -45
- package/src/react/hooks/data/primary-sales/useList1155ShopCardData.tsx +21 -37
- package/src/react/hooks/data/primary-sales/useList721ShopCardData.tsx +14 -3
- package/src/react/hooks/data/tokens/useSearchTokenMetadata.tsx +4 -1
- package/src/react/hooks/transactions/useCancelOrder.test.tsx +7 -4
- package/src/react/hooks/transactions/useCancelOrder.tsx +2 -1
- package/src/react/hooks/transactions/useCancelTransactionSteps.tsx +2 -2
- package/src/react/hooks/transactions/useProcessStep.test.tsx +2 -2
- package/src/react/hooks/utils/__tests__/useEnsureCorrectChain.test.tsx +75 -0
- package/src/react/hooks/utils/index.ts +0 -1
- package/src/react/hooks/utils/useEnsureCorrectChain.ts +31 -34
- package/src/react/providers/index.tsx +12 -14
- package/src/react/providers/modal-provider.tsx +2 -2
- package/src/react/queries/__tests__/balanceOfCollectible.laos.test.ts +3 -3
- package/src/react/queries/__tests__/inventory.laos.test.ts +6 -3
- package/src/react/queries/__tests__/tokenBalances.laos.test.ts +123 -0
- package/src/react/queries/balanceOfCollectible.ts +2 -1
- package/src/react/queries/filters.ts +23 -28
- package/src/react/queries/index.ts +1 -0
- package/src/react/queries/inventory.ts +63 -243
- package/src/react/queries/listCollectibles.ts +22 -48
- package/src/react/queries/listCollections.ts +10 -13
- package/src/react/queries/listOffersForCollectible.ts +101 -0
- package/src/react/queries/marketplaceConfig.ts +6 -2
- package/src/react/queries/tokenBalances.ts +85 -0
- package/src/react/ssr/__tests__/__snapshots__/create-ssr-client.test.ts.snap +4 -4
- package/src/react/ui/components/_internals/action-button/ActionButton.stories.tsx +8 -8
- package/src/react/ui/components/_internals/action-button/ActionButton.tsx +6 -9
- package/src/react/ui/components/_internals/action-button/__tests__/NonOwnerActions.test.tsx +4 -4
- package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +6 -6
- package/src/react/ui/components/_internals/custom-select/__tests__/CustomSelect.test.tsx +1 -1
- package/src/react/ui/components/marketplace-collectible-card/CollectibleCard.tsx +4 -3
- package/src/react/ui/components/marketplace-collectible-card/CollectibleCardSkeleton.tsx +13 -2
- package/src/react/ui/components/marketplace-collectible-card/components/ActionButtonWrapper.tsx +4 -7
- package/src/react/ui/components/marketplace-collectible-card/components/BaseCard.tsx +14 -5
- package/src/react/ui/components/marketplace-collectible-card/components/footer/Footer.tsx +179 -0
- package/src/react/ui/components/marketplace-collectible-card/components/footer/components/FooterName.tsx +103 -0
- package/src/react/ui/components/marketplace-collectible-card/components/footer/components/PriceDisplay.tsx +80 -0
- package/src/react/ui/components/marketplace-collectible-card/components/footer/components/SaleDetailsPill.tsx +29 -0
- package/src/react/ui/components/marketplace-collectible-card/components/footer/components/TokenTypeBalancePill.tsx +30 -0
- package/src/react/ui/components/marketplace-collectible-card/components/footer/components/index.ts +4 -0
- package/src/react/ui/components/marketplace-collectible-card/components/footer/index.ts +2 -0
- package/src/react/ui/components/marketplace-collectible-card/types.ts +18 -6
- package/src/react/ui/components/marketplace-collectible-card/variants/MarketCard.tsx +11 -23
- package/src/react/ui/components/marketplace-collectible-card/variants/NonTradableInventoryCard.tsx +42 -0
- package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +15 -12
- package/src/react/ui/modals/BuyModal/__tests__/BuyModalRouter.test.tsx +10 -10
- package/src/react/ui/modals/BuyModal/__tests__/ERC1155ShopModal.test.tsx +3 -3
- package/src/react/ui/modals/BuyModal/__tests__/Modal.test.tsx.bak +3 -3
- package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +6 -6
- package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +3 -3
- package/src/react/ui/modals/BuyModal/components/BuyModalRouter.tsx +5 -5
- package/src/react/ui/modals/BuyModal/components/ERC1155BuyModal.tsx +2 -2
- package/src/react/ui/modals/BuyModal/components/ERC1155QuantityModal.tsx +8 -8
- package/src/react/ui/modals/BuyModal/components/ERC1155ShopModal.tsx +2 -2
- package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +13 -2
- package/src/react/ui/modals/BuyModal/store.ts +6 -6
- package/src/react/ui/modals/CreateListingModal/hooks/useCreateListing.tsx +2 -1
- package/src/react/ui/modals/CreateListingModal/hooks/useTransactionSteps.tsx +1 -1
- package/src/react/ui/modals/MakeOfferModal/Modal.tsx +87 -89
- package/src/react/ui/modals/MakeOfferModal/hooks/useMakeOffer.tsx +2 -1
- package/src/react/ui/modals/MakeOfferModal/hooks/useTransactionSteps.tsx +1 -1
- package/src/react/ui/modals/SellModal/hooks/useGetTokenApproval.tsx +2 -1
- package/src/react/ui/modals/SellModal/hooks/useSell.tsx +2 -1
- package/src/react/ui/modals/_internal/components/actionModal/ActionModal.test.tsx +20 -9
- package/src/react/ui/modals/_internal/components/priceInput/index.tsx +2 -2
- package/src/react/ui/modals/_internal/components/switchChainErrorModal/__tests__/SwitchChainErrorModal.test.tsx +80 -0
- package/src/react/ui/modals/_internal/components/switchChainErrorModal/index.tsx +64 -0
- package/src/react/ui/modals/_internal/components/switchChainErrorModal/store.ts +42 -0
- package/src/react/ui/modals/_internal/types.ts +0 -1
- package/src/styles/styles.ts +46 -24
- package/src/types/new-marketplace-types.ts +9 -18
- package/src/types/types.ts +1 -1
- package/test/globalSetup.ts +1 -1
- package/test/test-utils.tsx +1 -0
- package/dist/BellIcon-Cb9YEUzJ.js.map +0 -1
- package/dist/CollectibleCard-CYyWzk6u.d.ts +0 -8
- package/dist/api-BmEQfSQa.js.map +0 -1
- package/dist/create-config-6uynwTeb.js.map +0 -1
- package/dist/marketplace-logos-D8t86gsW.js.map +0 -1
- package/dist/marketplace.gen-JzNYpM0U.js.map +0 -1
- package/dist/marketplaceConfig-sNh-MA5M.js.map +0 -1
- package/dist/network-DnBEe1Ur.js.map +0 -1
- package/dist/queries-BYT4GJw3.js.map +0 -1
- package/dist/react-Ceq8mamy.js.map +0 -1
- package/dist/transaction-CC2KxNF6.js.map +0 -1
- package/dist/types-G2PWxiJR.js.map +0 -1
- package/dist/utils-CKJd-CRf.js.map +0 -1
- package/dist/utils-wquIhK6T.js.map +0 -1
- package/src/react/hooks/utils/useSwitchChainWithModal.ts +0 -38
- package/src/react/ui/components/marketplace-collectible-card/Footer.tsx +0 -238
- package/src/react/ui/modals/_internal/components/switchChainModal/__tests__/SwitchChainModal.test.tsx +0 -117
- package/src/react/ui/modals/_internal/components/switchChainModal/index.tsx +0 -124
- package/src/react/ui/modals/_internal/components/switchChainModal/store.ts +0 -71
- /package/dist/{abi-Wr_aTZFi.js → abi-DYsUABe6.js} +0 -0
- /package/dist/{index-q7f-WDBS.d.ts → index-Cg5cFzs-.d.ts} +0 -0
- /package/dist/{wagmi-BhP3mdhP.js → wagmi-Bseovd6Q.js} +0 -0
|
@@ -1,56 +1,39 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
Page as IndexerPage,
|
|
4
|
-
TokenBalance,
|
|
5
|
-
} from '@0xsequence/indexer';
|
|
6
|
-
import { infiniteQueryOptions } from '@tanstack/react-query';
|
|
1
|
+
import type { ContractInfo, TokenBalance } from '@0xsequence/indexer';
|
|
2
|
+
import { queryOptions } from '@tanstack/react-query';
|
|
7
3
|
import type { Address } from 'viem';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
type ContractType,
|
|
12
|
-
getIndexerClient,
|
|
13
|
-
LaosAPI,
|
|
14
|
-
} from '../_internal';
|
|
15
|
-
import { fetchListCollectibles } from './listCollectibles';
|
|
4
|
+
import type { Page, SdkConfig } from '../../types';
|
|
5
|
+
import { compareAddress } from '../../utils';
|
|
6
|
+
import { type ContractType, getQueryClient } from '../_internal';
|
|
16
7
|
import { fetchMarketplaceConfig } from './marketplaceConfig';
|
|
8
|
+
import { tokenBalancesOptions } from './tokenBalances';
|
|
17
9
|
|
|
18
10
|
export interface UseInventoryArgs {
|
|
19
11
|
accountAddress: Address;
|
|
20
12
|
collectionAddress: Address;
|
|
21
13
|
chainId: number;
|
|
22
14
|
isLaos721?: boolean;
|
|
15
|
+
includeNonTradable?: boolean;
|
|
23
16
|
query?: {
|
|
24
17
|
enabled?: boolean;
|
|
18
|
+
page?: number;
|
|
19
|
+
pageSize?: number;
|
|
25
20
|
};
|
|
26
21
|
}
|
|
27
22
|
|
|
28
|
-
// Maintain collection state across calls
|
|
29
|
-
interface InventoryState {
|
|
30
|
-
seenTokenIds: Set<string>;
|
|
31
|
-
marketplaceFinished: boolean;
|
|
32
|
-
// Track if we've already fetched all indexer tokens
|
|
33
|
-
indexerTokensFetched: boolean;
|
|
34
|
-
// Store the token balances from the indexer
|
|
35
|
-
indexerTokenBalances: Map<string, CollectibleWithBalance>;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// Store state per collection
|
|
39
|
-
const stateByCollection = new Map<string, InventoryState>();
|
|
40
|
-
|
|
41
|
-
// Test helper to clear state between tests
|
|
42
|
-
export const clearInventoryState = () => {
|
|
43
|
-
stateByCollection.clear();
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
const getCollectionKey = (args: UseInventoryArgs) =>
|
|
47
|
-
`${args.chainId}-${args.collectionAddress}-${args.accountAddress}`;
|
|
48
|
-
|
|
49
23
|
interface GetInventoryArgs extends Omit<UseInventoryArgs, 'query'> {
|
|
50
24
|
isLaos721: boolean;
|
|
51
25
|
}
|
|
52
26
|
|
|
53
|
-
interface CollectibleWithBalance
|
|
27
|
+
interface CollectibleWithBalance {
|
|
28
|
+
metadata: {
|
|
29
|
+
tokenId: string;
|
|
30
|
+
attributes: Array<any>;
|
|
31
|
+
image?: string;
|
|
32
|
+
name: string;
|
|
33
|
+
description?: string;
|
|
34
|
+
video?: string;
|
|
35
|
+
audio?: string;
|
|
36
|
+
};
|
|
54
37
|
balance: string;
|
|
55
38
|
contractInfo?: ContractInfo;
|
|
56
39
|
contractType: ContractType.ERC1155 | ContractType.ERC721;
|
|
@@ -59,20 +42,7 @@ interface CollectibleWithBalance extends CollectibleOrder {
|
|
|
59
42
|
export interface CollectiblesResponse {
|
|
60
43
|
collectibles: CollectibleWithBalance[];
|
|
61
44
|
page: Page;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
function getOrInitState(collectionKey: string): InventoryState {
|
|
65
|
-
if (!stateByCollection.has(collectionKey)) {
|
|
66
|
-
stateByCollection.set(collectionKey, {
|
|
67
|
-
seenTokenIds: new Set<string>(),
|
|
68
|
-
marketplaceFinished: false,
|
|
69
|
-
indexerTokensFetched: false,
|
|
70
|
-
indexerTokenBalances: new Map(),
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// biome-ignore lint/style/noNonNullAssertion: guaranteed to exist, by the above init
|
|
75
|
-
return stateByCollection.get(collectionKey)!;
|
|
45
|
+
isTradable: boolean;
|
|
76
46
|
}
|
|
77
47
|
|
|
78
48
|
function collectibleFromTokenBalance(
|
|
@@ -96,248 +66,98 @@ function collectibleFromTokenBalance(
|
|
|
96
66
|
};
|
|
97
67
|
}
|
|
98
68
|
|
|
99
|
-
async function
|
|
69
|
+
async function fetchIndexerTokens(
|
|
100
70
|
chainId: number,
|
|
101
71
|
accountAddress: Address,
|
|
102
72
|
collectionAddress: Address,
|
|
103
73
|
config: SdkConfig,
|
|
104
|
-
state: InventoryState,
|
|
105
74
|
isLaos721: boolean,
|
|
106
|
-
): Promise<
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
{
|
|
117
|
-
column: 'CREATED_AT',
|
|
118
|
-
order: 'DESC',
|
|
119
|
-
},
|
|
120
|
-
],
|
|
75
|
+
): Promise<{ collectibles: CollectibleWithBalance[] }> {
|
|
76
|
+
const queryClient = getQueryClient();
|
|
77
|
+
const balances = await queryClient.fetchQuery(
|
|
78
|
+
tokenBalancesOptions(
|
|
79
|
+
{
|
|
80
|
+
collectionAddress,
|
|
81
|
+
userAddress: accountAddress,
|
|
82
|
+
chainId,
|
|
83
|
+
isLaos721,
|
|
84
|
+
includeMetadata: true,
|
|
121
85
|
},
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
for (const balance of balances) {
|
|
125
|
-
if (balance.tokenID) {
|
|
126
|
-
state.indexerTokenBalances.set(
|
|
127
|
-
balance.tokenID,
|
|
128
|
-
collectibleFromTokenBalance(balance),
|
|
129
|
-
);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
state.indexerTokensFetched = true;
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
const indexerClient = getIndexerClient(chainId, config);
|
|
138
|
-
|
|
139
|
-
let page: IndexerPage = {
|
|
140
|
-
pageSize: 50,
|
|
141
|
-
};
|
|
142
|
-
|
|
143
|
-
while (true) {
|
|
144
|
-
const { balances, page: nextPage } = await indexerClient.getTokenBalances({
|
|
145
|
-
accountAddress,
|
|
146
|
-
contractAddress: collectionAddress,
|
|
147
|
-
includeMetadata: true,
|
|
148
|
-
page: page,
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
for (const balance of balances) {
|
|
152
|
-
if (balance.tokenID) {
|
|
153
|
-
state.indexerTokenBalances.set(
|
|
154
|
-
balance.tokenID,
|
|
155
|
-
collectibleFromTokenBalance(balance),
|
|
156
|
-
);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
if (!nextPage.more) {
|
|
161
|
-
break;
|
|
162
|
-
}
|
|
163
|
-
page = nextPage;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
state.indexerTokensFetched = true;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
// Process indexer tokens that we haven't seen yet
|
|
170
|
-
function processRemainingIndexerTokens(
|
|
171
|
-
state: InventoryState,
|
|
172
|
-
page: Page,
|
|
173
|
-
): CollectiblesResponse {
|
|
174
|
-
const allTokens = Array.from(state.indexerTokenBalances.values());
|
|
175
|
-
|
|
176
|
-
// Filter out tokens that we've already seen
|
|
177
|
-
const newTokens = allTokens.filter(
|
|
178
|
-
(token) => !state.seenTokenIds.has(token.metadata.tokenId),
|
|
86
|
+
config,
|
|
87
|
+
),
|
|
179
88
|
);
|
|
180
89
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
const paginatedTokens = newTokens.slice(startIndex, endIndex);
|
|
185
|
-
|
|
186
|
-
// Add new token IDs to the set
|
|
187
|
-
for (const token of paginatedTokens) {
|
|
188
|
-
state.seenTokenIds.add(token.metadata.tokenId);
|
|
189
|
-
}
|
|
90
|
+
const collectibles = balances.map((balance) =>
|
|
91
|
+
collectibleFromTokenBalance(balance),
|
|
92
|
+
);
|
|
190
93
|
|
|
191
94
|
return {
|
|
192
|
-
collectibles
|
|
193
|
-
page: {
|
|
194
|
-
page: page.page,
|
|
195
|
-
pageSize: page.pageSize,
|
|
196
|
-
more: endIndex < newTokens.length,
|
|
197
|
-
},
|
|
95
|
+
collectibles,
|
|
198
96
|
};
|
|
199
97
|
}
|
|
200
98
|
|
|
201
|
-
function processMarketplaceCollectibles(
|
|
202
|
-
collectibles: CollectibleOrder[],
|
|
203
|
-
state: InventoryState,
|
|
204
|
-
page: Page,
|
|
205
|
-
): {
|
|
206
|
-
enrichedCollectibles: CollectibleWithBalance[];
|
|
207
|
-
missingTokens: CollectibleWithBalance[];
|
|
208
|
-
} {
|
|
209
|
-
// Add new token IDs to the set
|
|
210
|
-
for (const c of collectibles) {
|
|
211
|
-
state.seenTokenIds.add(c.metadata.tokenId);
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
// Enrich marketplace collectibles with balance data from indexer
|
|
215
|
-
const enrichedCollectibles = collectibles.map((c: CollectibleOrder) => {
|
|
216
|
-
const tokenId = c.metadata.tokenId;
|
|
217
|
-
const indexerData = state.indexerTokenBalances.get(tokenId);
|
|
218
|
-
|
|
219
|
-
return {
|
|
220
|
-
...c,
|
|
221
|
-
balance: indexerData?.balance,
|
|
222
|
-
contractInfo: indexerData?.contractInfo,
|
|
223
|
-
contractType: indexerData?.contractType,
|
|
224
|
-
} as CollectibleWithBalance;
|
|
225
|
-
});
|
|
226
|
-
|
|
227
|
-
// Check for missing tokens in the marketplace data
|
|
228
|
-
const marketplaceTokenIds = new Set(
|
|
229
|
-
enrichedCollectibles.map((c) => c.metadata.tokenId),
|
|
230
|
-
);
|
|
231
|
-
|
|
232
|
-
const missingTokens = Array.from(state.indexerTokenBalances.entries())
|
|
233
|
-
.filter(([tokenId]) => !marketplaceTokenIds.has(tokenId))
|
|
234
|
-
.map(([_, balance]) => balance)
|
|
235
|
-
.slice(0, page.pageSize);
|
|
236
|
-
|
|
237
|
-
return { enrichedCollectibles, missingTokens };
|
|
238
|
-
}
|
|
239
|
-
|
|
240
99
|
export async function fetchInventory(
|
|
241
100
|
args: GetInventoryArgs,
|
|
242
101
|
config: SdkConfig,
|
|
243
102
|
page: Page,
|
|
244
103
|
): Promise<CollectiblesResponse> {
|
|
245
104
|
const { accountAddress, collectionAddress, chainId, isLaos721 } = args;
|
|
246
|
-
const
|
|
247
|
-
const state = getOrInitState(collectionKey);
|
|
248
|
-
|
|
249
|
-
// On first run, fetch all pages from the indexer
|
|
250
|
-
if (!state.indexerTokensFetched) {
|
|
251
|
-
await fetchAllIndexerTokens(
|
|
252
|
-
chainId,
|
|
253
|
-
accountAddress,
|
|
254
|
-
collectionAddress,
|
|
255
|
-
config,
|
|
256
|
-
state,
|
|
257
|
-
isLaos721,
|
|
258
|
-
);
|
|
259
|
-
}
|
|
105
|
+
const marketplaceConfig = await fetchMarketplaceConfig({ config });
|
|
260
106
|
|
|
261
|
-
|
|
262
|
-
if (state.marketplaceFinished) {
|
|
263
|
-
return processRemainingIndexerTokens(state, page);
|
|
264
|
-
}
|
|
107
|
+
const marketCollections = marketplaceConfig?.market.collections || [];
|
|
265
108
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
const collectibles = await fetchListCollectibles(
|
|
269
|
-
{
|
|
270
|
-
chainId,
|
|
271
|
-
collectionAddress,
|
|
272
|
-
filter: {
|
|
273
|
-
inAccounts: [accountAddress],
|
|
274
|
-
includeEmpty: true,
|
|
275
|
-
},
|
|
276
|
-
side: OrderSide.listing,
|
|
277
|
-
config,
|
|
278
|
-
},
|
|
279
|
-
marketplaceConfig,
|
|
280
|
-
page,
|
|
109
|
+
const isMarketCollection = marketCollections.some((collection) =>
|
|
110
|
+
compareAddress(collection.itemsAddress, collectionAddress),
|
|
281
111
|
);
|
|
282
112
|
|
|
283
|
-
//
|
|
284
|
-
const
|
|
285
|
-
processMarketplaceCollectibles(collectibles.collectibles, state, page);
|
|
113
|
+
// Determine if this collection is tradable (market collection vs shop collection)
|
|
114
|
+
const isTradable = isMarketCollection;
|
|
286
115
|
|
|
287
|
-
//
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
pageSize: collectibles.page?.pageSize ?? page.pageSize,
|
|
296
|
-
more: missingTokens.length > 0,
|
|
297
|
-
},
|
|
298
|
-
};
|
|
299
|
-
}
|
|
116
|
+
// Fetch collectibles from indexer
|
|
117
|
+
const { collectibles } = await fetchIndexerTokens(
|
|
118
|
+
chainId,
|
|
119
|
+
accountAddress,
|
|
120
|
+
collectionAddress,
|
|
121
|
+
config,
|
|
122
|
+
isLaos721,
|
|
123
|
+
);
|
|
300
124
|
|
|
301
125
|
return {
|
|
302
|
-
collectibles
|
|
126
|
+
collectibles,
|
|
303
127
|
page: {
|
|
304
|
-
page:
|
|
305
|
-
pageSize:
|
|
306
|
-
more: Boolean(collectibles.page?.more),
|
|
128
|
+
page: page.page,
|
|
129
|
+
pageSize: page.pageSize,
|
|
307
130
|
},
|
|
131
|
+
isTradable,
|
|
308
132
|
};
|
|
309
133
|
}
|
|
310
134
|
|
|
311
135
|
export function inventoryOptions(args: UseInventoryArgs, config: SdkConfig) {
|
|
312
|
-
const collectionKey = getCollectionKey(args);
|
|
313
136
|
const enabledQuery = args.query?.enabled ?? true;
|
|
314
137
|
const enabled =
|
|
315
138
|
enabledQuery && !!args.accountAddress && !!args.collectionAddress;
|
|
316
139
|
|
|
317
|
-
return
|
|
140
|
+
return queryOptions({
|
|
318
141
|
queryKey: [
|
|
319
142
|
'inventory',
|
|
320
143
|
args.accountAddress,
|
|
321
144
|
args.collectionAddress,
|
|
322
145
|
args.chainId,
|
|
146
|
+
args.query?.page ?? 1,
|
|
147
|
+
args.query?.pageSize ?? 30,
|
|
323
148
|
],
|
|
324
|
-
queryFn: (
|
|
149
|
+
queryFn: () =>
|
|
325
150
|
fetchInventory(
|
|
326
151
|
{
|
|
327
152
|
...args,
|
|
328
153
|
isLaos721: args.isLaos721 ?? false,
|
|
329
154
|
},
|
|
330
155
|
config,
|
|
331
|
-
|
|
156
|
+
{
|
|
157
|
+
page: args.query?.page ?? 1,
|
|
158
|
+
pageSize: args.query?.pageSize ?? 30,
|
|
159
|
+
},
|
|
332
160
|
),
|
|
333
|
-
initialPageParam: { page: 1, pageSize: 30 } as Page,
|
|
334
|
-
getNextPageParam: (lastPage) =>
|
|
335
|
-
lastPage.page?.more ? lastPage.page : undefined,
|
|
336
161
|
enabled,
|
|
337
|
-
meta: {
|
|
338
|
-
onInvalidate: () => {
|
|
339
|
-
stateByCollection.delete(collectionKey);
|
|
340
|
-
},
|
|
341
|
-
},
|
|
342
162
|
});
|
|
343
163
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { infiniteQueryOptions } from '@tanstack/react-query';
|
|
2
2
|
import type { Address } from 'viem';
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
3
|
+
import type { Page, SdkConfig } from '../../types';
|
|
4
|
+
import type { CardType } from '../../types/types';
|
|
5
5
|
import { compareAddress } from '../../utils';
|
|
6
6
|
import type {
|
|
7
7
|
ListCollectiblesArgs,
|
|
@@ -14,17 +14,18 @@ import {
|
|
|
14
14
|
getMarketplaceClient,
|
|
15
15
|
OrderSide,
|
|
16
16
|
} from '../_internal';
|
|
17
|
-
import { fetchMarketplaceConfig } from '../queries/marketplaceConfig';
|
|
18
17
|
import type { StandardInfiniteQueryOptions } from '../types/query';
|
|
19
18
|
import { fetchBalances, type UseListBalancesArgs } from './listBalances';
|
|
19
|
+
import { fetchMarketplaceConfig } from './marketplaceConfig';
|
|
20
20
|
|
|
21
21
|
export interface FetchListCollectiblesParams
|
|
22
22
|
extends Omit<ListCollectiblesArgs, 'chainId' | 'contractAddress'> {
|
|
23
23
|
chainId: number;
|
|
24
24
|
collectionAddress: Address;
|
|
25
25
|
isLaos721?: boolean;
|
|
26
|
-
|
|
26
|
+
cardType?: CardType;
|
|
27
27
|
config: SdkConfig;
|
|
28
|
+
enabled?: boolean;
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
/**
|
|
@@ -32,11 +33,26 @@ export interface FetchListCollectiblesParams
|
|
|
32
33
|
*/
|
|
33
34
|
export async function fetchListCollectibles(
|
|
34
35
|
params: FetchListCollectiblesParams,
|
|
35
|
-
marketplaceConfig: MarketplaceConfig,
|
|
36
36
|
page: Page,
|
|
37
37
|
): Promise<ListCollectiblesReturn> {
|
|
38
38
|
const { collectionAddress, chainId, config, ...additionalApiParams } = params;
|
|
39
39
|
const marketplaceClient = getMarketplaceClient(config);
|
|
40
|
+
const marketplaceConfig = await fetchMarketplaceConfig({ config });
|
|
41
|
+
const isMarketCollection = marketplaceConfig?.market.collections.some(
|
|
42
|
+
(collection) => compareAddress(collection.itemsAddress, collectionAddress),
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
// If it's not a market collection, return an empty list. those collections are not compatible with the ListCollectibles endpoint.
|
|
46
|
+
if (params.enabled === false || !isMarketCollection) {
|
|
47
|
+
return {
|
|
48
|
+
collectibles: [],
|
|
49
|
+
page: {
|
|
50
|
+
page: 1,
|
|
51
|
+
pageSize: 30,
|
|
52
|
+
more: false,
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
40
56
|
|
|
41
57
|
const apiArgs: ListCollectiblesArgs = {
|
|
42
58
|
contractAddress: collectionAddress,
|
|
@@ -45,43 +61,6 @@ export async function fetchListCollectibles(
|
|
|
45
61
|
...additionalApiParams,
|
|
46
62
|
};
|
|
47
63
|
|
|
48
|
-
if (params.marketplaceType === 'shop') {
|
|
49
|
-
const shopCollection = marketplaceConfig.shop.collections.find(
|
|
50
|
-
(collection) =>
|
|
51
|
-
compareAddress(collection.itemsAddress, params.collectionAddress),
|
|
52
|
-
);
|
|
53
|
-
|
|
54
|
-
if (!shopCollection) {
|
|
55
|
-
return { collectibles: [] };
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const primarySaleItemsList = await marketplaceClient.listPrimarySaleItems(
|
|
59
|
-
{
|
|
60
|
-
chainId: params.chainId.toString(),
|
|
61
|
-
primarySaleContractAddress: shopCollection.saleAddress as Address,
|
|
62
|
-
},
|
|
63
|
-
marketplaceConfig,
|
|
64
|
-
);
|
|
65
|
-
|
|
66
|
-
return {
|
|
67
|
-
collectibles: primarySaleItemsList.primarySaleItems.map((item) => ({
|
|
68
|
-
metadata: item.metadata,
|
|
69
|
-
primarySale: {
|
|
70
|
-
price: {
|
|
71
|
-
amount: item.primarySaleItem.priceAmount,
|
|
72
|
-
formatted: item.primarySaleItem.priceAmountFormatted,
|
|
73
|
-
decimals: item.primarySaleItem.priceDecimals,
|
|
74
|
-
currencyAddress: item.primarySaleItem.currencyAddress,
|
|
75
|
-
},
|
|
76
|
-
startDate: item.primarySaleItem.startDate,
|
|
77
|
-
endDate: item.primarySaleItem.endDate,
|
|
78
|
-
supplyCap: item.primarySaleItem.supply,
|
|
79
|
-
itemType: item.primarySaleItem.itemType,
|
|
80
|
-
},
|
|
81
|
-
})),
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
|
|
85
64
|
if (params.isLaos721 && params.side === OrderSide.listing) {
|
|
86
65
|
try {
|
|
87
66
|
const fetchBalancesArgs = {
|
|
@@ -144,10 +123,6 @@ export function listCollectiblesQueryOptions(
|
|
|
144
123
|
return infiniteQueryOptions({
|
|
145
124
|
queryKey: [...collectableKeys.lists, params],
|
|
146
125
|
queryFn: async ({ pageParam }) => {
|
|
147
|
-
const marketplaceConfig = await fetchMarketplaceConfig({
|
|
148
|
-
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
149
|
-
config: params.config!,
|
|
150
|
-
});
|
|
151
126
|
return fetchListCollectibles(
|
|
152
127
|
{
|
|
153
128
|
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
@@ -160,9 +135,8 @@ export function listCollectiblesQueryOptions(
|
|
|
160
135
|
side: params.side!,
|
|
161
136
|
filter: params.filter,
|
|
162
137
|
isLaos721: params.isLaos721,
|
|
163
|
-
|
|
138
|
+
cardType: params.cardType,
|
|
164
139
|
},
|
|
165
|
-
marketplaceConfig,
|
|
166
140
|
pageParam,
|
|
167
141
|
);
|
|
168
142
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ContractInfo } from '@0xsequence/metadata';
|
|
2
2
|
import { queryOptions, skipToken } from '@tanstack/react-query';
|
|
3
|
-
import type {
|
|
3
|
+
import type { CardType, SdkConfig } from '../../types';
|
|
4
4
|
import type {
|
|
5
5
|
MarketCollection,
|
|
6
6
|
MarketplaceConfig,
|
|
@@ -22,7 +22,7 @@ const allCollections = (marketplaceConfig: MarketplaceConfig) => {
|
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
export interface FetchListCollectionsParams {
|
|
25
|
-
|
|
25
|
+
cardType?: CardType;
|
|
26
26
|
marketplaceConfig: MarketplaceConfig;
|
|
27
27
|
config: SdkConfig;
|
|
28
28
|
}
|
|
@@ -31,7 +31,7 @@ export interface FetchListCollectionsParams {
|
|
|
31
31
|
* Fetches collections from the metadata API with marketplace config filtering
|
|
32
32
|
*/
|
|
33
33
|
export async function fetchListCollections(params: FetchListCollectionsParams) {
|
|
34
|
-
const {
|
|
34
|
+
const { cardType, marketplaceConfig, config } = params;
|
|
35
35
|
const metadataClient = getMetadataClient(config);
|
|
36
36
|
|
|
37
37
|
let collections = allCollections(marketplaceConfig);
|
|
@@ -40,9 +40,9 @@ export async function fetchListCollections(params: FetchListCollectionsParams) {
|
|
|
40
40
|
return [];
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
if (
|
|
43
|
+
if (cardType) {
|
|
44
44
|
collections = collections.filter(
|
|
45
|
-
(collection) => collection.
|
|
45
|
+
(collection) => collection.cardType === cardType,
|
|
46
46
|
);
|
|
47
47
|
}
|
|
48
48
|
|
|
@@ -131,7 +131,7 @@ export function listCollectionsQueryOptions(
|
|
|
131
131
|
marketplaceConfig: params.marketplaceConfig!,
|
|
132
132
|
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
133
133
|
config: params.config!,
|
|
134
|
-
|
|
134
|
+
cardType: params.cardType,
|
|
135
135
|
})
|
|
136
136
|
: skipToken,
|
|
137
137
|
...params.query,
|
|
@@ -141,25 +141,22 @@ export function listCollectionsQueryOptions(
|
|
|
141
141
|
|
|
142
142
|
// Keep old function for backward compatibility during migration
|
|
143
143
|
export const listCollectionsOptions = ({
|
|
144
|
-
|
|
144
|
+
cardType,
|
|
145
145
|
marketplaceConfig,
|
|
146
146
|
config,
|
|
147
147
|
}: {
|
|
148
|
-
|
|
148
|
+
cardType?: CardType;
|
|
149
149
|
marketplaceConfig: MarketplaceConfig | undefined;
|
|
150
150
|
config: SdkConfig;
|
|
151
151
|
}) => {
|
|
152
152
|
return queryOptions({
|
|
153
|
-
queryKey: [
|
|
154
|
-
...collectionKeys.list,
|
|
155
|
-
{ marketplaceType, marketplaceConfig, config },
|
|
156
|
-
],
|
|
153
|
+
queryKey: [...collectionKeys.list, { cardType, marketplaceConfig, config }],
|
|
157
154
|
queryFn: marketplaceConfig
|
|
158
155
|
? () =>
|
|
159
156
|
fetchListCollections({
|
|
160
157
|
marketplaceConfig,
|
|
161
158
|
config,
|
|
162
|
-
|
|
159
|
+
cardType,
|
|
163
160
|
})
|
|
164
161
|
: skipToken,
|
|
165
162
|
enabled: Boolean(marketplaceConfig),
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { queryOptions } from '@tanstack/react-query';
|
|
2
|
+
import type { Address } from 'viem';
|
|
3
|
+
import type { SdkConfig } from '../../types';
|
|
4
|
+
import type {
|
|
5
|
+
ListCollectibleOffersReturn,
|
|
6
|
+
ListOffersForCollectibleArgs,
|
|
7
|
+
Page,
|
|
8
|
+
SortBy,
|
|
9
|
+
ValuesOptional,
|
|
10
|
+
} from '../_internal';
|
|
11
|
+
import { collectableKeys, getMarketplaceClient } from '../_internal';
|
|
12
|
+
import type { StandardQueryOptions } from '../types/query';
|
|
13
|
+
|
|
14
|
+
export interface FetchListOffersForCollectibleParams
|
|
15
|
+
extends Omit<
|
|
16
|
+
ListOffersForCollectibleArgs,
|
|
17
|
+
'chainId' | 'contractAddress' | 'tokenId'
|
|
18
|
+
> {
|
|
19
|
+
chainId: number;
|
|
20
|
+
collectionAddress: Address;
|
|
21
|
+
collectibleId: string;
|
|
22
|
+
config: SdkConfig;
|
|
23
|
+
sort?: Array<SortBy>;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Fetches offers for a specific collectible from the Marketplace API
|
|
28
|
+
*/
|
|
29
|
+
export async function fetchListOffersForCollectible(
|
|
30
|
+
params: FetchListOffersForCollectibleParams,
|
|
31
|
+
): Promise<ListCollectibleOffersReturn> {
|
|
32
|
+
const {
|
|
33
|
+
collectionAddress,
|
|
34
|
+
chainId,
|
|
35
|
+
collectibleId,
|
|
36
|
+
config,
|
|
37
|
+
sort,
|
|
38
|
+
page,
|
|
39
|
+
...additionalApiParams
|
|
40
|
+
} = params;
|
|
41
|
+
const marketplaceClient = getMarketplaceClient(config);
|
|
42
|
+
|
|
43
|
+
const finalSort = sort || (page && 'sort' in page ? page.sort : undefined);
|
|
44
|
+
|
|
45
|
+
let finalPage: Page | undefined;
|
|
46
|
+
if (page || finalSort) {
|
|
47
|
+
finalPage = {
|
|
48
|
+
page: page?.page ?? 1,
|
|
49
|
+
pageSize: page?.pageSize ?? 20,
|
|
50
|
+
...(page?.more && { more: page.more }),
|
|
51
|
+
...(finalSort && { sort: finalSort }),
|
|
52
|
+
} as Page;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const apiArgs: ListOffersForCollectibleArgs = {
|
|
56
|
+
contractAddress: collectionAddress,
|
|
57
|
+
chainId: String(chainId),
|
|
58
|
+
tokenId: collectibleId,
|
|
59
|
+
page: finalPage,
|
|
60
|
+
...additionalApiParams,
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
return await marketplaceClient.listCollectibleOffers(apiArgs);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export type ListOffersForCollectibleQueryOptions =
|
|
67
|
+
ValuesOptional<FetchListOffersForCollectibleParams> & {
|
|
68
|
+
query?: StandardQueryOptions;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
export function listOffersForCollectibleQueryOptions(
|
|
72
|
+
params: ListOffersForCollectibleQueryOptions,
|
|
73
|
+
) {
|
|
74
|
+
const enabled = Boolean(
|
|
75
|
+
params.collectionAddress &&
|
|
76
|
+
params.chainId &&
|
|
77
|
+
params.collectibleId &&
|
|
78
|
+
params.config &&
|
|
79
|
+
(params.query?.enabled ?? true),
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
return queryOptions({
|
|
83
|
+
queryKey: [...collectableKeys.offers, params],
|
|
84
|
+
queryFn: () =>
|
|
85
|
+
fetchListOffersForCollectible({
|
|
86
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
87
|
+
chainId: params.chainId!,
|
|
88
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
89
|
+
collectionAddress: params.collectionAddress!,
|
|
90
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
91
|
+
collectibleId: params.collectibleId!,
|
|
92
|
+
// biome-ignore lint/style/noNonNullAssertion: The enabled check above ensures these are not undefined
|
|
93
|
+
config: params.config!,
|
|
94
|
+
filter: params.filter,
|
|
95
|
+
page: params.page,
|
|
96
|
+
sort: params.sort,
|
|
97
|
+
}),
|
|
98
|
+
...params.query,
|
|
99
|
+
enabled,
|
|
100
|
+
});
|
|
101
|
+
}
|