@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
|
@@ -40,9 +40,9 @@ describe('useInventory', () => {
|
|
|
40
40
|
expect(result.current.isLoading).toBe(false);
|
|
41
41
|
});
|
|
42
42
|
|
|
43
|
-
// Verify the data is defined and has
|
|
43
|
+
// Verify the data is defined and has collectibles
|
|
44
44
|
expect(result.current.data).toBeDefined();
|
|
45
|
-
expect(result.current.data?.
|
|
45
|
+
expect(result.current.data?.collectibles).toBeDefined();
|
|
46
46
|
expect(result.current.error).toBeNull();
|
|
47
47
|
});
|
|
48
48
|
|
|
@@ -156,102 +156,7 @@ describe('useInventory', () => {
|
|
|
156
156
|
});
|
|
157
157
|
|
|
158
158
|
expect(result.current.data).toBeDefined();
|
|
159
|
-
expect(result.current.data?.
|
|
159
|
+
expect(result.current.data?.collectibles).toBeDefined();
|
|
160
160
|
expect(result.current.isSuccess).toBe(true);
|
|
161
161
|
});
|
|
162
|
-
|
|
163
|
-
it('should support pagination with fetchNextPage', async () => {
|
|
164
|
-
// Simplified test for pagination
|
|
165
|
-
// Set up mock data for first and second pages
|
|
166
|
-
const page1Data = {
|
|
167
|
-
collectibles: [
|
|
168
|
-
{
|
|
169
|
-
...mockCollectibleOrder,
|
|
170
|
-
metadata: {
|
|
171
|
-
...mockCollectibleOrder.metadata,
|
|
172
|
-
tokenId: '1',
|
|
173
|
-
name: 'Token 1',
|
|
174
|
-
},
|
|
175
|
-
},
|
|
176
|
-
],
|
|
177
|
-
page: {
|
|
178
|
-
page: 1,
|
|
179
|
-
pageSize: 10,
|
|
180
|
-
more: true, // indicate there's a next page
|
|
181
|
-
},
|
|
182
|
-
};
|
|
183
|
-
|
|
184
|
-
// Mock API to return data for the first page
|
|
185
|
-
server.use(
|
|
186
|
-
http.post(
|
|
187
|
-
mockMarketplaceEndpoint('ListCollectibles'),
|
|
188
|
-
async ({ request }) => {
|
|
189
|
-
const body = (await request.json()) as { page?: number };
|
|
190
|
-
const pageNumber = body?.page || 1;
|
|
191
|
-
|
|
192
|
-
// Return first page data
|
|
193
|
-
if (pageNumber === 1) {
|
|
194
|
-
return HttpResponse.json(page1Data);
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
// For second page, return empty collectibles but with more=false
|
|
198
|
-
return HttpResponse.json({
|
|
199
|
-
collectibles: [],
|
|
200
|
-
page: {
|
|
201
|
-
page: 2,
|
|
202
|
-
pageSize: 10,
|
|
203
|
-
more: false,
|
|
204
|
-
},
|
|
205
|
-
});
|
|
206
|
-
},
|
|
207
|
-
),
|
|
208
|
-
);
|
|
209
|
-
|
|
210
|
-
// Use unique test args to avoid caching issues
|
|
211
|
-
const testArgs = {
|
|
212
|
-
...defaultArgs,
|
|
213
|
-
accountAddress: '0xabcdef1234567890abcdef1234567890abcdef12' as Address,
|
|
214
|
-
collectionAddress:
|
|
215
|
-
'0xabcdef1234567890abcdef1234567890abcdef12' as Address,
|
|
216
|
-
};
|
|
217
|
-
|
|
218
|
-
const { result } = renderHook(() => useInventory(testArgs));
|
|
219
|
-
|
|
220
|
-
// Wait for the first page to load
|
|
221
|
-
await waitFor(
|
|
222
|
-
() => {
|
|
223
|
-
expect(result.current.isLoading).toBe(false);
|
|
224
|
-
expect(result.current.data?.pages).toBeDefined();
|
|
225
|
-
},
|
|
226
|
-
{ timeout: 5000 },
|
|
227
|
-
);
|
|
228
|
-
|
|
229
|
-
// Verify first page data loaded correctly
|
|
230
|
-
expect(result.current.data?.pages[0].collectibles).toBeDefined();
|
|
231
|
-
expect(result.current.data?.pages[0].collectibles.length).toBeGreaterThan(
|
|
232
|
-
0,
|
|
233
|
-
);
|
|
234
|
-
// Check that at least one item has the expected tokenId
|
|
235
|
-
expect(
|
|
236
|
-
result.current.data?.pages[0].collectibles.some(
|
|
237
|
-
(c) => c.metadata.tokenId === '1',
|
|
238
|
-
),
|
|
239
|
-
).toBe(true);
|
|
240
|
-
expect(result.current.hasNextPage).toBe(true);
|
|
241
|
-
|
|
242
|
-
// Fetch the next page
|
|
243
|
-
await result.current.fetchNextPage();
|
|
244
|
-
|
|
245
|
-
// Wait for second page to load
|
|
246
|
-
await waitFor(
|
|
247
|
-
() => {
|
|
248
|
-
expect(result.current.data?.pages.length).toBe(2);
|
|
249
|
-
},
|
|
250
|
-
{ timeout: 5000 },
|
|
251
|
-
);
|
|
252
|
-
|
|
253
|
-
// For an empty second page we just verify it exists
|
|
254
|
-
expect(result.current.data?.pages[1]).toBeDefined();
|
|
255
|
-
expect(result.current.hasNextPage).toBe(false); // No more pages
|
|
256
|
-
});
|
|
257
162
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useQuery } from '@tanstack/react-query';
|
|
2
2
|
import { ContractType } from '../../../_internal';
|
|
3
3
|
import {
|
|
4
4
|
inventoryOptions,
|
|
@@ -17,5 +17,5 @@ export function useInventory(args: UseInventoryArgs) {
|
|
|
17
17
|
c.itemsAddress === args.collectionAddress && c.chainId === args.chainId,
|
|
18
18
|
)?.contractType === ContractType.LAOS_ERC_721;
|
|
19
19
|
|
|
20
|
-
return
|
|
20
|
+
return useQuery(inventoryOptions({ ...args, isLaos721 }, config));
|
|
21
21
|
}
|
|
@@ -102,7 +102,7 @@ export function useListMarketCardData({
|
|
|
102
102
|
collectionAddress,
|
|
103
103
|
collectionType,
|
|
104
104
|
cardLoading: collectiblesListIsLoading || balanceLoading,
|
|
105
|
-
|
|
105
|
+
cardType: 'market',
|
|
106
106
|
orderbookKind,
|
|
107
107
|
collectible,
|
|
108
108
|
onCollectibleClick,
|
|
@@ -1,55 +1,80 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useQuery } from '@tanstack/react-query';
|
|
4
|
+
import type { Optional } from '../../../_internal';
|
|
3
5
|
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
} from '../../../
|
|
8
|
-
import type { OrderFilter, Page } from '../../../_internal/api/marketplace.gen';
|
|
6
|
+
type FetchListOffersForCollectibleParams,
|
|
7
|
+
type ListOffersForCollectibleQueryOptions,
|
|
8
|
+
listOffersForCollectibleQueryOptions,
|
|
9
|
+
} from '../../../queries/listOffersForCollectible';
|
|
9
10
|
import { useConfig } from '../../config/useConfig';
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
collectibleId: string;
|
|
15
|
-
filter?: OrderFilter;
|
|
16
|
-
page?: Page;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export type UseListOffersForCollectibleReturn = Awaited<
|
|
20
|
-
ReturnType<typeof fetchListOffersForCollectible>
|
|
12
|
+
export type UseListOffersForCollectibleParams = Optional<
|
|
13
|
+
ListOffersForCollectibleQueryOptions,
|
|
14
|
+
'config'
|
|
21
15
|
>;
|
|
22
16
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Hook to fetch offers for a specific collectible
|
|
19
|
+
*
|
|
20
|
+
* Fetches offers for a specific collectible from the marketplace.
|
|
21
|
+
*
|
|
22
|
+
* @param params - Configuration parameters
|
|
23
|
+
* @param params.chainId - The chain ID (must be number, e.g., 1 for Ethereum, 137 for Polygon)
|
|
24
|
+
* @param params.collectionAddress - The collection contract address
|
|
25
|
+
* @param params.collectibleId - The specific collectible ID to fetch offers for
|
|
26
|
+
* @param params.filter - Optional filtering parameters
|
|
27
|
+
* @param params.page - Optional pagination parameters
|
|
28
|
+
* @param params.query - Optional React Query configuration
|
|
29
|
+
*
|
|
30
|
+
* @returns Query result containing offers data
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* Basic usage:
|
|
34
|
+
* ```typescript
|
|
35
|
+
* const { data, isLoading } = useListOffersForCollectible({
|
|
36
|
+
* chainId: 137,
|
|
37
|
+
* collectionAddress: '0x...',
|
|
38
|
+
* collectibleId: '1'
|
|
39
|
+
* })
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* With filtering:
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const { data } = useListOffersForCollectible({
|
|
46
|
+
* chainId: 1,
|
|
47
|
+
* collectionAddress: '0x...',
|
|
48
|
+
* collectibleId: '1',
|
|
49
|
+
* filter: {
|
|
50
|
+
* marketplace: [MarketplaceKind.sequence_marketplace_v2]
|
|
51
|
+
* }
|
|
52
|
+
* })
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export function useListOffersForCollectible(
|
|
56
|
+
params: UseListOffersForCollectibleParams,
|
|
57
|
+
) {
|
|
58
|
+
const defaultConfig = useConfig();
|
|
59
|
+
|
|
60
|
+
const { config = defaultConfig, ...rest } = params;
|
|
38
61
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
) => {
|
|
43
|
-
return queryOptions({
|
|
44
|
-
queryKey: [...collectableKeys.offers, args, config],
|
|
45
|
-
queryFn: () => fetchListOffersForCollectible(config, args),
|
|
62
|
+
const queryOptions = listOffersForCollectibleQueryOptions({
|
|
63
|
+
config,
|
|
64
|
+
...rest,
|
|
46
65
|
});
|
|
47
|
-
};
|
|
48
66
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
)
|
|
52
|
-
|
|
67
|
+
return useQuery({
|
|
68
|
+
...queryOptions,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
53
71
|
|
|
54
|
-
|
|
72
|
+
export { listOffersForCollectibleQueryOptions };
|
|
73
|
+
|
|
74
|
+
export type {
|
|
75
|
+
FetchListOffersForCollectibleParams,
|
|
76
|
+
ListOffersForCollectibleQueryOptions,
|
|
55
77
|
};
|
|
78
|
+
|
|
79
|
+
// Legacy export for backward compatibility during migration
|
|
80
|
+
export type UseListOffersForCollectibleArgs = UseListOffersForCollectibleParams;
|
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
import type { Address } from 'viem';
|
|
2
2
|
import { useReadContract } from 'wagmi';
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
ContractType,
|
|
5
|
+
type PrimarySaleItem,
|
|
6
|
+
type TokenMetadata,
|
|
7
|
+
} from '../../../_internal';
|
|
4
8
|
import type { ShopCollectibleCardProps } from '../../../ui/components/marketplace-collectible-card/types';
|
|
5
9
|
import { useSalesContractABI } from '../../contracts/useSalesContractABI';
|
|
6
|
-
import { useFilterState } from '../../ui/useFilterState';
|
|
7
10
|
import { useCollection } from '../collections/useCollection';
|
|
8
|
-
import { useListPrimarySaleItems } from '../primary-sales/useListPrimarySaleItems';
|
|
9
11
|
|
|
10
12
|
interface UseList1155ShopCardDataProps {
|
|
11
|
-
|
|
13
|
+
primarySaleItemsWithMetadata: Array<{
|
|
14
|
+
metadata: TokenMetadata;
|
|
15
|
+
primarySaleItem: PrimarySaleItem;
|
|
16
|
+
}>;
|
|
12
17
|
chainId: number;
|
|
13
18
|
contractAddress: Address;
|
|
14
19
|
salesContractAddress: Address;
|
|
@@ -16,13 +21,12 @@ interface UseList1155ShopCardDataProps {
|
|
|
16
21
|
}
|
|
17
22
|
|
|
18
23
|
export function useList1155ShopCardData({
|
|
19
|
-
|
|
24
|
+
primarySaleItemsWithMetadata,
|
|
20
25
|
chainId,
|
|
21
26
|
contractAddress,
|
|
22
27
|
salesContractAddress,
|
|
23
28
|
enabled = true,
|
|
24
29
|
}: UseList1155ShopCardDataProps) {
|
|
25
|
-
const { showListedOnly } = useFilterState();
|
|
26
30
|
const { abi, isLoading: versionLoading } = useSalesContractABI({
|
|
27
31
|
contractAddress: salesContractAddress,
|
|
28
32
|
contractType: ContractType.ERC1155,
|
|
@@ -30,21 +34,12 @@ export function useList1155ShopCardData({
|
|
|
30
34
|
enabled,
|
|
31
35
|
});
|
|
32
36
|
|
|
33
|
-
const {
|
|
34
|
-
data: primarySaleItems,
|
|
35
|
-
isLoading: primarySaleItemsLoading,
|
|
36
|
-
error: primarySaleItemsError,
|
|
37
|
-
} = useListPrimarySaleItems({
|
|
38
|
-
chainId,
|
|
39
|
-
primarySaleContractAddress: salesContractAddress,
|
|
40
|
-
filter: {
|
|
41
|
-
includeEmpty: !showListedOnly,
|
|
42
|
-
},
|
|
43
|
-
});
|
|
44
|
-
|
|
45
37
|
const { data: collection, isLoading: collectionLoading } = useCollection({
|
|
46
38
|
chainId,
|
|
47
39
|
collectionAddress: contractAddress,
|
|
40
|
+
query: {
|
|
41
|
+
enabled,
|
|
42
|
+
},
|
|
48
43
|
});
|
|
49
44
|
|
|
50
45
|
const { data: paymentToken, isLoading: paymentTokenLoading } =
|
|
@@ -58,21 +53,10 @@ export function useList1155ShopCardData({
|
|
|
58
53
|
},
|
|
59
54
|
});
|
|
60
55
|
|
|
61
|
-
const isLoading =
|
|
62
|
-
primarySaleItemsLoading || collectionLoading || paymentTokenLoading;
|
|
63
|
-
|
|
64
|
-
// Flatten all collectibles from all pages
|
|
65
|
-
const allPrimarySaleItems =
|
|
66
|
-
primarySaleItems?.pages.flatMap((page) => page.primarySaleItems) ?? [];
|
|
67
|
-
|
|
68
|
-
const collectibleCards = tokenIds.map((tokenId) => {
|
|
69
|
-
const matchingPrimarySaleItem = allPrimarySaleItems.find(
|
|
70
|
-
(item) => item.primarySaleItem.tokenId?.toString() === tokenId,
|
|
71
|
-
);
|
|
56
|
+
const isLoading = versionLoading || collectionLoading || paymentTokenLoading;
|
|
72
57
|
|
|
73
|
-
|
|
74
|
-
const
|
|
75
|
-
matchingPrimarySaleItem?.metadata || ({} as TokenMetadata);
|
|
58
|
+
const collectibleCards = primarySaleItemsWithMetadata.map((item) => {
|
|
59
|
+
const { metadata, primarySaleItem: saleData } = item;
|
|
76
60
|
|
|
77
61
|
const salePrice = {
|
|
78
62
|
amount: saleData?.priceAmount?.toString() || '',
|
|
@@ -85,11 +69,11 @@ export function useList1155ShopCardData({
|
|
|
85
69
|
const unlimitedSupply = saleData?.unlimitedSupply;
|
|
86
70
|
|
|
87
71
|
return {
|
|
88
|
-
collectibleId: tokenId,
|
|
72
|
+
collectibleId: metadata.tokenId,
|
|
89
73
|
chainId,
|
|
90
74
|
collectionAddress: contractAddress,
|
|
91
75
|
collectionType: ContractType.ERC1155,
|
|
92
|
-
tokenMetadata:
|
|
76
|
+
tokenMetadata: metadata,
|
|
93
77
|
cardLoading: isLoading,
|
|
94
78
|
salesContractAddress: salesContractAddress,
|
|
95
79
|
salePrice,
|
|
@@ -99,14 +83,14 @@ export function useList1155ShopCardData({
|
|
|
99
83
|
unlimitedSupply,
|
|
100
84
|
saleStartsAt: saleData?.startDate?.toString(),
|
|
101
85
|
saleEndsAt: saleData?.endDate?.toString(),
|
|
102
|
-
|
|
86
|
+
cardType: 'shop',
|
|
103
87
|
} satisfies ShopCollectibleCardProps;
|
|
104
88
|
});
|
|
105
89
|
|
|
106
90
|
return {
|
|
107
91
|
collectibleCards,
|
|
108
|
-
tokenMetadataError:
|
|
92
|
+
tokenMetadataError: null,
|
|
109
93
|
tokenSaleDetailsError: null,
|
|
110
|
-
isLoading,
|
|
94
|
+
isLoading: enabled && isLoading,
|
|
111
95
|
};
|
|
112
96
|
}
|
|
@@ -37,12 +37,19 @@ export function useList721ShopCardData({
|
|
|
37
37
|
});
|
|
38
38
|
const config = useConfig();
|
|
39
39
|
|
|
40
|
+
const tokenSuppliesEnabled = Boolean(
|
|
41
|
+
chainId && contractAddress && config && (enabled ?? true),
|
|
42
|
+
);
|
|
43
|
+
// TODO: Find a way to remove this and use enabled in tokenSuppliesQueryOptions
|
|
40
44
|
const tokenSuppliesQuery = useInfiniteQuery({
|
|
41
45
|
...tokenSuppliesQueryOptions({
|
|
42
46
|
chainId,
|
|
43
47
|
collectionAddress: contractAddress,
|
|
44
48
|
includeMetadata: true,
|
|
45
49
|
config,
|
|
50
|
+
query: {
|
|
51
|
+
enabled: tokenSuppliesEnabled,
|
|
52
|
+
},
|
|
46
53
|
}),
|
|
47
54
|
});
|
|
48
55
|
|
|
@@ -56,6 +63,8 @@ export function useList721ShopCardData({
|
|
|
56
63
|
|
|
57
64
|
useEffect(() => {
|
|
58
65
|
async function fetchAllPages() {
|
|
66
|
+
if (!tokenSuppliesEnabled) return;
|
|
67
|
+
|
|
59
68
|
if (!hasNextSuppliesPage && tokenSuppliesData) {
|
|
60
69
|
setAllTokenSuppliesFetched(true);
|
|
61
70
|
return;
|
|
@@ -72,6 +81,7 @@ export function useList721ShopCardData({
|
|
|
72
81
|
isFetchingNextSuppliesPage,
|
|
73
82
|
tokenSuppliesLoading,
|
|
74
83
|
fetchNextTokenSuppliesPage,
|
|
84
|
+
tokenSuppliesEnabled,
|
|
75
85
|
]);
|
|
76
86
|
|
|
77
87
|
const allTokenSupplies = tokenSuppliesData?.pages.flatMap(
|
|
@@ -137,7 +147,7 @@ export function useList721ShopCardData({
|
|
|
137
147
|
quantityDecimals: 0,
|
|
138
148
|
saleStartsAt,
|
|
139
149
|
saleEndsAt,
|
|
140
|
-
|
|
150
|
+
cardType: 'shop',
|
|
141
151
|
} satisfies ShopCollectibleCardProps;
|
|
142
152
|
},
|
|
143
153
|
);
|
|
@@ -160,7 +170,7 @@ export function useList721ShopCardData({
|
|
|
160
170
|
quantityDecimals: 0,
|
|
161
171
|
saleStartsAt: undefined,
|
|
162
172
|
saleEndsAt: undefined,
|
|
163
|
-
|
|
173
|
+
cardType: 'shop',
|
|
164
174
|
} satisfies ShopCollectibleCardProps;
|
|
165
175
|
});
|
|
166
176
|
|
|
@@ -177,7 +187,8 @@ export function useList721ShopCardData({
|
|
|
177
187
|
saleDetailsError,
|
|
178
188
|
saleDetails,
|
|
179
189
|
isLoading:
|
|
180
|
-
|
|
190
|
+
enabled &&
|
|
191
|
+
(saleDetailsLoading || tokenSuppliesLoading || !allTokenSuppliesFetched),
|
|
181
192
|
tokenSuppliesData,
|
|
182
193
|
};
|
|
183
194
|
}
|
|
@@ -104,7 +104,10 @@ export function useSearchTokenMetadata(params: UseSearchTokenMetadataParams) {
|
|
|
104
104
|
collectionAddress: params.collectionAddress,
|
|
105
105
|
includeMetadata: true,
|
|
106
106
|
query: {
|
|
107
|
-
enabled:
|
|
107
|
+
enabled:
|
|
108
|
+
onlyMinted &&
|
|
109
|
+
!!params.collectionAddress &&
|
|
110
|
+
(params.query?.enabled ?? true),
|
|
108
111
|
},
|
|
109
112
|
});
|
|
110
113
|
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { renderHook, server, waitFor } from '@test';
|
|
2
2
|
import { HttpResponse, http } from 'msw';
|
|
3
|
+
import type { Address } from 'viem';
|
|
3
4
|
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
4
|
-
|
|
5
5
|
import * as types from '../../../types';
|
|
6
6
|
import { StepType } from '../../../types';
|
|
7
7
|
import { WalletKind } from '../../_internal/api';
|
|
8
8
|
import { mockMarketplaceEndpoint } from '../../_internal/api/__mocks__/marketplace.msw';
|
|
9
|
-
|
|
10
9
|
import { useConnectorMetadata } from '../config/useConnectorMetadata';
|
|
11
10
|
import { useCancelOrder } from './useCancelOrder';
|
|
12
11
|
import { useProcessStep } from './useProcessStep';
|
|
@@ -24,7 +23,7 @@ vi.mock('../../utils/waitForTransactionReceipt', () => ({
|
|
|
24
23
|
|
|
25
24
|
describe('useCancelOrder', () => {
|
|
26
25
|
const defaultProps = {
|
|
27
|
-
collectionAddress: '0x1234567890123456789012345678901234567890',
|
|
26
|
+
collectionAddress: '0x1234567890123456789012345678901234567890' as Address,
|
|
28
27
|
chainId: 1,
|
|
29
28
|
};
|
|
30
29
|
|
|
@@ -99,7 +98,11 @@ describe('useCancelOrder', () => {
|
|
|
99
98
|
});
|
|
100
99
|
|
|
101
100
|
it('should update state during cancellation process', async () => {
|
|
102
|
-
const { result } = renderHook(() =>
|
|
101
|
+
const { result } = renderHook(() =>
|
|
102
|
+
useCancelOrder({
|
|
103
|
+
...defaultProps,
|
|
104
|
+
}),
|
|
105
|
+
);
|
|
103
106
|
|
|
104
107
|
// Mock a delayed response
|
|
105
108
|
server.use(
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { useWaasFeeOptions } from '@0xsequence/connect';
|
|
3
3
|
import { useEffect, useState } from 'react';
|
|
4
|
+
import type { Address } from 'viem';
|
|
4
5
|
import type * as types from '../../_internal';
|
|
5
6
|
import { useAutoSelectFeeOption } from '../utils/useAutoSelectFeeOption';
|
|
6
7
|
import { useCancelTransactionSteps } from './useCancelTransactionSteps';
|
|
7
8
|
|
|
8
9
|
interface UseCancelOrderArgs {
|
|
9
|
-
collectionAddress:
|
|
10
|
+
collectionAddress: Address;
|
|
10
11
|
chainId: number;
|
|
11
12
|
onSuccess?: ({ hash, orderId }: { hash?: string; orderId?: string }) => void;
|
|
12
13
|
onError?: (error: Error) => void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Hex } from 'viem';
|
|
1
|
+
import type { Address, Hex } from 'viem';
|
|
2
2
|
import { useAccount } from 'wagmi';
|
|
3
3
|
import { NoWalletConnectedError } from '../../../utils/_internal/error/transaction';
|
|
4
4
|
import {
|
|
@@ -19,7 +19,7 @@ import { useGenerateCancelTransaction } from './useGenerateCancelTransaction';
|
|
|
19
19
|
import { useProcessStep } from './useProcessStep';
|
|
20
20
|
|
|
21
21
|
interface UseCancelTransactionStepsArgs {
|
|
22
|
-
collectionAddress:
|
|
22
|
+
collectionAddress: Address;
|
|
23
23
|
chainId: number;
|
|
24
24
|
callbacks?: ModalCallbacks;
|
|
25
25
|
setSteps: React.Dispatch<React.SetStateAction<TransactionStep>>;
|
|
@@ -7,7 +7,7 @@ import { useProcessStep } from './useProcessStep';
|
|
|
7
7
|
vi.mock('wagmi', async (importOriginal) => {
|
|
8
8
|
const actual = await importOriginal();
|
|
9
9
|
return {
|
|
10
|
-
// @ts-
|
|
10
|
+
// @ts-expect-error - ignore spread type error
|
|
11
11
|
...actual,
|
|
12
12
|
useSendTransaction: vi.fn(),
|
|
13
13
|
useSignMessage: vi.fn(),
|
|
@@ -18,7 +18,7 @@ vi.mock('wagmi', async (importOriginal) => {
|
|
|
18
18
|
vi.mock('../../_internal/api', async (importOriginal) => {
|
|
19
19
|
const actual = await importOriginal();
|
|
20
20
|
return {
|
|
21
|
-
// @ts-
|
|
21
|
+
// @ts-expect-error - ignore spread type error
|
|
22
22
|
...actual,
|
|
23
23
|
getMarketplaceClient: vi.fn(() => ({
|
|
24
24
|
execute: vi.fn(),
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { renderHook, wagmiConfig, waitFor } from '@test';
|
|
2
|
+
import { beforeEach, describe, expect, test, vi } from 'vitest';
|
|
3
|
+
import { switchChainErrorModalStore } from '../../../ui/modals/_internal/components/switchChainErrorModal/store';
|
|
4
|
+
import { useEnsureCorrectChain } from '../useEnsureCorrectChain';
|
|
5
|
+
|
|
6
|
+
const currentChain = wagmiConfig.chains[0]; // mainnet
|
|
7
|
+
const chainToSwitchTo = wagmiConfig.chains[1]; // polygon
|
|
8
|
+
|
|
9
|
+
describe('useEnsureCorrectChain', () => {
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
switchChainErrorModalStore.send({ type: 'close' });
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
test('returns current chain id', async () => {
|
|
15
|
+
const { result } = renderHook(() => useEnsureCorrectChain());
|
|
16
|
+
// Wait for the account to be connected and chainId to be available
|
|
17
|
+
await waitFor(() => {
|
|
18
|
+
expect(result.current.currentChainId).toBeDefined();
|
|
19
|
+
});
|
|
20
|
+
expect(result.current.currentChainId).toBe(currentChain.id);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
test('does nothing if already on correct chain', () => {
|
|
24
|
+
const { result } = renderHook(() => useEnsureCorrectChain());
|
|
25
|
+
const onSuccess = vi.fn();
|
|
26
|
+
|
|
27
|
+
result.current.ensureCorrectChain(currentChain.id, { onSuccess });
|
|
28
|
+
|
|
29
|
+
expect(onSuccess).toHaveBeenCalled();
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
test('attempts to switch chain and shows error modal when switch fails', async () => {
|
|
33
|
+
const { result } = renderHook(() => useEnsureCorrectChain());
|
|
34
|
+
|
|
35
|
+
result.current.ensureCorrectChain(chainToSwitchTo.id);
|
|
36
|
+
|
|
37
|
+
await waitFor(() => {
|
|
38
|
+
expect(
|
|
39
|
+
switchChainErrorModalStore.getSnapshot().context.chainIdToSwitchTo,
|
|
40
|
+
).toBe(chainToSwitchTo.id);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
test('async version handles chain switch error correctly', async () => {
|
|
45
|
+
const { result } = renderHook(() => useEnsureCorrectChain());
|
|
46
|
+
|
|
47
|
+
await result.current.ensureCorrectChainAsync(chainToSwitchTo.id);
|
|
48
|
+
|
|
49
|
+
expect(
|
|
50
|
+
switchChainErrorModalStore.getSnapshot().context.chainIdToSwitchTo,
|
|
51
|
+
).toBe(chainToSwitchTo.id);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
test('closes error modal when successfully switched to target chain', async () => {
|
|
55
|
+
const { result } = renderHook(() => useEnsureCorrectChain());
|
|
56
|
+
|
|
57
|
+
await waitFor(() => {
|
|
58
|
+
expect(result.current.currentChainId).toBeDefined();
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
// Now open the modal for the same chain the user is already on
|
|
62
|
+
// This should trigger the effect to close it immediately
|
|
63
|
+
switchChainErrorModalStore.send({
|
|
64
|
+
type: 'open',
|
|
65
|
+
chainIdToSwitchTo: result.current.currentChainId!,
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
// The effect should close the modal since we're already on the target chain
|
|
69
|
+
await waitFor(() => {
|
|
70
|
+
expect(
|
|
71
|
+
switchChainErrorModalStore.getSnapshot().context.chainIdToSwitchTo,
|
|
72
|
+
).toBeUndefined();
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
});
|