@0xsequence/marketplace-sdk 0.9.0 → 0.10.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 +63 -0
- package/.storybook/preview.ts +24 -0
- package/.storybook/vitest.setup.ts +6 -0
- package/CHANGELOG.md +77 -8
- package/dist/{CalendarIcon-DbQ7Vxcw.js → CalendarIcon-CqsuAuCm.js} +4 -51
- package/dist/CalendarIcon-CqsuAuCm.js.map +1 -0
- package/dist/{CollectibleCard-C8Ae64Ab.d.ts → CollectibleCard-Dd-CG6dE.d.ts} +8 -7
- package/dist/InfoIcon-v0w_Lu7t.js +53 -0
- package/dist/InfoIcon-v0w_Lu7t.js.map +1 -0
- package/dist/{_internal-BgWcRIak.js → _internal-C75gOSNo.js} +2 -10
- package/dist/_internal-C75gOSNo.js.map +1 -0
- package/dist/actionModal-CMUeVsFX.js +116 -0
- package/dist/actionModal-CMUeVsFX.js.map +1 -0
- package/dist/{alien_swap-B_76IMma.js → alien_swap-CYv6YlOF.js} +1 -1
- package/dist/{alien_swap-B_76IMma.js.map → alien_swap-CYv6YlOF.js.map} +1 -1
- package/dist/{api-DTIan01C.js → api-BiMGqWdz.js} +17 -34
- package/dist/api-BiMGqWdz.js.map +1 -0
- package/dist/{aqua-xyz-CMN_TFY5.js → aqua-xyz-Bzn5baeH.js} +1 -1
- package/dist/{aqua-xyz-CMN_TFY5.js.map → aqua-xyz-Bzn5baeH.js.map} +1 -1
- package/dist/{aura-Cye_TuHj.js → aura-DzIWh8WT.js} +1 -1
- package/dist/{aura-Cye_TuHj.js.map → aura-DzIWh8WT.js.map} +1 -1
- package/dist/base-DqaJPvfN.js +22 -0
- package/dist/base-DqaJPvfN.js.map +1 -0
- package/dist/{blur-DWDMyMpK.js → blur-DSH-Cbpj.js} +1 -1
- package/dist/{blur-DWDMyMpK.js.map → blur-DSH-Cbpj.js.map} +1 -1
- package/dist/{coinbase-ByA_XRB0.js → coinbase-Df8URNxq.js} +1 -1
- package/dist/{coinbase-ByA_XRB0.js.map → coinbase-Df8URNxq.js.map} +1 -1
- package/dist/{new-marketplace-types-Bfis0U4J.d.ts → create-config-DKJ-F0jc.d.ts} +402 -41
- package/dist/{wagmi-CDzEQbfk.js → create-config-fQ-jbJD1.js} +20 -10
- package/dist/create-config-fQ-jbJD1.js.map +1 -0
- package/dist/{element-b77CyXIZ.js → element-Cx6uJu5N.js} +1 -1
- package/dist/{element-b77CyXIZ.js.map → element-Cx6uJu5N.js.map} +1 -1
- package/dist/{foundation-DbOrKP9Y.js → foundation-D6U4aRLN.js} +1 -1
- package/dist/{foundation-DbOrKP9Y.js.map → foundation-D6U4aRLN.js.map} +1 -1
- package/dist/get-provider-CYYHfrlg.js +10 -0
- package/dist/get-provider-CYYHfrlg.js.map +1 -0
- package/dist/get-query-client-D19vvfJo.js +23 -0
- package/dist/get-query-client-D19vvfJo.js.map +1 -0
- package/dist/hooks-4pxIbLbM.js +4044 -0
- package/dist/hooks-4pxIbLbM.js.map +1 -0
- package/dist/{index-BL9RUSEK.d.ts → index-136YrWDH.d.ts} +1 -1
- package/dist/{index-D5v5iluA.d.ts → index-BAhaEfqY.d.ts} +1 -1
- package/dist/index-BKBin-rq.d.ts +979 -0
- package/dist/{index-BQsgAvtX.d.ts → index-BUWB_RXp.d.ts} +776 -570
- package/dist/{index-21LE7OhL.d.ts → index-BhVFc2rX.d.ts} +6 -3
- package/dist/{index-DXMfTZ1F.d.ts → index-C5aqo8xu.d.ts} +1 -1
- package/dist/{index-ByznONYE.d.ts → index-CKrYP7ot.d.ts} +20 -48
- package/dist/{index-DaE5ZNHb.d.ts → index-CUwMH7Ht.d.ts} +5 -5
- package/dist/{index-CLy8y5hm.d.ts → index-Cu70Lw-w.d.ts} +1 -1
- package/dist/index.css +414 -1
- package/dist/index.d.ts +8 -10
- package/dist/index.js +13 -9
- package/dist/{looks-rare-C1VqNcSM.js → looks-rare-ChBRBY-p.js} +1 -1
- package/dist/{looks-rare-C1VqNcSM.js.map → looks-rare-ChBRBY-p.js.map} +1 -1
- package/dist/{magic-eden-ea_AGCZr.js → magic-eden-D5U7N1xL.js} +1 -1
- package/dist/{magic-eden-ea_AGCZr.js.map → magic-eden-D5U7N1xL.js.map} +1 -1
- package/dist/{manifold-8y8J2sjT.js → manifold-CtLF52zU.js} +1 -1
- package/dist/{manifold-8y8J2sjT.js.map → manifold-CtLF52zU.js.map} +1 -1
- package/dist/{marketplace-nwnZv9Cb.js → marketplace-DmFiyBoS.js} +1 -1
- package/dist/{marketplace-nwnZv9Cb.js.map → marketplace-DmFiyBoS.js.map} +1 -1
- package/dist/{marketplace-logos-CSeGcPW4.js → marketplace-logos-Cd6W-qOq.js} +21 -21
- package/dist/{marketplace-logos-CSeGcPW4.js.map → marketplace-logos-Cd6W-qOq.js.map} +1 -1
- package/dist/{marketplace.gen-BSDIX7NZ.js → marketplace.gen-HpnpL5xU.js} +3 -3
- package/dist/marketplace.gen-HpnpL5xU.js.map +1 -0
- package/dist/{marketplaceConfig-C6X1SUik.js → marketplaceConfig-GQTTmihy.js} +3 -3
- package/dist/marketplaceConfig-GQTTmihy.js.map +1 -0
- package/dist/{mintify-LA68TzWg.js → mintify-Bi3Bce68.js} +1 -1
- package/dist/{mintify-LA68TzWg.js.map → mintify-Bi3Bce68.js.map} +1 -1
- package/dist/network-CGD0oKtS.js +15 -0
- package/dist/network-CGD0oKtS.js.map +1 -0
- package/dist/{nftx-D3Tc8nzd.js → nftx-BDQZjtkX.js} +1 -1
- package/dist/{nftx-D3Tc8nzd.js.map → nftx-BDQZjtkX.js.map} +1 -1
- package/dist/{okx-hbqg6oIJ.js → okx-D4meadLe.js} +1 -1
- package/dist/{okx-hbqg6oIJ.js.map → okx-D4meadLe.js.map} +1 -1
- package/dist/{open-sea-BccuK8-t.js → open-sea-DN0hgfVw.js} +1 -1
- package/dist/{open-sea-BccuK8-t.js.map → open-sea-DN0hgfVw.js.map} +1 -1
- package/dist/{primary-sale-C55ALnfQ.js → primary-sale-CmWxSfFQ.js} +1 -1
- package/dist/{primary-sale-C55ALnfQ.js.map → primary-sale-CmWxSfFQ.js.map} +1 -1
- package/dist/provider-DPGUA10G.js +125 -0
- package/dist/provider-DPGUA10G.js.map +1 -0
- package/dist/{queries-CUU65uYZ.js → queries-Ce_2othB.js} +165 -7
- package/dist/queries-Ce_2othB.js.map +1 -0
- package/dist/{rarible-BgTwwj9g.js → rarible-B0xlD88A.js} +1 -1
- package/dist/{rarible-BgTwwj9g.js.map → rarible-B0xlD88A.js.map} +1 -1
- package/dist/react/_internal/api/index.d.ts +2 -4
- package/dist/react/_internal/api/index.js +7 -4
- package/dist/react/_internal/databeat/index.d.ts +2 -73
- package/dist/react/_internal/databeat/index.js +4 -21
- package/dist/react/_internal/index.d.ts +2 -7
- package/dist/react/_internal/index.js +11 -6
- package/dist/react/_internal/wagmi/index.d.ts +2 -4
- package/dist/react/_internal/wagmi/index.js +5 -3
- package/dist/react/hooks/index.d.ts +12 -17
- package/dist/react/hooks/index.js +23 -19
- package/dist/react/hooks/options/index.d.ts +2 -3
- package/dist/react/hooks/options/index.js +12 -7
- package/dist/react/index.d.ts +12 -17
- package/dist/react/index.js +28 -19
- package/dist/react/queries/index.d.ts +9 -8
- package/dist/react/queries/index.js +20 -15
- package/dist/react/ssr/index.d.ts +7 -9
- package/dist/react/ssr/index.js +11 -6
- package/dist/react/ssr/index.js.map +1 -1
- package/dist/react/ui/components/marketplace-collectible-card/index.d.ts +3 -8
- package/dist/react/ui/components/marketplace-collectible-card/index.js +27 -18
- package/dist/react/ui/components/marketplace-collectible-card/utils/index.d.ts +2 -7
- package/dist/react/ui/components/marketplace-collectible-card/utils/index.js +11 -6
- 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 -9
- package/dist/react/ui/index.d.ts +3 -8
- package/dist/react/ui/index.js +27 -18
- package/dist/react/ui/modals/_internal/components/actionModal/index.d.ts +2 -2
- package/dist/react/ui/modals/_internal/components/actionModal/index.js +23 -18
- package/dist/{react-DAIicQPT.js → react-DP0M2Wfm.js} +799 -4306
- package/dist/react-DP0M2Wfm.js.map +1 -0
- package/dist/{react-BbHBl6gg.css → react-DeDyTgo7.css} +1 -1
- package/dist/{react-BbHBl6gg.css.map → react-DeDyTgo7.css.map} +1 -1
- package/dist/{sequence-Do3kzb4J.js → sequence-BIrOVRXO.js} +1 -1
- package/dist/{sequence-Do3kzb4J.js.map → sequence-BIrOVRXO.js.map} +1 -1
- package/dist/{sudo-swap-B6vPKxBz.js → sudo-swap-BPMon-M5.js} +1 -1
- package/dist/{sudo-swap-B6vPKxBz.js.map → sudo-swap-BPMon-M5.js.map} +1 -1
- package/dist/{super-rare-eCm1SE6O.js → super-rare-kPN6Ua8i.js} +1 -1
- package/dist/{super-rare-eCm1SE6O.js.map → super-rare-kPN6Ua8i.js.map} +1 -1
- package/dist/{token-Da4TdyUk.js → token-CHSBPYVG.js} +1 -1
- package/dist/{token-Da4TdyUk.js.map → token-CHSBPYVG.js.map} +1 -1
- package/dist/{transaction-CcVViHEL.js → transaction-CnctdNzS.js} +3 -21
- package/dist/transaction-CnctdNzS.js.map +1 -0
- package/dist/types/index.d.ts +2 -3
- package/dist/types/index.js +2 -2
- package/dist/{types-DwWE6xOF.js → types-Yw2ywj6j.js} +1 -1
- package/dist/{types-DwWE6xOF.js.map → types-Yw2ywj6j.js.map} +1 -1
- 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 +7 -8
- package/dist/utils/index.js +12 -9
- package/dist/{utils-CW2NA5KG.js → utils-9RXDgcBl.js} +4 -11
- package/dist/utils-9RXDgcBl.js.map +1 -0
- package/dist/{utils-BPYfgDSL.js → utils-DjVJ9tov.js} +5 -6
- package/dist/utils-DjVJ9tov.js.map +1 -0
- package/dist/wagmi-Do_KW5ke.js +0 -0
- package/dist/{x2y2-DD17tT91.js → x2y2-BLz-_Q2O.js} +1 -1
- package/dist/{x2y2-DD17tT91.js.map → x2y2-BLz-_Q2O.js.map} +1 -1
- package/dist/{zora-BpSG9UzS.js → zora-UGhKs-aL.js} +1 -1
- package/dist/{zora-BpSG9UzS.js.map → zora-UGhKs-aL.js.map} +1 -1
- package/eslint.config.mjs +4 -0
- package/package.json +27 -14
- package/postcss.config.mjs +6 -0
- package/src/index.css +5 -4
- package/src/index.ts +1 -0
- package/src/react/__tests__/provider.test.tsx +4 -3
- package/src/react/_internal/api/__mocks__/indexer.msw.ts +16 -0
- package/src/react/_internal/api/__mocks__/laos.msw.ts +387 -0
- package/src/react/_internal/api/__mocks__/marketplace.msw.ts +2 -0
- package/src/react/_internal/api/__tests__/laos-api.test.ts +756 -0
- package/src/react/_internal/api/laos-api.ts +3 -0
- package/src/react/_internal/api/marketplace.gen.ts +5 -3
- package/src/react/_internal/api/query-keys.ts +12 -4
- package/src/react/_internal/api/services.ts +2 -14
- package/src/react/_internal/databeat/index.ts +15 -14
- package/src/react/_internal/databeat/types.ts +22 -0
- package/src/react/_internal/databeat/utils.ts +26 -0
- package/src/react/_internal/utils.ts +4 -4
- package/src/react/_internal/wagmi/create-config.ts +28 -13
- package/src/react/_internal/wallet/wallet.ts +4 -4
- package/src/react/hooks/__tests__/useBalanceOfCollectible.laos.test.tsx +367 -0
- package/src/react/hooks/__tests__/useCheckoutOptions.test.tsx +158 -0
- package/src/react/hooks/__tests__/useCheckoutOptionsSalesContract.test.tsx +42 -65
- package/src/react/hooks/__tests__/useCollectionBalanceDetails.test.tsx +17 -0
- package/src/react/hooks/__tests__/useCollectionDetailsPolling.test.tsx +11 -3
- package/src/react/hooks/__tests__/useConvertPriceToUSD.test.tsx +3 -3
- package/src/react/hooks/__tests__/useCurrencyBalance.test.tsx +7 -3
- package/src/react/hooks/__tests__/useFilters.test.tsx +2 -2
- package/src/react/hooks/__tests__/useGetTokenRanges.test.tsx +111 -0
- package/src/react/hooks/__tests__/useListTokenMetadata.test.tsx +83 -57
- package/src/react/hooks/__tests__/useTransferTokens.test.tsx +469 -0
- package/src/react/hooks/index.ts +3 -1
- package/src/react/hooks/useCheckoutOptions.tsx +96 -0
- package/src/react/hooks/useCheckoutOptionsSalesContract.tsx +98 -57
- package/src/react/hooks/useCollectionBalanceDetails.tsx +95 -68
- package/src/react/hooks/useCollectionDetailsPolling.tsx +3 -7
- package/src/react/hooks/useComparePrices.tsx +90 -82
- package/src/react/hooks/useConvertPriceToUSD.tsx +85 -71
- package/src/react/hooks/useCurrencyBalance.tsx +132 -46
- package/src/react/hooks/useERC721SaleMintedTokens.tsx +8 -5
- package/src/react/hooks/useFilters.tsx +154 -111
- package/src/react/hooks/useGetCountOfPrimarySaleItems.tsx +48 -0
- package/src/react/hooks/useGetTokenRanges.tsx +83 -22
- package/src/react/hooks/useList1155ShopCardData.tsx +2 -0
- package/src/react/hooks/useList721ShopCardData.tsx +12 -7
- package/src/react/hooks/useListCollections.tsx +25 -25
- package/src/react/hooks/useListMarketCardData.tsx +2 -1
- package/src/react/hooks/useListPrimarySaleItems.tsx +66 -0
- package/src/react/hooks/useListTokenMetadata.ts +71 -0
- package/src/react/hooks/useOpenConnectModal.tsx +9 -0
- package/src/react/hooks/useTokenSaleDetailsBatch.tsx +3 -7
- package/src/react/hooks/useTokenSupplies.ts +81 -0
- package/src/react/hooks/useTransferTokens.tsx +2 -2
- package/src/react/provider.tsx +73 -9
- package/src/react/queries/__tests__/balanceOfCollectible.laos.test.ts +123 -0
- package/src/react/queries/__tests__/inventory.laos.test.ts +496 -0
- package/src/react/queries/balanceOfCollectible.ts +7 -4
- package/src/react/queries/checkoutOptions.ts +85 -0
- package/src/react/queries/checkoutOptionsSalesContract.ts +89 -0
- package/src/react/queries/collectionBalanceDetails.ts +92 -0
- package/src/react/queries/comparePrices.ts +108 -0
- package/src/react/queries/convertPriceToUSD.ts +92 -0
- package/src/react/queries/filters.ts +138 -0
- package/src/react/queries/getTokenRanges.ts +62 -0
- package/src/react/queries/index.ts +3 -0
- package/src/react/queries/inventory.ts +6 -0
- package/src/react/queries/listBalances.ts +4 -3
- package/src/react/queries/listCollections.ts +7 -3
- package/src/react/queries/listTokenMetadata.ts +2 -2
- package/src/react/queries/marketplaceConfig.ts +1 -1
- package/src/react/queries/primarySaleItems.ts +85 -0
- package/src/react/queries/primarySaleItemsCount.ts +64 -0
- package/src/react/queries/tokenSupplies.ts +93 -0
- package/src/react/ui/components/_internals/action-button/ActionButton.tsx +66 -66
- package/src/react/ui/components/_internals/action-button/__tests__/ActionButtonBody.test.tsx +22 -4
- package/src/react/ui/components/_internals/action-button/components/ActionButtonBody.tsx +5 -4
- package/src/react/ui/components/_internals/action-button/components/NonOwnerActions.tsx +3 -0
- package/src/react/ui/components/_internals/action-button/components/OwnerActions.tsx +4 -4
- package/src/react/ui/components/_internals/action-button/hooks/useActionButtonLogic.ts +13 -8
- package/src/react/ui/components/_internals/action-button/store.ts +44 -34
- package/src/react/ui/components/_internals/custom-select/CustomSelect.stories.tsx +582 -0
- package/src/react/ui/components/_internals/pill/Pill.stories.tsx +83 -0
- package/src/react/ui/components/marketplace-collectible-card/Footer.tsx +11 -4
- package/src/react/ui/components/marketplace-collectible-card/components/ActionButtonWrapper.tsx +7 -4
- package/src/react/ui/components/marketplace-collectible-card/types.ts +4 -3
- package/src/react/ui/components/marketplace-collectible-card/utils/supplyStatus.ts +4 -7
- package/src/react/ui/components/marketplace-collectible-card/variants/ShopCard.tsx +5 -1
- package/src/react/ui/components/marketplace-logos/marketplace-logos.stories.tsx +199 -0
- package/src/react/ui/components/media/Media.stories.tsx +642 -0
- package/src/react/ui/components/media/Media.tsx +24 -19
- package/src/react/ui/components/media/types.ts +6 -0
- package/src/react/ui/modals/BuyModal/__tests__/BuyModalRouter.test.tsx +15 -0
- package/src/react/ui/modals/BuyModal/__tests__/ERC1155ShopModal.test.tsx +6 -0
- package/src/react/ui/modals/BuyModal/__tests__/Modal1155.test.tsx +7 -1
- package/src/react/ui/modals/BuyModal/__tests__/store.test.ts +9 -1
- package/src/react/ui/modals/BuyModal/components/ERC1155QuantityModal.tsx +15 -8
- package/src/react/ui/modals/BuyModal/components/ERC1155ShopModal.tsx +3 -0
- package/src/react/ui/modals/BuyModal/hooks/__tests__/useERC1155Checkout.test.tsx +30 -27
- package/src/react/ui/modals/BuyModal/hooks/useCheckoutOptions.ts +2 -2
- package/src/react/ui/modals/BuyModal/hooks/useERC1155Checkout.ts +11 -2
- package/src/react/ui/modals/BuyModal/hooks/useERC721SalePaymentParams.ts +1 -1
- package/src/react/ui/modals/BuyModal/hooks/usePaymentModalParams.ts +7 -0
- package/src/react/ui/modals/BuyModal/index.tsx +9 -1
- package/src/react/ui/modals/BuyModal/store.ts +26 -0
- package/src/react/ui/modals/CreateListingModal/Modal.tsx +28 -11
- package/src/react/ui/modals/CreateListingModal/store.ts +3 -3
- package/src/react/ui/modals/MakeOfferModal/Modal.tsx +30 -13
- package/src/react/ui/modals/MakeOfferModal/store.ts +3 -3
- package/src/react/ui/modals/SellModal/Modal.tsx +11 -8
- package/src/react/ui/modals/SellModal/store.ts +3 -3
- package/src/react/ui/modals/TransferModal/__tests__/__snapshots__/store.test.ts.snap +17 -0
- package/src/react/ui/modals/TransferModal/__tests__/store.test.ts +366 -0
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/__tests__/useHandleTransfer.test.tsx +402 -0
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TokenQuantityInput.tsx +51 -48
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/TransferButton.tsx +39 -47
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/_components/WalletAddressInput.tsx +9 -8
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/index.tsx +31 -35
- package/src/react/ui/modals/TransferModal/_views/enterWalletAddress/useHandleTransfer.tsx +19 -10
- package/src/react/ui/modals/TransferModal/index.tsx +28 -31
- package/src/react/ui/modals/TransferModal/messages.ts +1 -1
- package/src/react/ui/modals/TransferModal/store.ts +122 -0
- package/src/react/ui/modals/_internal/components/calendar/index.tsx +0 -1
- package/src/react/ui/modals/_internal/components/currencyImage/index.tsx +10 -14
- package/src/react/ui/modals/_internal/components/currencyOptionsSelect/__tests__/index.test.tsx +5 -2
- package/src/react/ui/modals/_internal/components/currencyOptionsSelect/index.tsx +23 -17
- package/src/react/ui/modals/_internal/components/expirationDateSelect/index.tsx +10 -10
- package/src/react/ui/modals/_internal/components/floorPriceText/__tests__/FloorPriceText.test.tsx +6 -6
- package/src/react/ui/modals/_internal/components/priceInput/__tests__/PriceInput.test.tsx +13 -5
- package/src/react/ui/modals/_internal/components/priceInput/index.tsx +41 -26
- package/src/react/ui/modals/_internal/components/quantityInput/__tests__/index.test.tsx +68 -59
- package/src/react/ui/modals/_internal/components/quantityInput/index.tsx +155 -20
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/__tests__/SelectWaasFeeOptions.test.tsx +339 -40
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/index.tsx +95 -101
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/store.ts +72 -14
- package/src/react/ui/modals/_internal/components/selectWaasFeeOptions/useWaasFeeOptionManager.tsx +29 -13
- package/src/react/ui/modals/_internal/components/tokenPreview/index.tsx +2 -2
- package/src/react/ui/modals/_internal/components/transactionDetails/index.tsx +2 -2
- package/src/react/ui/modals/_internal/components/transactionPreview/index.tsx +88 -89
- package/src/react/ui/modals/_internal/components/transactionStatusModal/__tests__/TransactionStatusModal.test.tsx +36 -10
- package/src/react/ui/modals/_internal/components/transactionStatusModal/index.tsx +32 -20
- package/src/react/ui/modals/_internal/components/transactionStatusModal/store.ts +91 -62
- package/src/react/ui/modals/_internal/components/waasFeeOptionsSelect/WaasFeeOptionsSelect.tsx +43 -44
- package/src/react/ui/modals/_internal/types.ts +2 -2
- package/src/types/sdk-config.ts +6 -1
- package/src/utils/network.ts +15 -0
- package/test/test-utils.tsx +2 -0
- package/vitest.shims.d.ts +2 -0
- package/vitest.storybook.config.js +33 -0
- package/dist/CalendarIcon-DbQ7Vxcw.js.map +0 -1
- package/dist/_internal-BgWcRIak.js.map +0 -1
- package/dist/api-DTIan01C.js.map +0 -1
- package/dist/builder-api-C_zj5mr3.d.ts +0 -12
- package/dist/index-BUVWziLP.d.ts +0 -60
- package/dist/index-COt10OgI.d.ts +0 -24
- package/dist/index-DPNWNa7t.d.ts +0 -414
- package/dist/index-DsfCs3-x.d.ts +0 -122
- package/dist/index-dUb6wb4Y.d.ts +0 -22
- package/dist/marketplace.gen-BSDIX7NZ.js.map +0 -1
- package/dist/marketplaceConfig-C6X1SUik.js.map +0 -1
- package/dist/queries-CUU65uYZ.js.map +0 -1
- package/dist/react-DAIicQPT.js.map +0 -1
- package/dist/transaction-CcVViHEL.js.map +0 -1
- package/dist/utils-BPYfgDSL.js.map +0 -1
- package/dist/utils-CW2NA5KG.js.map +0 -1
- package/dist/wagmi-CDzEQbfk.js.map +0 -1
- package/src/react/hooks/__tests__/useGetTokenSuppliesMap.test.tsx +0 -104
- package/src/react/hooks/useGetTokenSuppliesMap.tsx +0 -73
- package/src/react/hooks/useListPrimarySaleItems.ts +0 -102
- package/src/react/queries/getTokenSuppliesMap.ts +0 -77
- package/src/react/ui/modals/TransferModal/_store.ts +0 -66
- package/src/react/ui/modals/_internal/components/quantityInput/QuantityInputBase.tsx +0 -166
- package/src/react/ui/modals/_internal/stores/accountModal.ts +0 -3
- /package/dist/{abi-BKyRjVcZ.js → abi-BMvgNbKQ.js} +0 -0
- /package/dist/{index-C39K_8SG.d.ts → index-CD2bj_xW.d.ts} +0 -0
- /package/dist/{options-B4QN7Xou.js → options-BBBR8u_4.js} +0 -0
|
@@ -27,12 +27,15 @@ export function Media({
|
|
|
27
27
|
name,
|
|
28
28
|
assets,
|
|
29
29
|
assetSrcPrefixUrl,
|
|
30
|
-
className,
|
|
30
|
+
className = '',
|
|
31
|
+
containerClassName = '',
|
|
32
|
+
mediaClassname = '',
|
|
31
33
|
isLoading,
|
|
32
34
|
fallbackContent,
|
|
35
|
+
shouldListenForLoad = true,
|
|
33
36
|
}: MediaProps) {
|
|
34
37
|
const [assetLoadFailed, setAssetLoadFailed] = useState(false);
|
|
35
|
-
const [assetLoading, setAssetLoading] = useState(
|
|
38
|
+
const [assetLoading, setAssetLoading] = useState(shouldListenForLoad);
|
|
36
39
|
const [currentAssetIndex, setCurrentAssetIndex] = useState(0);
|
|
37
40
|
const [isSafari, setIsSafari] = useState(false);
|
|
38
41
|
const [contentType, setContentType] = useState<ContentTypeState>({
|
|
@@ -55,9 +58,9 @@ export function Media({
|
|
|
55
58
|
: assetUrl
|
|
56
59
|
: '';
|
|
57
60
|
|
|
58
|
-
const
|
|
61
|
+
const containerClassNames = cn(
|
|
59
62
|
'relative aspect-square overflow-hidden bg-background-secondary',
|
|
60
|
-
className,
|
|
63
|
+
containerClassName || className,
|
|
61
64
|
);
|
|
62
65
|
|
|
63
66
|
useEffect(() => {
|
|
@@ -105,7 +108,7 @@ export function Media({
|
|
|
105
108
|
<div
|
|
106
109
|
className={cn(
|
|
107
110
|
'flex h-full w-full items-center justify-center',
|
|
108
|
-
|
|
111
|
+
containerClassNames,
|
|
109
112
|
)}
|
|
110
113
|
>
|
|
111
114
|
{fallbackContent}
|
|
@@ -114,7 +117,7 @@ export function Media({
|
|
|
114
117
|
}
|
|
115
118
|
|
|
116
119
|
return (
|
|
117
|
-
<div className={cn('h-full w-full',
|
|
120
|
+
<div className={cn('h-full w-full', containerClassNames)}>
|
|
118
121
|
<img
|
|
119
122
|
src={ChessTileImage}
|
|
120
123
|
alt={name || 'Collectible'}
|
|
@@ -139,7 +142,7 @@ export function Media({
|
|
|
139
142
|
<div
|
|
140
143
|
className={cn(
|
|
141
144
|
'flex w-full items-center justify-center rounded-lg',
|
|
142
|
-
|
|
145
|
+
containerClassNames,
|
|
143
146
|
)}
|
|
144
147
|
>
|
|
145
148
|
{(assetLoading || contentType.loading || isLoading) && (
|
|
@@ -148,13 +151,13 @@ export function Media({
|
|
|
148
151
|
|
|
149
152
|
<iframe
|
|
150
153
|
title={name || 'Collectible'}
|
|
151
|
-
className=
|
|
154
|
+
className={cn('aspect-square w-full', mediaClassname)}
|
|
152
155
|
src={proxiedAssetUrl}
|
|
153
156
|
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
|
|
154
157
|
sandbox="allow-scripts"
|
|
155
158
|
style={{ border: '0px' }}
|
|
156
|
-
onError={handleAssetError}
|
|
157
|
-
onLoad={handleAssetLoad}
|
|
159
|
+
onError={shouldListenForLoad ? handleAssetError : undefined}
|
|
160
|
+
onLoad={shouldListenForLoad ? handleAssetLoad : undefined}
|
|
158
161
|
/>
|
|
159
162
|
</div>
|
|
160
163
|
);
|
|
@@ -162,12 +165,12 @@ export function Media({
|
|
|
162
165
|
|
|
163
166
|
if (contentType.type === '3d-model' && !assetLoadFailed) {
|
|
164
167
|
return (
|
|
165
|
-
<div className={cn('h-full w-full',
|
|
168
|
+
<div className={cn('h-full w-full', containerClassNames)}>
|
|
166
169
|
<ModelViewer
|
|
167
170
|
src={proxiedAssetUrl}
|
|
168
171
|
posterSrc={ChessTileImage}
|
|
169
|
-
onLoad={handleAssetLoad}
|
|
170
|
-
onError={handleAssetError}
|
|
172
|
+
onLoad={shouldListenForLoad ? handleAssetLoad : undefined}
|
|
173
|
+
onError={shouldListenForLoad ? handleAssetError : undefined}
|
|
171
174
|
/>
|
|
172
175
|
</div>
|
|
173
176
|
);
|
|
@@ -180,10 +183,11 @@ export function Media({
|
|
|
180
183
|
// we can't hide the video controls in safari, when user hovers over the video they show up.
|
|
181
184
|
// `pointer-events-none` is the only way to hide them on hover
|
|
182
185
|
isSafari && 'pointer-events-none',
|
|
186
|
+
mediaClassname,
|
|
183
187
|
);
|
|
184
188
|
|
|
185
189
|
return (
|
|
186
|
-
<div className={
|
|
190
|
+
<div className={containerClassNames}>
|
|
187
191
|
{(assetLoading || contentType.loading || isLoading) && (
|
|
188
192
|
<MediaSkeleton />
|
|
189
193
|
)}
|
|
@@ -197,8 +201,8 @@ export function Media({
|
|
|
197
201
|
playsInline
|
|
198
202
|
muted
|
|
199
203
|
controlsList="nodownload noremoteplayback nofullscreen"
|
|
200
|
-
onError={handleAssetError}
|
|
201
|
-
onLoadedMetadata={handleAssetLoad}
|
|
204
|
+
onError={shouldListenForLoad ? handleAssetError : undefined}
|
|
205
|
+
onLoadedMetadata={shouldListenForLoad ? handleAssetLoad : undefined}
|
|
202
206
|
data-testid="collectible-asset-video"
|
|
203
207
|
>
|
|
204
208
|
<source src={proxiedAssetUrl} />
|
|
@@ -214,18 +218,19 @@ export function Media({
|
|
|
214
218
|
const imgClassNames = cn(
|
|
215
219
|
'absolute inset-0 h-full w-full object-cover transition-transform duration-200 ease-in-out group-hover:scale-hover',
|
|
216
220
|
assetLoading || contentType.loading || isLoading ? 'invisible' : 'visible',
|
|
221
|
+
mediaClassname,
|
|
217
222
|
);
|
|
218
223
|
|
|
219
224
|
return (
|
|
220
|
-
<div className={
|
|
225
|
+
<div className={containerClassNames}>
|
|
221
226
|
{(assetLoading || contentType.loading || isLoading) && <MediaSkeleton />}
|
|
222
227
|
|
|
223
228
|
<img
|
|
224
229
|
src={imgSrc}
|
|
225
230
|
alt={name || 'Collectible'}
|
|
226
231
|
className={imgClassNames}
|
|
227
|
-
onError={handleAssetError}
|
|
228
|
-
onLoad={handleAssetLoad}
|
|
232
|
+
onError={shouldListenForLoad ? handleAssetError : undefined}
|
|
233
|
+
onLoad={shouldListenForLoad ? handleAssetLoad : undefined}
|
|
229
234
|
/>
|
|
230
235
|
</div>
|
|
231
236
|
);
|
|
@@ -12,9 +12,15 @@ type MediaProps = {
|
|
|
12
12
|
name?: string;
|
|
13
13
|
assets: (string | undefined)[];
|
|
14
14
|
assetSrcPrefixUrl?: string;
|
|
15
|
+
/**
|
|
16
|
+
* @deprecated Use containerClassName instead
|
|
17
|
+
*/
|
|
15
18
|
className?: string;
|
|
19
|
+
containerClassName?: string;
|
|
20
|
+
mediaClassname?: string;
|
|
16
21
|
isLoading?: boolean;
|
|
17
22
|
fallbackContent?: ReactNode;
|
|
23
|
+
shouldListenForLoad?: boolean;
|
|
18
24
|
};
|
|
19
25
|
|
|
20
26
|
export type { ContentType, ContentTypeState, MediaProps };
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
OrderSide,
|
|
8
8
|
OrderStatus,
|
|
9
9
|
} from '../../../../_internal';
|
|
10
|
+
import type { DatabeatAnalytics } from '../../../../_internal/databeat';
|
|
10
11
|
import { BuyModalRouter } from '../components/BuyModalRouter';
|
|
11
12
|
import * as useLoadDataModule from '../hooks/useLoadData';
|
|
12
13
|
import { buyModalStore } from '../store';
|
|
@@ -189,6 +190,10 @@ const mockShopData = {
|
|
|
189
190
|
checkoutOptions: undefined,
|
|
190
191
|
};
|
|
191
192
|
|
|
193
|
+
const mockAnalyticsFn = {
|
|
194
|
+
trackBuyModalOpened: vi.fn(),
|
|
195
|
+
} as unknown as DatabeatAnalytics;
|
|
196
|
+
|
|
192
197
|
describe('BuyModalRouter', () => {
|
|
193
198
|
beforeEach(() => {
|
|
194
199
|
vi.clearAllMocks();
|
|
@@ -211,6 +216,7 @@ describe('BuyModalRouter', () => {
|
|
|
211
216
|
orderId: '1',
|
|
212
217
|
marketplaceType: 'market',
|
|
213
218
|
},
|
|
219
|
+
analyticsFn: mockAnalyticsFn,
|
|
214
220
|
});
|
|
215
221
|
|
|
216
222
|
// Mock useLoadData to return complete data for ERC721 market flow
|
|
@@ -246,6 +252,7 @@ describe('BuyModalRouter', () => {
|
|
|
246
252
|
orderId: '1',
|
|
247
253
|
marketplaceType: 'market',
|
|
248
254
|
},
|
|
255
|
+
analyticsFn: mockAnalyticsFn,
|
|
249
256
|
});
|
|
250
257
|
|
|
251
258
|
// Mock useLoadData to return complete data for ERC1155 market flow
|
|
@@ -279,6 +286,7 @@ describe('BuyModalRouter', () => {
|
|
|
279
286
|
marketplace: MarketplaceKind.sequence_marketplace_v2,
|
|
280
287
|
orderId: '1',
|
|
281
288
|
},
|
|
289
|
+
analyticsFn: mockAnalyticsFn,
|
|
282
290
|
});
|
|
283
291
|
|
|
284
292
|
// Mock incomplete data
|
|
@@ -318,6 +326,7 @@ describe('BuyModalRouter', () => {
|
|
|
318
326
|
},
|
|
319
327
|
marketplaceType: 'shop',
|
|
320
328
|
},
|
|
329
|
+
analyticsFn: mockAnalyticsFn,
|
|
321
330
|
});
|
|
322
331
|
|
|
323
332
|
// Mock useLoadData to return complete data for ERC721 shop flow
|
|
@@ -358,6 +367,7 @@ describe('BuyModalRouter', () => {
|
|
|
358
367
|
},
|
|
359
368
|
marketplaceType: 'shop',
|
|
360
369
|
},
|
|
370
|
+
analyticsFn: mockAnalyticsFn,
|
|
361
371
|
});
|
|
362
372
|
|
|
363
373
|
// Mock useLoadData to return complete data for ERC1155 shop flow
|
|
@@ -397,6 +407,7 @@ describe('BuyModalRouter', () => {
|
|
|
397
407
|
},
|
|
398
408
|
marketplaceType: 'shop',
|
|
399
409
|
},
|
|
410
|
+
analyticsFn: mockAnalyticsFn,
|
|
400
411
|
});
|
|
401
412
|
|
|
402
413
|
// Mock incomplete shop data
|
|
@@ -429,6 +440,7 @@ describe('BuyModalRouter', () => {
|
|
|
429
440
|
marketplace: MarketplaceKind.sequence_marketplace_v2,
|
|
430
441
|
orderId: '1',
|
|
431
442
|
},
|
|
443
|
+
analyticsFn: mockAnalyticsFn,
|
|
432
444
|
});
|
|
433
445
|
|
|
434
446
|
// Mock error state
|
|
@@ -459,6 +471,7 @@ describe('BuyModalRouter', () => {
|
|
|
459
471
|
marketplace: MarketplaceKind.sequence_marketplace_v2,
|
|
460
472
|
orderId: '1',
|
|
461
473
|
},
|
|
474
|
+
analyticsFn: mockAnalyticsFn,
|
|
462
475
|
});
|
|
463
476
|
|
|
464
477
|
// Mock loading state
|
|
@@ -495,6 +508,7 @@ describe('BuyModalRouter', () => {
|
|
|
495
508
|
},
|
|
496
509
|
marketplaceType: 'shop',
|
|
497
510
|
},
|
|
511
|
+
analyticsFn: mockAnalyticsFn,
|
|
498
512
|
});
|
|
499
513
|
|
|
500
514
|
// Mock unsupported collection type
|
|
@@ -531,6 +545,7 @@ describe('BuyModalRouter', () => {
|
|
|
531
545
|
orderId: '1',
|
|
532
546
|
// marketplaceType not specified - should default to MARKET
|
|
533
547
|
},
|
|
548
|
+
analyticsFn: mockAnalyticsFn,
|
|
534
549
|
});
|
|
535
550
|
|
|
536
551
|
// Mock useLoadData to return complete data for ERC721 market flow
|
|
@@ -4,6 +4,7 @@ import type { Address } from 'viem';
|
|
|
4
4
|
import type { Mock, MockInstance } from 'vitest';
|
|
5
5
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
6
6
|
import { TransactionCrypto } from '../../../../_internal';
|
|
7
|
+
import type { DatabeatAnalytics } from '../../../../_internal/databeat';
|
|
7
8
|
import { ERC1155ShopModal } from '../components/ERC1155ShopModal';
|
|
8
9
|
import * as useERC1155CheckoutModule from '../hooks/useERC1155Checkout';
|
|
9
10
|
import { buyModalStore } from '../store';
|
|
@@ -11,6 +12,10 @@ import { buyModalStore } from '../store';
|
|
|
11
12
|
// Mock the checkout hook
|
|
12
13
|
vi.mock('../hooks/useERC1155Checkout');
|
|
13
14
|
|
|
15
|
+
const mockAnalyticsFn = {
|
|
16
|
+
trackBuyModalOpened: vi.fn(),
|
|
17
|
+
} as unknown as DatabeatAnalytics;
|
|
18
|
+
|
|
14
19
|
const mockCollection = {
|
|
15
20
|
address: '0x123' as Address,
|
|
16
21
|
chainId: 1,
|
|
@@ -77,6 +82,7 @@ describe('ERC1155ShopModal', () => {
|
|
|
77
82
|
},
|
|
78
83
|
marketplaceType: 'shop',
|
|
79
84
|
},
|
|
85
|
+
analyticsFn: mockAnalyticsFn,
|
|
80
86
|
});
|
|
81
87
|
});
|
|
82
88
|
|
|
@@ -5,12 +5,17 @@ import {
|
|
|
5
5
|
screen,
|
|
6
6
|
waitForElementToBeRemoved,
|
|
7
7
|
} from '@test';
|
|
8
|
-
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
|
8
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
9
9
|
import type { Order } from '../../../../_internal';
|
|
10
10
|
import { MarketplaceKind, OrderSide, OrderStatus } from '../../../../_internal';
|
|
11
|
+
import type { DatabeatAnalytics } from '../../../../_internal/databeat';
|
|
11
12
|
import { ERC1155QuantityModal } from '../components/ERC1155QuantityModal';
|
|
12
13
|
import { buyModalStore } from '../store';
|
|
13
14
|
|
|
15
|
+
const analyticsFn = {
|
|
16
|
+
trackBuyModalOpened: vi.fn(),
|
|
17
|
+
} as unknown as DatabeatAnalytics;
|
|
18
|
+
|
|
14
19
|
const testOrder: Order = {
|
|
15
20
|
chainId: 1,
|
|
16
21
|
orderId: '1',
|
|
@@ -57,6 +62,7 @@ describe('ERC1155QuantityModal', () => {
|
|
|
57
62
|
marketplace: MarketplaceKind.sequence_marketplace_v2,
|
|
58
63
|
marketplaceType: 'market',
|
|
59
64
|
},
|
|
65
|
+
analyticsFn,
|
|
60
66
|
});
|
|
61
67
|
});
|
|
62
68
|
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import { beforeEach, describe, expect, it } from 'vitest';
|
|
1
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
2
|
import { MarketplaceKind } from '../../../../_internal';
|
|
3
|
+
import type { DatabeatAnalytics } from '../../../../_internal/databeat';
|
|
3
4
|
import { buyModalStore, type MarketplaceBuyModalProps } from '../store';
|
|
4
5
|
|
|
6
|
+
const analyticsFn = {
|
|
7
|
+
trackBuyModalOpened: vi.fn(),
|
|
8
|
+
} as unknown as DatabeatAnalytics;
|
|
9
|
+
|
|
5
10
|
describe('BuyModal Store', () => {
|
|
6
11
|
beforeEach(() => {
|
|
7
12
|
buyModalStore.send({ type: 'close' });
|
|
@@ -29,6 +34,7 @@ describe('BuyModal Store', () => {
|
|
|
29
34
|
props: mockProps,
|
|
30
35
|
onSuccess: () => {},
|
|
31
36
|
onError: () => {},
|
|
37
|
+
analyticsFn,
|
|
32
38
|
});
|
|
33
39
|
|
|
34
40
|
const state = buyModalStore.getSnapshot();
|
|
@@ -51,6 +57,7 @@ describe('BuyModal Store', () => {
|
|
|
51
57
|
props: mockProps,
|
|
52
58
|
onSuccess: () => {},
|
|
53
59
|
onError: () => {},
|
|
60
|
+
analyticsFn,
|
|
54
61
|
});
|
|
55
62
|
|
|
56
63
|
const openState = buyModalStore.getSnapshot();
|
|
@@ -75,6 +82,7 @@ describe('BuyModal Store', () => {
|
|
|
75
82
|
buyModalStore.send({
|
|
76
83
|
type: 'open',
|
|
77
84
|
props: mockProps,
|
|
85
|
+
analyticsFn,
|
|
78
86
|
});
|
|
79
87
|
|
|
80
88
|
const state1 = buyModalStore.getSnapshot();
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { Text, TokenImage } from '@0xsequence/design-system';
|
|
4
|
-
import {
|
|
4
|
+
import { useState } from 'react';
|
|
5
5
|
import type { Address } from 'viem';
|
|
6
|
+
import { maxUint256 } from 'viem';
|
|
6
7
|
import { DEFAULT_MARKETPLACE_FEE_PERCENTAGE } from '../../../../../consts';
|
|
7
8
|
import type { MarketplaceType } from '../../../../../types';
|
|
8
9
|
import { formatPriceWithFee } from '../../../../../utils/price';
|
|
@@ -12,11 +13,14 @@ import { ActionModal } from '../../_internal/components/actionModal';
|
|
|
12
13
|
import QuantityInput from '../../_internal/components/quantityInput';
|
|
13
14
|
import { buyModalStore, useIsOpen } from '../store';
|
|
14
15
|
|
|
16
|
+
const INFINITY_STRING = maxUint256.toString();
|
|
17
|
+
|
|
15
18
|
type ERC1155QuantityModalProps = {
|
|
16
19
|
order?: Order;
|
|
17
20
|
marketplaceType: MarketplaceType;
|
|
18
21
|
quantityDecimals: number;
|
|
19
22
|
quantityRemaining: string;
|
|
23
|
+
unlimitedSupply?: boolean;
|
|
20
24
|
salePrice?: {
|
|
21
25
|
amount: string;
|
|
22
26
|
currencyAddress: Address;
|
|
@@ -28,16 +32,17 @@ export const ERC1155QuantityModal = ({
|
|
|
28
32
|
order,
|
|
29
33
|
quantityDecimals,
|
|
30
34
|
quantityRemaining,
|
|
35
|
+
unlimitedSupply,
|
|
31
36
|
salePrice,
|
|
32
37
|
chainId,
|
|
33
38
|
marketplaceType,
|
|
34
39
|
}: ERC1155QuantityModalProps) => {
|
|
35
40
|
const isOpen = useIsOpen();
|
|
36
41
|
|
|
37
|
-
const localQuantity
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
const
|
|
42
|
+
const [localQuantity, setLocalQuantity] = useState('1');
|
|
43
|
+
const [invalidQuantity, setInvalidQuantity] = useState(false);
|
|
44
|
+
|
|
45
|
+
const maxQuantity = unlimitedSupply ? INFINITY_STRING : quantityRemaining;
|
|
41
46
|
|
|
42
47
|
return (
|
|
43
48
|
<ActionModal
|
|
@@ -61,10 +66,12 @@ export const ERC1155QuantityModal = ({
|
|
|
61
66
|
>
|
|
62
67
|
<div className="flex w-full flex-col gap-4">
|
|
63
68
|
<QuantityInput
|
|
64
|
-
|
|
65
|
-
|
|
69
|
+
quantity={localQuantity}
|
|
70
|
+
invalidQuantity={invalidQuantity}
|
|
71
|
+
onQuantityChange={setLocalQuantity}
|
|
72
|
+
onInvalidQuantityChange={setInvalidQuantity}
|
|
66
73
|
decimals={quantityDecimals}
|
|
67
|
-
maxQuantity={
|
|
74
|
+
maxQuantity={maxQuantity}
|
|
68
75
|
/>
|
|
69
76
|
|
|
70
77
|
<TotalPrice
|
|
@@ -37,6 +37,8 @@ export const ERC1155ShopModal = ({
|
|
|
37
37
|
isShop && modalProps.quantityRemaining
|
|
38
38
|
? modalProps.quantityRemaining.toString()
|
|
39
39
|
: '0';
|
|
40
|
+
const unlimitedSupply =
|
|
41
|
+
isShop && modalProps.unlimitedSupply ? modalProps.unlimitedSupply : false;
|
|
40
42
|
|
|
41
43
|
if (!quantity) {
|
|
42
44
|
return (
|
|
@@ -49,6 +51,7 @@ export const ERC1155ShopModal = ({
|
|
|
49
51
|
marketplaceType="shop"
|
|
50
52
|
quantityDecimals={quantityDecimals}
|
|
51
53
|
quantityRemaining={quantityRemaining}
|
|
54
|
+
unlimitedSupply={unlimitedSupply}
|
|
52
55
|
chainId={chainId}
|
|
53
56
|
/>
|
|
54
57
|
);
|
|
@@ -32,6 +32,7 @@ vi.mock('../../store', () => ({
|
|
|
32
32
|
useQuantity: vi.fn(() => 2),
|
|
33
33
|
useOnSuccess: vi.fn(() => vi.fn()),
|
|
34
34
|
useOnError: vi.fn(() => vi.fn()),
|
|
35
|
+
useBuyAnalyticsId: vi.fn(() => '123'),
|
|
35
36
|
buyModalStore: {
|
|
36
37
|
send: vi.fn(),
|
|
37
38
|
},
|
|
@@ -87,36 +88,38 @@ describe('useERC1155Checkout', () => {
|
|
|
87
88
|
expect(
|
|
88
89
|
mockUseERC1155SaleContractCheckout.mock.calls,
|
|
89
90
|
).toMatchInlineSnapshot(`
|
|
90
|
-
[
|
|
91
91
|
[
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
92
|
+
[
|
|
93
|
+
{
|
|
94
|
+
"chain": 1,
|
|
95
|
+
"chainId": "1",
|
|
96
|
+
"checkoutOptions": {
|
|
97
|
+
"crypto": "all",
|
|
98
|
+
"nftCheckout": [],
|
|
99
|
+
"onRamp": [],
|
|
100
|
+
"swap": [],
|
|
101
|
+
},
|
|
102
|
+
"collectionAddress": "0x123",
|
|
103
|
+
"contractAddress": "0x456",
|
|
104
|
+
"customProviderCallback": undefined,
|
|
105
|
+
"items": [
|
|
106
|
+
{
|
|
107
|
+
"quantity": "2",
|
|
108
|
+
"tokenId": "1",
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
"onClose": [Function],
|
|
112
|
+
"onError": [Function],
|
|
113
|
+
"onSuccess": [Function],
|
|
114
|
+
"supplementaryAnalyticsInfo": {
|
|
115
|
+
"marketplaceType": "shop",
|
|
116
|
+
"saleAnalyticsId": "123",
|
|
107
117
|
},
|
|
108
|
-
|
|
109
|
-
"onClose": [Function],
|
|
110
|
-
"onError": [Function],
|
|
111
|
-
"onSuccess": [Function],
|
|
112
|
-
"supplementaryAnalyticsInfo": {
|
|
113
|
-
"type": "mint_shop",
|
|
118
|
+
"wallet": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
|
|
114
119
|
},
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
]
|
|
119
|
-
`);
|
|
120
|
+
],
|
|
121
|
+
]
|
|
122
|
+
`);
|
|
120
123
|
|
|
121
124
|
expect(result.current.isEnabled).toBe(true);
|
|
122
125
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { skipToken, useQuery } from '@tanstack/react-query';
|
|
2
|
-
import type {
|
|
2
|
+
import type { Address } from 'viem';
|
|
3
3
|
import {
|
|
4
4
|
getMarketplaceClient,
|
|
5
5
|
type MarketplaceKind,
|
|
@@ -10,7 +10,7 @@ import { useMarketPlatformFee } from './useMarketPlatformFee';
|
|
|
10
10
|
|
|
11
11
|
export type CheckoutOptionsParams = {
|
|
12
12
|
chainId: number;
|
|
13
|
-
collectionAddress:
|
|
13
|
+
collectionAddress: Address;
|
|
14
14
|
orderId: string;
|
|
15
15
|
marketplace: MarketplaceKind;
|
|
16
16
|
};
|
|
@@ -6,7 +6,13 @@ import type {
|
|
|
6
6
|
CheckoutOptionsItem,
|
|
7
7
|
} from '../../../../_internal';
|
|
8
8
|
import { getQueryClient } from '../../../../_internal';
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
buyModalStore,
|
|
11
|
+
useBuyAnalyticsId,
|
|
12
|
+
useOnError,
|
|
13
|
+
useOnSuccess,
|
|
14
|
+
useQuantity,
|
|
15
|
+
} from '../store';
|
|
10
16
|
|
|
11
17
|
interface UseERC1155CheckoutParams {
|
|
12
18
|
chainId: number;
|
|
@@ -35,9 +41,11 @@ export const useERC1155Checkout = ({
|
|
|
35
41
|
const quantity = useQuantity();
|
|
36
42
|
const onSuccess = useOnSuccess();
|
|
37
43
|
const onError = useOnError();
|
|
44
|
+
const saleAnalyticsId = useBuyAnalyticsId();
|
|
38
45
|
|
|
39
46
|
const checkout = useERC1155SaleContractCheckout({
|
|
40
47
|
chain: chainId,
|
|
48
|
+
chainId: chainId.toString(),
|
|
41
49
|
contractAddress: salesContractAddress,
|
|
42
50
|
collectionAddress,
|
|
43
51
|
items: [
|
|
@@ -62,7 +70,8 @@ export const useERC1155Checkout = ({
|
|
|
62
70
|
},
|
|
63
71
|
customProviderCallback,
|
|
64
72
|
supplementaryAnalyticsInfo: {
|
|
65
|
-
|
|
73
|
+
marketplaceType: 'shop',
|
|
74
|
+
saleAnalyticsId,
|
|
66
75
|
},
|
|
67
76
|
});
|
|
68
77
|
|
|
@@ -20,6 +20,7 @@ import type { ModalCallbacks } from '../../_internal/types';
|
|
|
20
20
|
import {
|
|
21
21
|
buyModalStore,
|
|
22
22
|
isMarketProps,
|
|
23
|
+
useBuyAnalyticsId,
|
|
23
24
|
useBuyModalProps,
|
|
24
25
|
useOnError,
|
|
25
26
|
useOnSuccess,
|
|
@@ -43,6 +44,7 @@ interface GetBuyCollectableParams {
|
|
|
43
44
|
customCreditCardProviderCallback: ((buyStep: Step) => void) | undefined;
|
|
44
45
|
skipNativeBalanceCheck: boolean | undefined;
|
|
45
46
|
nativeTokenAddress: string | undefined;
|
|
47
|
+
buyAnalyticsId: string;
|
|
46
48
|
}
|
|
47
49
|
|
|
48
50
|
export const getBuyCollectableParams = async ({
|
|
@@ -62,6 +64,7 @@ export const getBuyCollectableParams = async ({
|
|
|
62
64
|
fee,
|
|
63
65
|
skipNativeBalanceCheck,
|
|
64
66
|
nativeTokenAddress,
|
|
67
|
+
buyAnalyticsId,
|
|
65
68
|
}: GetBuyCollectableParams) => {
|
|
66
69
|
const marketplaceClient = getMarketplaceClient(config);
|
|
67
70
|
const { steps } = await marketplaceClient.generateBuyTransaction({
|
|
@@ -137,6 +140,8 @@ export const getBuyCollectableParams = async ({
|
|
|
137
140
|
supplementaryAnalyticsInfo: {
|
|
138
141
|
requestId: orderId,
|
|
139
142
|
marketplaceKind: marketplace,
|
|
143
|
+
buyAnalyticsId,
|
|
144
|
+
marketplaceType: 'market',
|
|
140
145
|
},
|
|
141
146
|
onError: callbacks?.onError,
|
|
142
147
|
onClose: () => {
|
|
@@ -209,6 +214,7 @@ export const usePaymentModalParams = (args: usePaymentModalParams) => {
|
|
|
209
214
|
);
|
|
210
215
|
const onSuccess = useOnSuccess();
|
|
211
216
|
const onError = useOnError();
|
|
217
|
+
const buyAnalyticsId = useBuyAnalyticsId();
|
|
212
218
|
|
|
213
219
|
const queryEnabled =
|
|
214
220
|
!!wallet &&
|
|
@@ -243,6 +249,7 @@ export const usePaymentModalParams = (args: usePaymentModalParams) => {
|
|
|
243
249
|
customCreditCardProviderCallback,
|
|
244
250
|
skipNativeBalanceCheck,
|
|
245
251
|
nativeTokenAddress,
|
|
252
|
+
buyAnalyticsId,
|
|
246
253
|
})
|
|
247
254
|
: skipToken,
|
|
248
255
|
});
|
|
@@ -1,10 +1,18 @@
|
|
|
1
|
+
import { useAnalytics } from '../../../_internal/databeat';
|
|
1
2
|
import type { ModalCallbacks } from '../_internal/types';
|
|
2
3
|
import { type BuyModalProps, buyModalStore } from './store';
|
|
3
4
|
|
|
4
5
|
export const useBuyModal = (callbacks?: ModalCallbacks) => {
|
|
6
|
+
const analyticsFn = useAnalytics();
|
|
7
|
+
|
|
5
8
|
return {
|
|
6
9
|
show: (args: BuyModalProps) =>
|
|
7
|
-
buyModalStore.send({
|
|
10
|
+
buyModalStore.send({
|
|
11
|
+
type: 'open',
|
|
12
|
+
props: args,
|
|
13
|
+
...callbacks,
|
|
14
|
+
analyticsFn,
|
|
15
|
+
}),
|
|
8
16
|
close: () => buyModalStore.send({ type: 'close' }),
|
|
9
17
|
};
|
|
10
18
|
};
|