@bosonprotocol/react-kit 0.41.0-alpha.3 → 0.41.0-alpha.4

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.
Files changed (101) hide show
  1. package/dist/cjs/components/widgets/roblox/components/ConnectRoblox.js +3 -3
  2. package/dist/cjs/components/widgets/roblox/components/ConnectRoblox.js.map +1 -1
  3. package/dist/cjs/components/widgets/roblox/components/RobloxExchangesGrid.d.ts +1 -1
  4. package/dist/cjs/components/widgets/roblox/components/RobloxExchangesGrid.d.ts.map +1 -1
  5. package/dist/cjs/components/widgets/roblox/components/RobloxExchangesGrid.js.map +1 -1
  6. package/dist/cjs/components/widgets/roblox/components/RobloxProductsGrid.d.ts +1 -1
  7. package/dist/cjs/components/widgets/roblox/components/RobloxProductsGrid.d.ts.map +1 -1
  8. package/dist/cjs/hooks/roblox/context/RobloxProvider.js +2 -2
  9. package/dist/cjs/hooks/roblox/context/RobloxProvider.js.map +1 -1
  10. package/dist/cjs/hooks/roblox/useGetRobloxWalletAuth.d.ts +1 -1
  11. package/dist/cjs/hooks/roblox/useGetRobloxWalletAuth.d.ts.map +1 -1
  12. package/dist/cjs/hooks/roblox/useIsRobloxLoggedIn.d.ts +1 -1
  13. package/dist/cjs/hooks/roblox/useIsRobloxLoggedIn.d.ts.map +1 -1
  14. package/dist/cjs/hooks/roblox/useRobloxBackendLogin.d.ts +1 -1
  15. package/dist/cjs/hooks/roblox/useRobloxBackendLogin.d.ts.map +1 -1
  16. package/dist/cjs/hooks/roblox/useRobloxExchanges.d.ts +1 -1
  17. package/dist/cjs/hooks/roblox/useRobloxExchanges.d.ts.map +1 -1
  18. package/dist/cjs/hooks/roblox/useRobloxLocalStorage.d.ts +1 -1
  19. package/dist/cjs/hooks/roblox/useRobloxLocalStorage.d.ts.map +1 -1
  20. package/dist/cjs/hooks/roblox/useRobloxProducts.d.ts +1 -1
  21. package/dist/cjs/hooks/roblox/useRobloxProducts.d.ts.map +1 -1
  22. package/dist/cjs/hooks/useRenderTemplate.js +4 -6
  23. package/dist/cjs/hooks/useRenderTemplate.js.map +1 -1
  24. package/dist/cjs/lib/roblox/config.d.ts +11 -0
  25. package/dist/cjs/lib/roblox/config.d.ts.map +1 -0
  26. package/dist/cjs/lib/roblox/config.js +56 -0
  27. package/dist/cjs/lib/roblox/config.js.map +1 -0
  28. package/dist/cjs/lib/roblox/constants.d.ts +13 -0
  29. package/dist/cjs/lib/roblox/constants.d.ts.map +1 -0
  30. package/dist/cjs/lib/roblox/constants.js +16 -0
  31. package/dist/cjs/lib/roblox/constants.js.map +1 -0
  32. package/dist/cjs/lib/roblox/getIsOfferRobloxGated.js +2 -2
  33. package/dist/cjs/lib/roblox/getIsOfferRobloxGated.js.map +1 -1
  34. package/dist/cjs/lib/roblox/types.d.ts +86 -0
  35. package/dist/cjs/lib/roblox/types.d.ts.map +1 -0
  36. package/dist/cjs/lib/roblox/types.js +3 -0
  37. package/dist/cjs/lib/roblox/types.js.map +1 -0
  38. package/dist/cjs/lib/roblox/utils.d.ts +15 -0
  39. package/dist/cjs/lib/roblox/utils.d.ts.map +1 -0
  40. package/dist/cjs/lib/roblox/utils.js +40 -0
  41. package/dist/cjs/lib/roblox/utils.js.map +1 -0
  42. package/dist/esm/components/widgets/roblox/components/ConnectRoblox.js +1 -1
  43. package/dist/esm/components/widgets/roblox/components/ConnectRoblox.js.map +1 -1
  44. package/dist/esm/components/widgets/roblox/components/RobloxExchangesGrid.d.ts +1 -1
  45. package/dist/esm/components/widgets/roblox/components/RobloxExchangesGrid.d.ts.map +1 -1
  46. package/dist/esm/components/widgets/roblox/components/RobloxExchangesGrid.js.map +1 -1
  47. package/dist/esm/components/widgets/roblox/components/RobloxProductsGrid.d.ts +1 -1
  48. package/dist/esm/components/widgets/roblox/components/RobloxProductsGrid.d.ts.map +1 -1
  49. package/dist/esm/hooks/roblox/context/RobloxProvider.js +1 -1
  50. package/dist/esm/hooks/roblox/context/RobloxProvider.js.map +1 -1
  51. package/dist/esm/hooks/roblox/useGetRobloxWalletAuth.d.ts +1 -1
  52. package/dist/esm/hooks/roblox/useGetRobloxWalletAuth.d.ts.map +1 -1
  53. package/dist/esm/hooks/roblox/useIsRobloxLoggedIn.d.ts +1 -1
  54. package/dist/esm/hooks/roblox/useIsRobloxLoggedIn.d.ts.map +1 -1
  55. package/dist/esm/hooks/roblox/useRobloxBackendLogin.d.ts +1 -1
  56. package/dist/esm/hooks/roblox/useRobloxBackendLogin.d.ts.map +1 -1
  57. package/dist/esm/hooks/roblox/useRobloxExchanges.d.ts +1 -1
  58. package/dist/esm/hooks/roblox/useRobloxExchanges.d.ts.map +1 -1
  59. package/dist/esm/hooks/roblox/useRobloxLocalStorage.d.ts +1 -1
  60. package/dist/esm/hooks/roblox/useRobloxLocalStorage.d.ts.map +1 -1
  61. package/dist/esm/hooks/roblox/useRobloxProducts.d.ts +1 -1
  62. package/dist/esm/hooks/roblox/useRobloxProducts.d.ts.map +1 -1
  63. package/dist/esm/hooks/useRenderTemplate.js +4 -6
  64. package/dist/esm/hooks/useRenderTemplate.js.map +1 -1
  65. package/dist/esm/lib/roblox/config.d.ts +11 -0
  66. package/dist/esm/lib/roblox/config.d.ts.map +1 -0
  67. package/dist/esm/lib/roblox/config.js +53 -0
  68. package/dist/esm/lib/roblox/config.js.map +1 -0
  69. package/dist/esm/lib/roblox/constants.d.ts +13 -0
  70. package/dist/esm/lib/roblox/constants.d.ts.map +1 -0
  71. package/dist/esm/lib/roblox/constants.js +13 -0
  72. package/dist/esm/lib/roblox/constants.js.map +1 -0
  73. package/dist/esm/lib/roblox/getIsOfferRobloxGated.js +1 -1
  74. package/dist/esm/lib/roblox/getIsOfferRobloxGated.js.map +1 -1
  75. package/dist/esm/lib/roblox/types.d.ts +86 -0
  76. package/dist/esm/lib/roblox/types.d.ts.map +1 -0
  77. package/dist/esm/lib/roblox/types.js +2 -0
  78. package/dist/esm/lib/roblox/types.js.map +1 -0
  79. package/dist/esm/lib/roblox/utils.d.ts +15 -0
  80. package/dist/esm/lib/roblox/utils.d.ts.map +1 -0
  81. package/dist/esm/lib/roblox/utils.js +36 -0
  82. package/dist/esm/lib/roblox/utils.js.map +1 -0
  83. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  84. package/package.json +5 -5
  85. package/src/components/widgets/roblox/components/ConnectRoblox.tsx +1 -1
  86. package/src/components/widgets/roblox/components/ProductsRoblox.tsx +1 -1
  87. package/src/components/widgets/roblox/components/RobloxExchangesGrid.tsx +2 -2
  88. package/src/components/widgets/roblox/components/RobloxProductsGrid.tsx +1 -1
  89. package/src/hooks/roblox/context/RobloxProvider.tsx +1 -1
  90. package/src/hooks/roblox/useGetRobloxWalletAuth.ts +1 -1
  91. package/src/hooks/roblox/useIsRobloxLoggedIn.ts +1 -1
  92. package/src/hooks/roblox/useRobloxBackendLogin.ts +1 -1
  93. package/src/hooks/roblox/useRobloxExchanges.ts +1 -1
  94. package/src/hooks/roblox/useRobloxLocalStorage.ts +1 -1
  95. package/src/hooks/roblox/useRobloxProducts.ts +1 -1
  96. package/src/hooks/useRenderTemplate.ts +4 -6
  97. package/src/lib/roblox/config.ts +70 -0
  98. package/src/lib/roblox/constants.ts +15 -0
  99. package/src/lib/roblox/getIsOfferRobloxGated.ts +1 -1
  100. package/src/lib/roblox/types.ts +94 -0
  101. package/src/lib/roblox/utils.ts +57 -0
@@ -0,0 +1,57 @@
1
+ import { subgraph } from "@bosonprotocol/core-sdk";
2
+ import { ASSET_ID_ATTR_TRAIT_TYPE, ROBLOX_PRODUCT_TAG } from "./constants";
3
+ import { ConditionStruct, TokenType } from "@bosonprotocol/common";
4
+
5
+ /**
6
+ * Filter a Boson product, whether it's Roblox-related or not
7
+ * @param offerMetadata the Product Metadata object from Boson subgraph
8
+ * @param condition the ConditionStruct attached to the Boson offer
9
+ * @param nftContract address of the NFT contract used to token-gate the Roblox-Boson offer
10
+ * @param offerMetadata the Product Metadata object from Boson subgraph
11
+ * @returns false if not Roblox-related,
12
+ * otherwise returns the Roblox assetId the offer is related to
13
+ */
14
+ export function filterRobloxProduct(
15
+ offerMetadata: Pick<
16
+ subgraph.ProductV1MetadataEntityFieldsFragment,
17
+ "attributes"
18
+ > & { product: Pick<subgraph.ProductV1Product, "details_tags"> },
19
+ condition: ConditionStruct | undefined,
20
+ nftContract: string
21
+ ): string | false {
22
+ if (
23
+ offerMetadata.product &&
24
+ offerMetadata.product.details_tags &&
25
+ offerMetadata.product.details_tags
26
+ .map((t) => t.toLowerCase())
27
+ .includes(ROBLOX_PRODUCT_TAG.toLowerCase())
28
+ ) {
29
+ const robloxAssetId = offerMetadata.attributes?.find(
30
+ (attr) =>
31
+ attr.traitType.toLowerCase() === ASSET_ID_ATTR_TRAIT_TYPE.toLowerCase()
32
+ )?.value;
33
+ if (
34
+ condition &&
35
+ robloxAssetId &&
36
+ checkTokenGatingCondition(condition, {
37
+ tokenId: robloxAssetId,
38
+ nftContract
39
+ })
40
+ ) {
41
+ return robloxAssetId;
42
+ }
43
+ }
44
+ return false;
45
+ }
46
+
47
+ function checkTokenGatingCondition(
48
+ condition: ConditionStruct,
49
+ expected: { tokenId: string; nftContract: string }
50
+ ): boolean {
51
+ return (
52
+ condition.minTokenId.toString() === expected.tokenId &&
53
+ condition.maxTokenId.toString() === expected.tokenId &&
54
+ condition.tokenType === TokenType.MultiToken &&
55
+ condition.tokenAddress === expected.nftContract.toLowerCase()
56
+ );
57
+ }