@bosonprotocol/react-kit 0.36.0-alpha.9 → 0.36.1-alpha.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.
Files changed (182) hide show
  1. package/dist/cjs/components/form/Field.styles.d.ts +1 -0
  2. package/dist/cjs/components/form/Field.styles.d.ts.map +1 -1
  3. package/dist/cjs/components/form/Field.styles.js +8 -5
  4. package/dist/cjs/components/form/Field.styles.js.map +1 -1
  5. package/dist/cjs/components/form/Upload/BaseUpload.d.ts +2 -0
  6. package/dist/cjs/components/form/Upload/BaseUpload.d.ts.map +1 -1
  7. package/dist/cjs/components/image/Image.js +1 -1
  8. package/dist/cjs/components/image/Image.js.map +1 -1
  9. package/dist/cjs/components/image/Image.styles.d.ts +1 -1
  10. package/dist/cjs/components/image/Image.styles.d.ts.map +1 -1
  11. package/dist/cjs/components/image/Image.styles.js +2 -2
  12. package/dist/cjs/components/image/Image.styles.js.map +1 -1
  13. package/dist/cjs/components/modal/components/SellerFinance/FinanceWithdraw.js +1 -1
  14. package/dist/cjs/components/modal/components/SellerFinance/FinanceWithdraw.js.map +1 -1
  15. package/dist/cjs/components/modal/components/SellerFinance/FinancesStyles.d.ts.map +1 -1
  16. package/dist/cjs/components/modal/components/SellerFinance/FinancesStyles.js +37 -8
  17. package/dist/cjs/components/modal/components/SellerFinance/FinancesStyles.js.map +1 -1
  18. package/dist/cjs/components/ui/IpfsImage.d.ts.map +1 -1
  19. package/dist/cjs/components/ui/IpfsImage.js +41 -31
  20. package/dist/cjs/components/ui/IpfsImage.js.map +1 -1
  21. package/dist/cjs/components/ui/SvgImage.d.ts.map +1 -1
  22. package/dist/cjs/components/ui/SvgImage.js +2 -1
  23. package/dist/cjs/components/ui/SvgImage.js.map +1 -1
  24. package/dist/cjs/components/widgets/commit/CommitWidgetProviders.d.ts +2 -2
  25. package/dist/cjs/components/widgets/commit/CommitWidgetProviders.d.ts.map +1 -1
  26. package/dist/cjs/components/widgets/commit/CommitWidgetProviders.js +3 -3
  27. package/dist/cjs/components/widgets/commit/CommitWidgetProviders.js.map +1 -1
  28. package/dist/cjs/components/widgets/finance/FinanceWidgetProviders.d.ts +3 -1
  29. package/dist/cjs/components/widgets/finance/FinanceWidgetProviders.d.ts.map +1 -1
  30. package/dist/cjs/components/widgets/finance/FinanceWidgetProviders.js +17 -12
  31. package/dist/cjs/components/widgets/finance/FinanceWidgetProviders.js.map +1 -1
  32. package/dist/cjs/components/widgets/finance/useSellerRoles.d.ts +1 -8
  33. package/dist/cjs/components/widgets/finance/useSellerRoles.d.ts.map +1 -1
  34. package/dist/cjs/components/widgets/finance/useSellerRoles.js +3 -25
  35. package/dist/cjs/components/widgets/finance/useSellerRoles.js.map +1 -1
  36. package/dist/cjs/components/widgets/index.d.ts +2 -0
  37. package/dist/cjs/components/widgets/index.d.ts.map +1 -1
  38. package/dist/cjs/components/widgets/index.js +4 -1
  39. package/dist/cjs/components/widgets/index.js.map +1 -1
  40. package/dist/cjs/components/widgets/redemption/RedemptionWidgetProviders.d.ts +3 -1
  41. package/dist/cjs/components/widgets/redemption/RedemptionWidgetProviders.d.ts.map +1 -1
  42. package/dist/cjs/components/widgets/redemption/RedemptionWidgetProviders.js +22 -17
  43. package/dist/cjs/components/widgets/redemption/RedemptionWidgetProviders.js.map +1 -1
  44. package/dist/cjs/hooks/connection/useSwitchChain.d.ts.map +1 -1
  45. package/dist/cjs/hooks/connection/useSwitchChain.js +2 -2
  46. package/dist/cjs/hooks/connection/useSwitchChain.js.map +1 -1
  47. package/dist/cjs/hooks/contracts/BlockNumberProvider.d.ts +12 -0
  48. package/dist/cjs/hooks/contracts/BlockNumberProvider.d.ts.map +1 -0
  49. package/dist/cjs/hooks/contracts/BlockNumberProvider.js +93 -0
  50. package/dist/cjs/hooks/contracts/BlockNumberProvider.js.map +1 -0
  51. package/dist/cjs/hooks/contracts/useBlockNumber.d.ts +0 -5
  52. package/dist/cjs/hooks/contracts/useBlockNumber.d.ts.map +1 -1
  53. package/dist/cjs/hooks/contracts/useBlockNumber.js +4 -91
  54. package/dist/cjs/hooks/contracts/useBlockNumber.js.map +1 -1
  55. package/dist/cjs/index.d.ts +2 -0
  56. package/dist/cjs/index.d.ts.map +1 -1
  57. package/dist/cjs/index.js +2 -0
  58. package/dist/cjs/index.js.map +1 -1
  59. package/dist/cjs/lib/chains/getNativeLogoURI.d.ts.map +1 -1
  60. package/dist/cjs/lib/chains/getNativeLogoURI.js +2 -1
  61. package/dist/cjs/lib/chains/getNativeLogoURI.js.map +1 -1
  62. package/dist/cjs/lib/const/chainInfo.d.ts.map +1 -1
  63. package/dist/cjs/lib/const/chainInfo.js +2 -2
  64. package/dist/cjs/lib/const/chainInfo.js.map +1 -1
  65. package/dist/cjs/lib/const/networks.d.ts.map +1 -1
  66. package/dist/cjs/lib/const/networks.js +7 -6
  67. package/dist/cjs/lib/const/networks.js.map +1 -1
  68. package/dist/cjs/lib/const/providers.d.ts +1 -1
  69. package/dist/cjs/lib/const/providers.d.ts.map +1 -1
  70. package/dist/cjs/lib/const/providers.js +3 -1
  71. package/dist/cjs/lib/const/providers.js.map +1 -1
  72. package/dist/cjs/lib/const/routing.d.ts.map +1 -1
  73. package/dist/cjs/lib/const/routing.js +10 -0
  74. package/dist/cjs/lib/const/routing.js.map +1 -1
  75. package/dist/cjs/lib/const/tokens.d.ts +3 -3
  76. package/dist/cjs/lib/const/tokens.d.ts.map +1 -1
  77. package/dist/cjs/lib/const/tokens.js +5 -3
  78. package/dist/cjs/lib/const/tokens.js.map +1 -1
  79. package/dist/esm/components/form/Field.styles.d.ts +1 -0
  80. package/dist/esm/components/form/Field.styles.d.ts.map +1 -1
  81. package/dist/esm/components/form/Field.styles.js +7 -5
  82. package/dist/esm/components/form/Field.styles.js.map +1 -1
  83. package/dist/esm/components/form/Upload/BaseUpload.d.ts +2 -0
  84. package/dist/esm/components/form/Upload/BaseUpload.d.ts.map +1 -1
  85. package/dist/esm/components/image/Image.js +2 -2
  86. package/dist/esm/components/image/Image.js.map +1 -1
  87. package/dist/esm/components/image/Image.styles.d.ts +1 -1
  88. package/dist/esm/components/image/Image.styles.d.ts.map +1 -1
  89. package/dist/esm/components/image/Image.styles.js +1 -1
  90. package/dist/esm/components/image/Image.styles.js.map +1 -1
  91. package/dist/esm/components/modal/components/SellerFinance/FinanceWithdraw.js +1 -1
  92. package/dist/esm/components/modal/components/SellerFinance/FinanceWithdraw.js.map +1 -1
  93. package/dist/esm/components/modal/components/SellerFinance/FinancesStyles.d.ts.map +1 -1
  94. package/dist/esm/components/modal/components/SellerFinance/FinancesStyles.js +4 -5
  95. package/dist/esm/components/modal/components/SellerFinance/FinancesStyles.js.map +1 -1
  96. package/dist/esm/components/ui/IpfsImage.d.ts.map +1 -1
  97. package/dist/esm/components/ui/IpfsImage.js +41 -31
  98. package/dist/esm/components/ui/IpfsImage.js.map +1 -1
  99. package/dist/esm/components/ui/SvgImage.d.ts.map +1 -1
  100. package/dist/esm/components/ui/SvgImage.js +2 -1
  101. package/dist/esm/components/ui/SvgImage.js.map +1 -1
  102. package/dist/esm/components/widgets/commit/CommitWidgetProviders.d.ts +2 -2
  103. package/dist/esm/components/widgets/commit/CommitWidgetProviders.d.ts.map +1 -1
  104. package/dist/esm/components/widgets/commit/CommitWidgetProviders.js +2 -2
  105. package/dist/esm/components/widgets/commit/CommitWidgetProviders.js.map +1 -1
  106. package/dist/esm/components/widgets/finance/FinanceWidgetProviders.d.ts +3 -1
  107. package/dist/esm/components/widgets/finance/FinanceWidgetProviders.d.ts.map +1 -1
  108. package/dist/esm/components/widgets/finance/FinanceWidgetProviders.js +17 -12
  109. package/dist/esm/components/widgets/finance/FinanceWidgetProviders.js.map +1 -1
  110. package/dist/esm/components/widgets/finance/useSellerRoles.d.ts +1 -8
  111. package/dist/esm/components/widgets/finance/useSellerRoles.d.ts.map +1 -1
  112. package/dist/esm/components/widgets/finance/useSellerRoles.js +3 -24
  113. package/dist/esm/components/widgets/finance/useSellerRoles.js.map +1 -1
  114. package/dist/esm/components/widgets/index.d.ts +2 -0
  115. package/dist/esm/components/widgets/index.d.ts.map +1 -1
  116. package/dist/esm/components/widgets/index.js +2 -0
  117. package/dist/esm/components/widgets/index.js.map +1 -1
  118. package/dist/esm/components/widgets/redemption/RedemptionWidgetProviders.d.ts +3 -1
  119. package/dist/esm/components/widgets/redemption/RedemptionWidgetProviders.d.ts.map +1 -1
  120. package/dist/esm/components/widgets/redemption/RedemptionWidgetProviders.js +22 -17
  121. package/dist/esm/components/widgets/redemption/RedemptionWidgetProviders.js.map +1 -1
  122. package/dist/esm/hooks/connection/useSwitchChain.d.ts.map +1 -1
  123. package/dist/esm/hooks/connection/useSwitchChain.js +3 -3
  124. package/dist/esm/hooks/connection/useSwitchChain.js.map +1 -1
  125. package/dist/esm/hooks/contracts/BlockNumberProvider.d.ts +12 -0
  126. package/dist/esm/hooks/contracts/BlockNumberProvider.d.ts.map +1 -0
  127. package/dist/esm/hooks/contracts/BlockNumberProvider.js +86 -0
  128. package/dist/esm/hooks/contracts/BlockNumberProvider.js.map +1 -0
  129. package/dist/esm/hooks/contracts/useBlockNumber.d.ts +0 -5
  130. package/dist/esm/hooks/contracts/useBlockNumber.d.ts.map +1 -1
  131. package/dist/esm/hooks/contracts/useBlockNumber.js +2 -85
  132. package/dist/esm/hooks/contracts/useBlockNumber.js.map +1 -1
  133. package/dist/esm/index.d.ts +2 -0
  134. package/dist/esm/index.d.ts.map +1 -1
  135. package/dist/esm/index.js +2 -0
  136. package/dist/esm/index.js.map +1 -1
  137. package/dist/esm/lib/chains/getNativeLogoURI.d.ts.map +1 -1
  138. package/dist/esm/lib/chains/getNativeLogoURI.js +2 -1
  139. package/dist/esm/lib/chains/getNativeLogoURI.js.map +1 -1
  140. package/dist/esm/lib/const/chainInfo.d.ts.map +1 -1
  141. package/dist/esm/lib/const/chainInfo.js +3 -3
  142. package/dist/esm/lib/const/chainInfo.js.map +1 -1
  143. package/dist/esm/lib/const/networks.d.ts.map +1 -1
  144. package/dist/esm/lib/const/networks.js +7 -6
  145. package/dist/esm/lib/const/networks.js.map +1 -1
  146. package/dist/esm/lib/const/providers.d.ts +1 -1
  147. package/dist/esm/lib/const/providers.d.ts.map +1 -1
  148. package/dist/esm/lib/const/providers.js +4 -2
  149. package/dist/esm/lib/const/providers.js.map +1 -1
  150. package/dist/esm/lib/const/routing.d.ts.map +1 -1
  151. package/dist/esm/lib/const/routing.js +11 -1
  152. package/dist/esm/lib/const/routing.js.map +1 -1
  153. package/dist/esm/lib/const/tokens.d.ts +3 -3
  154. package/dist/esm/lib/const/tokens.d.ts.map +1 -1
  155. package/dist/esm/lib/const/tokens.js +5 -2
  156. package/dist/esm/lib/const/tokens.js.map +1 -1
  157. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  158. package/package.json +4 -4
  159. package/src/components/form/Field.styles.ts +8 -5
  160. package/src/components/image/Image.styles.ts +1 -1
  161. package/src/components/image/Image.tsx +2 -2
  162. package/src/components/modal/components/SellerFinance/FinanceWithdraw.tsx +1 -1
  163. package/src/components/modal/components/SellerFinance/FinancesStyles.tsx +4 -5
  164. package/src/components/ui/IpfsImage.tsx +58 -53
  165. package/src/components/ui/SvgImage.tsx +3 -1
  166. package/src/components/widgets/commit/CommitWidgetProviders.tsx +5 -5
  167. package/src/components/widgets/finance/FinanceWidgetProviders.tsx +44 -28
  168. package/src/components/widgets/finance/useSellerRoles.ts +4 -38
  169. package/src/components/widgets/index.tsx +2 -0
  170. package/src/components/widgets/redemption/RedemptionWidgetProviders.tsx +56 -40
  171. package/src/hooks/connection/useSwitchChain.ts +8 -3
  172. package/src/hooks/contracts/BlockNumberProvider.tsx +126 -0
  173. package/src/hooks/contracts/useBlockNumber.tsx +2 -127
  174. package/src/index.tsx +2 -0
  175. package/src/lib/chains/getNativeLogoURI.ts +2 -1
  176. package/src/lib/const/chainInfo.ts +9 -3
  177. package/src/lib/const/networks.ts +7 -6
  178. package/src/lib/const/providers.ts +10 -3
  179. package/src/lib/const/routing.ts +12 -1
  180. package/src/lib/const/tokens.ts +24 -7
  181. package/src/stories/ConnectWallet.stories.tsx +1 -1
  182. package/src/stories/buttons/Upload.stories.tsx +8 -1
@@ -17,8 +17,7 @@ import { zIndex } from "./zIndex";
17
17
 
18
18
  type LoadingStatus = "loading" | "success" | "error";
19
19
 
20
- const ImageWrapper = styled.div<{ $hide?: boolean }>`
21
- display: ${({ $hide }) => ($hide ? "none !important" : undefined)};
20
+ const ImageWrapper = styled.div`
22
21
  overflow: hidden;
23
22
  position: relative;
24
23
  z-index: ${zIndex.OfferCard};
@@ -52,17 +51,25 @@ const ImageContainer = styled.img`
52
51
  object-fit: cover;
53
52
  `;
54
53
 
55
- const ImagePlaceholder = styled.div`
54
+ const Overlay = styled.div<{ $visible: boolean }>`
55
+ display: ${({ $visible }) => ($visible ? "flex" : "none")};
56
56
  position: absolute;
57
57
  top: 0;
58
- height: 100%;
58
+ left: 0;
59
59
  width: 100%;
60
+ height: 100%;
60
61
  background-color: ${colors.greyDark};
61
- display: flex;
62
62
  flex-direction: column;
63
63
  justify-content: center;
64
64
  align-items: center;
65
+ z-index: 1;
66
+ `;
65
67
 
68
+ const ImagePlaceholder = styled.div`
69
+ display: flex;
70
+ flex-direction: column;
71
+ justify-content: center;
72
+ align-items: center;
66
73
  span {
67
74
  ${buttonText}
68
75
  font-size: inherit;
@@ -115,33 +122,64 @@ export const IpfsImage: React.FC<IpfsImageProps> = ({
115
122
  if (src === currentSrc) {
116
123
  return;
117
124
  }
118
- // reset all if src changes
119
- setStatus(withLoading ? "loading" : "success");
125
+ setStatus((status) =>
126
+ status === "success" ? "success" : withLoading ? "loading" : "success"
127
+ );
120
128
  setCurrentSrc(
121
129
  getImageUrl(src, overrides?.ipfsGateway || ipfsGateway, optimizationOpts)
122
130
  );
123
131
  setDidOriginalSrcFail(false);
124
- // eslint-disable-next-line react-hooks/exhaustive-deps
125
- }, [src]);
132
+ }, [
133
+ src,
134
+ overrides?.ipfsGateway,
135
+ ipfsGateway,
136
+ optimizationOpts,
137
+ currentSrc,
138
+ withLoading
139
+ ]);
140
+
126
141
  const isError = status === "error";
127
142
  const isLoading = status === "loading";
128
143
  const isSuccess = status === "success";
129
144
 
130
145
  return (
131
- <>
132
- <ImageWrapper
133
- {...rest}
134
- $hide={!isLoading}
135
- className={"loading-container " + rest.className}
136
- >
146
+ <ImageWrapper {...rest} className={rest.className}>
147
+ <ImageContainer
148
+ data-testid={dataTestId}
149
+ src={currentSrc}
150
+ alt={alt}
151
+ onLoad={() => handleSetStatus("success")}
152
+ onError={() => {
153
+ if (didOriginalSrcFail) {
154
+ handleSetStatus("error");
155
+ } else {
156
+ setDidOriginalSrcFail(true);
157
+ const fallbackUrl = getFallbackImageUrl(
158
+ src,
159
+ ipfsGateway,
160
+ optimizationOpts
161
+ );
162
+ if (
163
+ fallbackUrl.startsWith("unsafe:") ||
164
+ fallbackUrl === currentSrc
165
+ ) {
166
+ handleSetStatus("error");
167
+ } else {
168
+ setCurrentSrc(fallbackUrl);
169
+ }
170
+ }
171
+ }}
172
+ />
173
+ {children}
174
+ <Overlay $visible={isLoading}>
137
175
  <ImagePlaceholder>
138
176
  <Typography tag="div">
139
177
  <Loading />
140
178
  </Typography>
141
179
  </ImagePlaceholder>
142
- </ImageWrapper>
143
- <ImageWrapper {...rest} $hide={!isError}>
144
- <ImagePlaceholder data-image-placeholder>
180
+ </Overlay>
181
+ <Overlay $visible={!isLoading && (isError || !isSuccess)}>
182
+ <ImagePlaceholder>
145
183
  {showPlaceholderText ? (
146
184
  <ImageIcon size={50} color={colors.white} />
147
185
  ) : (
@@ -151,40 +189,7 @@ export const IpfsImage: React.FC<IpfsImageProps> = ({
151
189
  <Typography tag="span">IMAGE NOT AVAILABLE</Typography>
152
190
  )}
153
191
  </ImagePlaceholder>
154
- </ImageWrapper>
155
- <ImageWrapper
156
- {...rest}
157
- $hide={!isSuccess}
158
- className={"image-container " + rest.className}
159
- >
160
- {children || ""}
161
- <ImageContainer
162
- data-testid={dataTestId}
163
- src={currentSrc}
164
- alt={alt}
165
- onLoad={() => handleSetStatus("success")}
166
- onError={() => {
167
- if (didOriginalSrcFail) {
168
- handleSetStatus("error");
169
- } else {
170
- setDidOriginalSrcFail(true);
171
- const fallbackUrl = getFallbackImageUrl(
172
- src,
173
- ipfsGateway,
174
- optimizationOpts
175
- );
176
- if (
177
- fallbackUrl.startsWith("unsafe:") ||
178
- fallbackUrl === currentSrc
179
- ) {
180
- handleSetStatus("error");
181
- } else {
182
- setCurrentSrc(fallbackUrl);
183
- }
184
- }
185
- }}
186
- />
187
- </ImageWrapper>
188
- </>
192
+ </Overlay>
193
+ </ImageWrapper>
189
194
  );
190
195
  };
@@ -21,6 +21,8 @@ const SvgWrapper = styled.div`
21
21
 
22
22
  export const SvgImage: React.FC<SvgImageProps> = withQueryClientProvider(
23
23
  ({ src, ...rest }) => {
24
+ const isStringWithSvg =
25
+ !!src && typeof src === "string" && src.toLowerCase().startsWith("<svg");
24
26
  const { data: svgHtml, isLoading } = useQuery(
25
27
  [src],
26
28
  async () => {
@@ -37,7 +39,7 @@ export const SvgImage: React.FC<SvgImageProps> = withQueryClientProvider(
37
39
  return svgText;
38
40
  },
39
41
  {
40
- enabled: typeof src === "string",
42
+ enabled: isStringWithSvg,
41
43
  staleTime: Infinity
42
44
  }
43
45
  );
@@ -20,7 +20,7 @@ import ConvertionRateProvider, {
20
20
  ConvertionRateProviderProps
21
21
  } from "../finance/convertion-rate/ConvertionRateProvider";
22
22
  import { Web3Provider, Web3ProviderProps } from "../../wallet2/web3Provider";
23
- import { BlockNumberProvider } from "../../../hooks/contracts/useBlockNumber";
23
+ import { BlockNumberProvider } from "../../../hooks/contracts/BlockNumberProvider";
24
24
  import {
25
25
  RedemptionProvider,
26
26
  RedemptionProviderProps
@@ -35,14 +35,14 @@ import { RobloxProvider } from "../../../hooks/roblox/context/RobloxProvider";
35
35
 
36
36
  export type CommitWidgetProvidersProps = IpfsProviderProps &
37
37
  Omit<ConfigProviderProps, "magicLinkKey" | "infuraKey"> &
38
- BosonThemeProviderProps &
38
+ Partial<BosonThemeProviderProps> &
39
39
  RedemptionProviderProps &
40
40
  ConvertionRateProviderProps &
41
41
  Omit<Web3ProviderProps, "infuraKey"> &
42
42
  BosonProviderProps &
43
43
  WithReduxProviderProps & {
44
44
  children: ReactNode;
45
- withGlobalStyle: boolean;
45
+ withGlobalStyle?: boolean;
46
46
  };
47
47
 
48
48
  const { infuraKey, magicLinkKey } = CONFIG;
@@ -78,8 +78,8 @@ export const CommitWidgetProviders: React.FC<CommitWidgetProvidersProps> =
78
78
 
79
79
  return (
80
80
  <BosonThemeProvider
81
- theme={props.theme || storyBookThemeKey}
82
- roundness={props.roundness}
81
+ theme={props.theme || storyBookThemeKey || "light"}
82
+ roundness={props.roundness || "min"}
83
83
  >
84
84
  {withGlobalStyle && <GlobalStyledThemed />}
85
85
  <WithReduxProvider
@@ -8,7 +8,6 @@ import {
8
8
  import { ModalProvider } from "../../modal/ModalProvider";
9
9
  import { withQueryClientProvider } from "../../queryClient/withQueryClientProvider";
10
10
  import { SignerProvider } from "../../signer/SignerProvider";
11
- import GlobalStyle from "../../styles/GlobalStyle";
12
11
  import { WithReduxProvider, WithReduxProviderProps } from "../ReduxProvider";
13
12
  import { getParentWindowOrigin } from "../common";
14
13
  import { CommonWidgetTypes } from "../types";
@@ -17,51 +16,68 @@ import ConvertionRateProvider, {
17
16
  } from "./convertion-rate/ConvertionRateProvider";
18
17
  import { BosonProvider, BosonProviderProps } from "../../boson/BosonProvider";
19
18
  import { Web3Provider, Web3ProviderProps } from "../../wallet2/web3Provider";
20
- import { BlockNumberProvider } from "../../../hooks/contracts/useBlockNumber";
19
+ import { BlockNumberProvider } from "../../../hooks/contracts/BlockNumberProvider";
20
+ import {
21
+ BosonThemeProvider,
22
+ BosonThemeProviderProps,
23
+ useBosonTheme
24
+ } from "../BosonThemeProvider";
25
+ import { GlobalStyledThemed } from "../../styles/GlobalStyledThemed";
21
26
 
22
27
  export type FinanceWidgetProvidersProps = Omit<
23
28
  ConfigProviderProps,
24
29
  "magicLinkKey" | "infuraKey"
25
30
  > &
26
31
  Omit<Web3ProviderProps, "infuraKey"> &
32
+ Partial<BosonThemeProviderProps> &
27
33
  CommonWidgetTypes &
28
34
  ConvertionRateProviderProps &
29
35
  BosonProviderProps &
30
36
  WithReduxProviderProps & {
31
37
  children: ReactNode;
38
+ withGlobalStyle?: boolean;
32
39
  };
33
40
 
34
41
  const { infuraKey, magicLinkKey } = CONFIG;
35
42
 
36
43
  export const FinanceWidgetProviders: React.FC<FinanceWidgetProvidersProps> =
37
- withQueryClientProvider(({ children, ...props }) => {
44
+ withQueryClientProvider(({ children, withGlobalStyle, ...props }) => {
38
45
  const parentOrigin = getParentWindowOrigin();
46
+ const { themeKey: storyBookThemeKey } =
47
+ useBosonTheme({
48
+ throwOnError: false
49
+ }) || {};
39
50
  return (
40
- <WithReduxProvider
41
- withCustomReduxContext={props.withCustomReduxContext}
42
- withReduxProvider={props.withReduxProvider}
51
+ <BosonThemeProvider
52
+ theme={props.theme || storyBookThemeKey || "light"}
53
+ roundness={props.roundness || "min"}
43
54
  >
44
- <Web3Provider {...props} infuraKey={infuraKey}>
45
- <ConfigProvider
46
- magicLinkKey={magicLinkKey}
47
- infuraKey={infuraKey}
48
- {...props}
49
- >
50
- <BlockNumberProvider>
51
- <BosonProvider {...props}>
52
- <GlobalStyle />
53
- <SignerProvider
54
- parentOrigin={parentOrigin}
55
- withExternalSigner={props.withExternalSigner}
56
- >
57
- <ConvertionRateProvider>
58
- <ModalProvider>{children}</ModalProvider>
59
- </ConvertionRateProvider>
60
- </SignerProvider>
61
- </BosonProvider>
62
- </BlockNumberProvider>
63
- </ConfigProvider>
64
- </Web3Provider>
65
- </WithReduxProvider>
55
+ {withGlobalStyle && <GlobalStyledThemed />}
56
+ <WithReduxProvider
57
+ withCustomReduxContext={props.withCustomReduxContext}
58
+ withReduxProvider={props.withReduxProvider}
59
+ >
60
+ <Web3Provider {...props} infuraKey={infuraKey}>
61
+ <ConfigProvider
62
+ magicLinkKey={magicLinkKey}
63
+ infuraKey={infuraKey}
64
+ {...props}
65
+ >
66
+ <BlockNumberProvider>
67
+ <BosonProvider {...props}>
68
+ <SignerProvider
69
+ parentOrigin={parentOrigin}
70
+ withExternalSigner={props.withExternalSigner}
71
+ >
72
+ <ConvertionRateProvider>
73
+ <ModalProvider>{children}</ModalProvider>
74
+ </ConvertionRateProvider>
75
+ </SignerProvider>
76
+ </BosonProvider>
77
+ </BlockNumberProvider>
78
+ </ConfigProvider>
79
+ </Web3Provider>
80
+ </WithReduxProvider>
81
+ </BosonThemeProvider>
66
82
  );
67
83
  });
@@ -1,8 +1,6 @@
1
- import { gql } from "graphql-request";
2
1
  import { useMemo } from "react";
3
2
  import { useQuery } from "react-query";
4
3
  import { useCoreSDKWithContext } from "../../../hooks/core-sdk/useCoreSdkWithContext";
5
- import { fetchSubgraph } from "../../../lib/subgraph/subgraph";
6
4
  import { useAccount } from "../../../hooks/connection/connection";
7
5
 
8
6
  function lowerCase(str: string | undefined) {
@@ -19,44 +17,12 @@ export interface SellerRolesProps {
19
17
  export function useSellerRoles(id: string) {
20
18
  const { address } = useAccount();
21
19
  const coreSDK = useCoreSDKWithContext();
22
-
23
20
  const { data } = useQuery(
24
- ["seller-roles", { id }],
21
+ ["seller-roles", id, coreSDK.uuid],
25
22
  async () => {
26
- const result = await fetchSubgraph<{
27
- sellers: {
28
- id: string;
29
- admin: string;
30
- clerk: string;
31
- assistant: string;
32
- treasury: string;
33
- active: boolean;
34
- }[];
35
- }>(
36
- coreSDK.subgraphUrl,
37
- gql`
38
- query GetSellerByID(
39
- $id: String
40
- ) {
41
- sellers(
42
- where: {
43
- ${id ? `id: "${id}"` : ""}
44
- }
45
- ) {
46
- id
47
- admin
48
- active
49
- clerk
50
- assistant
51
- treasury
52
- }
53
- }
54
- `,
55
- {
56
- id
57
- }
58
- );
59
- return result?.sellers[0] ?? null;
23
+ const seller = await coreSDK.getSellerById(id);
24
+
25
+ return seller ?? null;
60
26
  },
61
27
  {
62
28
  enabled: !!id
@@ -1,4 +1,6 @@
1
1
  export * from "./BosonThemeProvider";
2
+ export * from "./ReduxProvider";
3
+ export { BlockNumberProvider } from "../../hooks/contracts/BlockNumberProvider";
2
4
  export { RedemptionWidgetAction } from "./redemption/provider/RedemptionWidgetContext";
3
5
 
4
6
  export * from "./finance/FinanceWidget";
@@ -9,7 +9,6 @@ import { IpfsProvider, IpfsProviderProps } from "../../ipfs/IpfsProvider";
9
9
  import { ModalProvider } from "../../modal/ModalProvider";
10
10
  import { withQueryClientProvider } from "../../queryClient/withQueryClientProvider";
11
11
  import { SignerProvider } from "../../signer/SignerProvider";
12
- import GlobalStyle from "../../styles/GlobalStyle";
13
12
  import { WithReduxProvider, WithReduxProviderProps } from "../ReduxProvider";
14
13
  import { getParentWindowOrigin } from "../common";
15
14
  import ConvertionRateProvider, {
@@ -26,12 +25,19 @@ import {
26
25
  } from "./provider/RedemptionWidgetProvider";
27
26
  import { BosonProvider, BosonProviderProps } from "../../boson/BosonProvider";
28
27
  import { Web3Provider, Web3ProviderProps } from "../../wallet2/web3Provider";
29
- import { BlockNumberProvider } from "../../../hooks/contracts/useBlockNumber";
28
+ import { BlockNumberProvider } from "../../../hooks/contracts/BlockNumberProvider";
30
29
  import { RobloxProvider } from "../../../hooks/roblox/context/RobloxProvider";
30
+ import {
31
+ BosonThemeProvider,
32
+ BosonThemeProviderProps,
33
+ useBosonTheme
34
+ } from "../BosonThemeProvider";
35
+ import { GlobalStyledThemed } from "../../styles/GlobalStyledThemed";
31
36
 
32
37
  export type RedemptionWidgetProvidersProps = IpfsProviderProps &
33
38
  Omit<ConfigProviderProps, "magicLinkKey" | "infuraKey"> &
34
39
  RedemptionProviderProps &
40
+ Partial<BosonThemeProviderProps> &
35
41
  Omit<RedemptionWidgetProviderProps, "setWidgetAction"> &
36
42
  ConvertionRateProviderProps &
37
43
  CommonWidgetTypes &
@@ -41,51 +47,61 @@ export type RedemptionWidgetProvidersProps = IpfsProviderProps &
41
47
  signatures?: string[] | undefined | null;
42
48
  } & {
43
49
  children: ReactNode;
50
+ withGlobalStyle?: boolean;
44
51
  };
45
52
 
46
53
  const { infuraKey, magicLinkKey } = CONFIG;
47
54
 
48
55
  export const RedemptionWidgetProviders: React.FC<RedemptionWidgetProvidersProps> =
49
- withQueryClientProvider(({ children, ...props }) => {
56
+ withQueryClientProvider(({ children, withGlobalStyle, ...props }) => {
50
57
  const parentOrigin = getParentWindowOrigin();
58
+ const { themeKey: storyBookThemeKey } =
59
+ useBosonTheme({
60
+ throwOnError: false
61
+ }) || {};
51
62
  return (
52
- <WithReduxProvider
53
- withCustomReduxContext={props.withCustomReduxContext}
54
- withReduxProvider={props.withReduxProvider}
63
+ <BosonThemeProvider
64
+ theme={props.theme || storyBookThemeKey || "light"}
65
+ roundness={props.roundness || "min"}
55
66
  >
56
- <Web3Provider {...props} infuraKey={infuraKey}>
57
- <ConfigProvider
58
- magicLinkKey={magicLinkKey}
59
- {...props}
60
- infuraKey={infuraKey}
61
- >
62
- <RobloxProvider>
63
- <BlockNumberProvider>
64
- <BosonProvider {...props}>
65
- <GlobalStyle />
66
- <SignerProvider
67
- parentOrigin={parentOrigin}
68
- withExternalSigner={props.withExternalSigner}
69
- >
70
- <ChatProvider>
71
- <IpfsProvider {...props}>
72
- <ConvertionRateProvider>
73
- <ModalProvider>
74
- <RedemptionProvider {...props}>
75
- <RedemptionWidgetProvider {...props}>
76
- {children}
77
- </RedemptionWidgetProvider>
78
- </RedemptionProvider>
79
- </ModalProvider>
80
- </ConvertionRateProvider>
81
- </IpfsProvider>
82
- </ChatProvider>
83
- </SignerProvider>
84
- </BosonProvider>
85
- </BlockNumberProvider>
86
- </RobloxProvider>
87
- </ConfigProvider>
88
- </Web3Provider>
89
- </WithReduxProvider>
67
+ {withGlobalStyle && <GlobalStyledThemed />}
68
+ <WithReduxProvider
69
+ withCustomReduxContext={props.withCustomReduxContext}
70
+ withReduxProvider={props.withReduxProvider}
71
+ >
72
+ <Web3Provider {...props} infuraKey={infuraKey}>
73
+ <ConfigProvider
74
+ magicLinkKey={magicLinkKey}
75
+ {...props}
76
+ infuraKey={infuraKey}
77
+ >
78
+ <RobloxProvider>
79
+ <BlockNumberProvider>
80
+ <BosonProvider {...props}>
81
+ <SignerProvider
82
+ parentOrigin={parentOrigin}
83
+ withExternalSigner={props.withExternalSigner}
84
+ >
85
+ <ChatProvider>
86
+ <IpfsProvider {...props}>
87
+ <ConvertionRateProvider>
88
+ <ModalProvider>
89
+ <RedemptionProvider {...props}>
90
+ <RedemptionWidgetProvider {...props}>
91
+ {children}
92
+ </RedemptionWidgetProvider>
93
+ </RedemptionProvider>
94
+ </ModalProvider>
95
+ </ConvertionRateProvider>
96
+ </IpfsProvider>
97
+ </ChatProvider>
98
+ </SignerProvider>
99
+ </BosonProvider>
100
+ </BlockNumberProvider>
101
+ </RobloxProvider>
102
+ </ConfigProvider>
103
+ </Web3Provider>
104
+ </WithReduxProvider>
105
+ </BosonThemeProvider>
90
106
  );
91
107
  });
@@ -5,7 +5,12 @@ import { useCallback } from "react";
5
5
  import { FALLBACK_URLS, getRpcUrls } from "../../lib/const/networks";
6
6
  import { useChainId } from "./connection";
7
7
  import { useAppDispatch } from "../../state/hooks";
8
- import { SupportedChainsType, isSupportedChain } from "../../lib/const/chains";
8
+ import {
9
+ ChainId_BASE_SEPOLIA,
10
+ ChainId_POLYGON_AMOY,
11
+ SupportedChainsType,
12
+ isSupportedChain
13
+ } from "../../lib/const/chains";
9
14
  import {
10
15
  endSwitchingChain,
11
16
  startSwitchingChain
@@ -27,9 +32,9 @@ function getRpcUrl(
27
32
  case ChainId.GOERLI:
28
33
  case ChainId.SEPOLIA:
29
34
  case ChainId.POLYGON:
30
- case 80002: // POLYGON AMOY
35
+ case ChainId_POLYGON_AMOY:
31
36
  case ChainId.BASE:
32
- case 84532: // BASE SEPOLIA
37
+ case ChainId_BASE_SEPOLIA: // BASE SEPOLIA
33
38
  return RPC_URLS[chainId][0];
34
39
  case localChainId: {
35
40
  if (localRpcUrl) {
@@ -0,0 +1,126 @@
1
+ import React from "react";
2
+ import { ChainId } from "@uniswap/sdk-core";
3
+ import {
4
+ createContext,
5
+ ReactNode,
6
+ useCallback,
7
+ useEffect,
8
+ useMemo,
9
+ useState
10
+ } from "react";
11
+ import { useIsWindowVisible } from "../uniswap/useIsWindowVisible";
12
+ import { RPC_PROVIDERS } from "../../lib/const/providers";
13
+ import { useChainId, useProvider } from "../connection/connection";
14
+
15
+ export const MISSING_PROVIDER = Symbol();
16
+ export const BlockNumberContext = createContext<
17
+ | {
18
+ fastForward(block: number): void;
19
+ block?: number;
20
+ mainnetBlock?: number;
21
+ }
22
+ | typeof MISSING_PROVIDER
23
+ >(MISSING_PROVIDER);
24
+
25
+ export function BlockNumberProvider({ children }: { children: ReactNode }) {
26
+ const activeChainId = useChainId();
27
+ const provider = useProvider();
28
+
29
+ const [{ chainId, block, mainnetBlock }, setChainBlock] = useState<{
30
+ chainId?: number;
31
+ block?: number;
32
+ mainnetBlock?: number;
33
+ }>({
34
+ chainId: activeChainId
35
+ });
36
+
37
+ const onChainBlock = useCallback((chainId: number, block: number) => {
38
+ setChainBlock((chainBlock) => {
39
+ if (chainBlock.chainId === chainId) {
40
+ if (!chainBlock.block || chainBlock.block < block) {
41
+ return {
42
+ chainId,
43
+ block,
44
+ mainnetBlock:
45
+ chainId === ChainId.MAINNET ? block : chainBlock.mainnetBlock
46
+ };
47
+ }
48
+ } else if (chainId === ChainId.MAINNET) {
49
+ if (!chainBlock.mainnetBlock || chainBlock.mainnetBlock < block) {
50
+ return { ...chainBlock, mainnetBlock: block };
51
+ }
52
+ }
53
+ return chainBlock;
54
+ });
55
+ }, []);
56
+
57
+ const windowVisible = useIsWindowVisible();
58
+ useEffect(() => {
59
+ let stale = false;
60
+
61
+ if (provider && activeChainId && windowVisible) {
62
+ // If chainId hasn't changed, don't clear the block. This prevents re-fetching still valid data.
63
+ setChainBlock((chainBlock) =>
64
+ chainBlock.chainId === activeChainId
65
+ ? chainBlock
66
+ : { chainId: activeChainId, mainnetBlock: chainBlock.mainnetBlock }
67
+ );
68
+
69
+ provider
70
+ .getBlockNumber()
71
+ .then((block) => {
72
+ if (!stale) onChainBlock(activeChainId, block);
73
+ })
74
+ .catch((error) => {
75
+ console.error(
76
+ `Failed to get block number for chainId ${activeChainId}`,
77
+ error
78
+ );
79
+ });
80
+
81
+ const onBlock = (block: number) => onChainBlock(activeChainId, block);
82
+ provider.on("block", onBlock);
83
+ return () => {
84
+ stale = true;
85
+ provider.removeListener("block", onBlock);
86
+ };
87
+ }
88
+
89
+ return void 0;
90
+ }, [activeChainId, provider, windowVisible, onChainBlock]);
91
+
92
+ useEffect(() => {
93
+ if (mainnetBlock === undefined) {
94
+ RPC_PROVIDERS[ChainId.MAINNET]
95
+ .getBlockNumber()
96
+ .then((block) => {
97
+ onChainBlock(ChainId.MAINNET, block);
98
+ })
99
+ // swallow errors - it's ok if this fails, as we'll try again if we activate mainnet
100
+ .catch(() => undefined);
101
+ }
102
+ }, [mainnetBlock, onChainBlock]);
103
+
104
+ const value = useMemo(
105
+ () => ({
106
+ fastForward: (update: number) => {
107
+ if (block && update > block) {
108
+ setChainBlock({
109
+ chainId: activeChainId,
110
+ block: update,
111
+ mainnetBlock:
112
+ activeChainId === ChainId.MAINNET ? update : mainnetBlock
113
+ });
114
+ }
115
+ },
116
+ block: chainId === activeChainId ? block : undefined,
117
+ mainnetBlock
118
+ }),
119
+ [activeChainId, block, chainId, mainnetBlock]
120
+ );
121
+ return (
122
+ <BlockNumberContext.Provider value={value}>
123
+ {children}
124
+ </BlockNumberContext.Provider>
125
+ );
126
+ }