@bosonprotocol/react-kit 0.36.0-alpha.17 → 0.36.0-alpha.2

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 (247) hide show
  1. package/dist/cjs/colors.d.ts +3 -5
  2. package/dist/cjs/colors.d.ts.map +1 -1
  3. package/dist/cjs/colors.js +3 -5
  4. package/dist/cjs/colors.js.map +1 -1
  5. package/dist/cjs/components/connection/index.d.ts.map +1 -1
  6. package/dist/cjs/components/connection/index.js +2 -4
  7. package/dist/cjs/components/connection/index.js.map +1 -1
  8. package/dist/cjs/components/form/Field.styles.d.ts +0 -1
  9. package/dist/cjs/components/form/Field.styles.d.ts.map +1 -1
  10. package/dist/cjs/components/form/Field.styles.js +5 -8
  11. package/dist/cjs/components/form/Field.styles.js.map +1 -1
  12. package/dist/cjs/components/form/Upload/BaseUpload.d.ts +0 -2
  13. package/dist/cjs/components/form/Upload/BaseUpload.d.ts.map +1 -1
  14. package/dist/cjs/components/image/Image.js +1 -1
  15. package/dist/cjs/components/image/Image.js.map +1 -1
  16. package/dist/cjs/components/image/Image.styles.d.ts +1 -1
  17. package/dist/cjs/components/image/Image.styles.d.ts.map +1 -1
  18. package/dist/cjs/components/image/Image.styles.js +2 -2
  19. package/dist/cjs/components/image/Image.styles.js.map +1 -1
  20. package/dist/cjs/components/modal/components/Redeem/RedeemNonModal.js +1 -2
  21. package/dist/cjs/components/modal/components/Redeem/RedeemNonModal.js.map +1 -1
  22. package/dist/cjs/components/modal/components/SellerFinance/FinanceWithdraw.js +1 -1
  23. package/dist/cjs/components/modal/components/SellerFinance/FinanceWithdraw.js.map +1 -1
  24. package/dist/cjs/components/modal/components/SellerFinance/FinancesStyles.d.ts.map +1 -1
  25. package/dist/cjs/components/modal/components/SellerFinance/FinancesStyles.js +8 -37
  26. package/dist/cjs/components/modal/components/SellerFinance/FinancesStyles.js.map +1 -1
  27. package/dist/cjs/components/ui/IpfsImage.d.ts.map +1 -1
  28. package/dist/cjs/components/ui/IpfsImage.js +31 -41
  29. package/dist/cjs/components/ui/IpfsImage.js.map +1 -1
  30. package/dist/cjs/components/ui/SvgImage.d.ts.map +1 -1
  31. package/dist/cjs/components/ui/SvgImage.js +1 -2
  32. package/dist/cjs/components/ui/SvgImage.js.map +1 -1
  33. package/dist/cjs/components/widgets/commit/CommitWidgetProviders.d.ts +2 -2
  34. package/dist/cjs/components/widgets/commit/CommitWidgetProviders.d.ts.map +1 -1
  35. package/dist/cjs/components/widgets/commit/CommitWidgetProviders.js +3 -3
  36. package/dist/cjs/components/widgets/commit/CommitWidgetProviders.js.map +1 -1
  37. package/dist/cjs/components/widgets/finance/FinanceWidgetProviders.d.ts +1 -3
  38. package/dist/cjs/components/widgets/finance/FinanceWidgetProviders.d.ts.map +1 -1
  39. package/dist/cjs/components/widgets/finance/FinanceWidgetProviders.js +12 -17
  40. package/dist/cjs/components/widgets/finance/FinanceWidgetProviders.js.map +1 -1
  41. package/dist/cjs/components/widgets/finance/useSellerRoles.d.ts +8 -1
  42. package/dist/cjs/components/widgets/finance/useSellerRoles.d.ts.map +1 -1
  43. package/dist/cjs/components/widgets/finance/useSellerRoles.js +25 -3
  44. package/dist/cjs/components/widgets/finance/useSellerRoles.js.map +1 -1
  45. package/dist/cjs/components/widgets/index.d.ts +0 -2
  46. package/dist/cjs/components/widgets/index.d.ts.map +1 -1
  47. package/dist/cjs/components/widgets/index.js +1 -4
  48. package/dist/cjs/components/widgets/index.js.map +1 -1
  49. package/dist/cjs/components/widgets/redemption/RedemptionWidgetProviders.d.ts +1 -3
  50. package/dist/cjs/components/widgets/redemption/RedemptionWidgetProviders.d.ts.map +1 -1
  51. package/dist/cjs/components/widgets/redemption/RedemptionWidgetProviders.js +17 -22
  52. package/dist/cjs/components/widgets/redemption/RedemptionWidgetProviders.js.map +1 -1
  53. package/dist/cjs/components/widgets/roblox/components/ConnectRoblox.d.ts.map +1 -1
  54. package/dist/cjs/components/widgets/roblox/components/ConnectRoblox.js +7 -11
  55. package/dist/cjs/components/widgets/roblox/components/ConnectRoblox.js.map +1 -1
  56. package/dist/cjs/components/widgets/roblox/components/LoginWithRoblox.d.ts.map +1 -1
  57. package/dist/cjs/components/widgets/roblox/components/LoginWithRoblox.js +1 -2
  58. package/dist/cjs/components/widgets/roblox/components/LoginWithRoblox.js.map +1 -1
  59. package/dist/cjs/components/widgets/roblox/components/RobloxExchangesGrid.d.ts.map +1 -1
  60. package/dist/cjs/components/widgets/roblox/components/RobloxExchangesGrid.js +1 -2
  61. package/dist/cjs/components/widgets/roblox/components/RobloxExchangesGrid.js.map +1 -1
  62. package/dist/cjs/hooks/connection/useSwitchChain.d.ts.map +1 -1
  63. package/dist/cjs/hooks/connection/useSwitchChain.js +1 -4
  64. package/dist/cjs/hooks/connection/useSwitchChain.js.map +1 -1
  65. package/dist/cjs/hooks/contracts/useBlockNumber.d.ts +5 -0
  66. package/dist/cjs/hooks/contracts/useBlockNumber.d.ts.map +1 -1
  67. package/dist/cjs/hooks/contracts/useBlockNumber.js +91 -4
  68. package/dist/cjs/hooks/contracts/useBlockNumber.js.map +1 -1
  69. package/dist/cjs/index.d.ts +0 -1
  70. package/dist/cjs/index.d.ts.map +1 -1
  71. package/dist/cjs/index.js +0 -1
  72. package/dist/cjs/index.js.map +1 -1
  73. package/dist/cjs/lib/chains/getNativeLogoURI.d.ts.map +1 -1
  74. package/dist/cjs/lib/chains/getNativeLogoURI.js +1 -2
  75. package/dist/cjs/lib/chains/getNativeLogoURI.js.map +1 -1
  76. package/dist/cjs/lib/config/config.d.ts +0 -1
  77. package/dist/cjs/lib/config/config.d.ts.map +1 -1
  78. package/dist/cjs/lib/const/chainInfo.d.ts.map +1 -1
  79. package/dist/cjs/lib/const/chainInfo.js +1 -33
  80. package/dist/cjs/lib/const/chainInfo.js.map +1 -1
  81. package/dist/cjs/lib/const/chains.d.ts +3 -6
  82. package/dist/cjs/lib/const/chains.d.ts.map +1 -1
  83. package/dist/cjs/lib/const/chains.js +10 -18
  84. package/dist/cjs/lib/const/chains.js.map +1 -1
  85. package/dist/cjs/lib/const/networks.d.ts +0 -2
  86. package/dist/cjs/lib/const/networks.d.ts.map +1 -1
  87. package/dist/cjs/lib/const/networks.js +3 -13
  88. package/dist/cjs/lib/const/networks.js.map +1 -1
  89. package/dist/cjs/lib/const/providers.d.ts +1 -1
  90. package/dist/cjs/lib/const/providers.d.ts.map +1 -1
  91. package/dist/cjs/lib/const/providers.js +1 -3
  92. package/dist/cjs/lib/const/providers.js.map +1 -1
  93. package/dist/cjs/lib/const/routing.d.ts.map +1 -1
  94. package/dist/cjs/lib/const/routing.js +0 -10
  95. package/dist/cjs/lib/const/routing.js.map +1 -1
  96. package/dist/cjs/lib/const/tokens.d.ts +3 -3
  97. package/dist/cjs/lib/const/tokens.d.ts.map +1 -1
  98. package/dist/cjs/lib/const/tokens.js +3 -5
  99. package/dist/cjs/lib/const/tokens.js.map +1 -1
  100. package/dist/cjs/lib/opensea/getOpenSeaUrl.d.ts.map +1 -1
  101. package/dist/cjs/lib/opensea/getOpenSeaUrl.js +0 -12
  102. package/dist/cjs/lib/opensea/getOpenSeaUrl.js.map +1 -1
  103. package/dist/esm/colors.d.ts +3 -5
  104. package/dist/esm/colors.d.ts.map +1 -1
  105. package/dist/esm/colors.js +3 -5
  106. package/dist/esm/colors.js.map +1 -1
  107. package/dist/esm/components/connection/index.d.ts.map +1 -1
  108. package/dist/esm/components/connection/index.js +2 -4
  109. package/dist/esm/components/connection/index.js.map +1 -1
  110. package/dist/esm/components/form/Field.styles.d.ts +0 -1
  111. package/dist/esm/components/form/Field.styles.d.ts.map +1 -1
  112. package/dist/esm/components/form/Field.styles.js +5 -7
  113. package/dist/esm/components/form/Field.styles.js.map +1 -1
  114. package/dist/esm/components/form/Upload/BaseUpload.d.ts +0 -2
  115. package/dist/esm/components/form/Upload/BaseUpload.d.ts.map +1 -1
  116. package/dist/esm/components/image/Image.js +2 -2
  117. package/dist/esm/components/image/Image.js.map +1 -1
  118. package/dist/esm/components/image/Image.styles.d.ts +1 -1
  119. package/dist/esm/components/image/Image.styles.d.ts.map +1 -1
  120. package/dist/esm/components/image/Image.styles.js +1 -1
  121. package/dist/esm/components/image/Image.styles.js.map +1 -1
  122. package/dist/esm/components/modal/components/Redeem/RedeemNonModal.js +1 -2
  123. package/dist/esm/components/modal/components/Redeem/RedeemNonModal.js.map +1 -1
  124. package/dist/esm/components/modal/components/SellerFinance/FinanceWithdraw.js +1 -1
  125. package/dist/esm/components/modal/components/SellerFinance/FinanceWithdraw.js.map +1 -1
  126. package/dist/esm/components/modal/components/SellerFinance/FinancesStyles.d.ts.map +1 -1
  127. package/dist/esm/components/modal/components/SellerFinance/FinancesStyles.js +5 -4
  128. package/dist/esm/components/modal/components/SellerFinance/FinancesStyles.js.map +1 -1
  129. package/dist/esm/components/ui/IpfsImage.d.ts.map +1 -1
  130. package/dist/esm/components/ui/IpfsImage.js +31 -41
  131. package/dist/esm/components/ui/IpfsImage.js.map +1 -1
  132. package/dist/esm/components/ui/SvgImage.d.ts.map +1 -1
  133. package/dist/esm/components/ui/SvgImage.js +1 -2
  134. package/dist/esm/components/ui/SvgImage.js.map +1 -1
  135. package/dist/esm/components/widgets/commit/CommitWidgetProviders.d.ts +2 -2
  136. package/dist/esm/components/widgets/commit/CommitWidgetProviders.d.ts.map +1 -1
  137. package/dist/esm/components/widgets/commit/CommitWidgetProviders.js +2 -2
  138. package/dist/esm/components/widgets/commit/CommitWidgetProviders.js.map +1 -1
  139. package/dist/esm/components/widgets/finance/FinanceWidgetProviders.d.ts +1 -3
  140. package/dist/esm/components/widgets/finance/FinanceWidgetProviders.d.ts.map +1 -1
  141. package/dist/esm/components/widgets/finance/FinanceWidgetProviders.js +12 -17
  142. package/dist/esm/components/widgets/finance/FinanceWidgetProviders.js.map +1 -1
  143. package/dist/esm/components/widgets/finance/useSellerRoles.d.ts +8 -1
  144. package/dist/esm/components/widgets/finance/useSellerRoles.d.ts.map +1 -1
  145. package/dist/esm/components/widgets/finance/useSellerRoles.js +24 -3
  146. package/dist/esm/components/widgets/finance/useSellerRoles.js.map +1 -1
  147. package/dist/esm/components/widgets/index.d.ts +0 -2
  148. package/dist/esm/components/widgets/index.d.ts.map +1 -1
  149. package/dist/esm/components/widgets/index.js +0 -2
  150. package/dist/esm/components/widgets/index.js.map +1 -1
  151. package/dist/esm/components/widgets/redemption/RedemptionWidgetProviders.d.ts +1 -3
  152. package/dist/esm/components/widgets/redemption/RedemptionWidgetProviders.d.ts.map +1 -1
  153. package/dist/esm/components/widgets/redemption/RedemptionWidgetProviders.js +17 -22
  154. package/dist/esm/components/widgets/redemption/RedemptionWidgetProviders.js.map +1 -1
  155. package/dist/esm/components/widgets/roblox/components/ConnectRoblox.d.ts.map +1 -1
  156. package/dist/esm/components/widgets/roblox/components/ConnectRoblox.js +7 -11
  157. package/dist/esm/components/widgets/roblox/components/ConnectRoblox.js.map +1 -1
  158. package/dist/esm/components/widgets/roblox/components/LoginWithRoblox.d.ts.map +1 -1
  159. package/dist/esm/components/widgets/roblox/components/LoginWithRoblox.js +1 -2
  160. package/dist/esm/components/widgets/roblox/components/LoginWithRoblox.js.map +1 -1
  161. package/dist/esm/components/widgets/roblox/components/RobloxExchangesGrid.d.ts.map +1 -1
  162. package/dist/esm/components/widgets/roblox/components/RobloxExchangesGrid.js +1 -2
  163. package/dist/esm/components/widgets/roblox/components/RobloxExchangesGrid.js.map +1 -1
  164. package/dist/esm/hooks/connection/useSwitchChain.d.ts.map +1 -1
  165. package/dist/esm/hooks/connection/useSwitchChain.js +2 -5
  166. package/dist/esm/hooks/connection/useSwitchChain.js.map +1 -1
  167. package/dist/esm/hooks/contracts/useBlockNumber.d.ts +5 -0
  168. package/dist/esm/hooks/contracts/useBlockNumber.d.ts.map +1 -1
  169. package/dist/esm/hooks/contracts/useBlockNumber.js +85 -2
  170. package/dist/esm/hooks/contracts/useBlockNumber.js.map +1 -1
  171. package/dist/esm/index.d.ts +0 -1
  172. package/dist/esm/index.d.ts.map +1 -1
  173. package/dist/esm/index.js +0 -1
  174. package/dist/esm/index.js.map +1 -1
  175. package/dist/esm/lib/chains/getNativeLogoURI.d.ts.map +1 -1
  176. package/dist/esm/lib/chains/getNativeLogoURI.js +1 -2
  177. package/dist/esm/lib/chains/getNativeLogoURI.js.map +1 -1
  178. package/dist/esm/lib/config/config.d.ts +0 -1
  179. package/dist/esm/lib/config/config.d.ts.map +1 -1
  180. package/dist/esm/lib/const/chainInfo.d.ts.map +1 -1
  181. package/dist/esm/lib/const/chainInfo.js +2 -34
  182. package/dist/esm/lib/const/chainInfo.js.map +1 -1
  183. package/dist/esm/lib/const/chains.d.ts +3 -6
  184. package/dist/esm/lib/const/chains.d.ts.map +1 -1
  185. package/dist/esm/lib/const/chains.js +9 -17
  186. package/dist/esm/lib/const/chains.js.map +1 -1
  187. package/dist/esm/lib/const/networks.d.ts +0 -2
  188. package/dist/esm/lib/const/networks.d.ts.map +1 -1
  189. package/dist/esm/lib/const/networks.js +3 -13
  190. package/dist/esm/lib/const/networks.js.map +1 -1
  191. package/dist/esm/lib/const/providers.d.ts +1 -1
  192. package/dist/esm/lib/const/providers.d.ts.map +1 -1
  193. package/dist/esm/lib/const/providers.js +2 -4
  194. package/dist/esm/lib/const/providers.js.map +1 -1
  195. package/dist/esm/lib/const/routing.d.ts.map +1 -1
  196. package/dist/esm/lib/const/routing.js +1 -11
  197. package/dist/esm/lib/const/routing.js.map +1 -1
  198. package/dist/esm/lib/const/tokens.d.ts +3 -3
  199. package/dist/esm/lib/const/tokens.d.ts.map +1 -1
  200. package/dist/esm/lib/const/tokens.js +2 -5
  201. package/dist/esm/lib/const/tokens.js.map +1 -1
  202. package/dist/esm/lib/opensea/getOpenSeaUrl.d.ts.map +1 -1
  203. package/dist/esm/lib/opensea/getOpenSeaUrl.js +0 -12
  204. package/dist/esm/lib/opensea/getOpenSeaUrl.js.map +1 -1
  205. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  206. package/package.json +4 -4
  207. package/src/colors.ts +3 -5
  208. package/src/components/connection/index.ts +2 -4
  209. package/src/components/form/Field.styles.ts +5 -8
  210. package/src/components/image/Image.styles.ts +1 -1
  211. package/src/components/image/Image.tsx +2 -2
  212. package/src/components/modal/components/Redeem/RedeemNonModal.tsx +1 -2
  213. package/src/components/modal/components/SellerFinance/FinanceWithdraw.tsx +1 -1
  214. package/src/components/modal/components/SellerFinance/FinancesStyles.tsx +5 -4
  215. package/src/components/ui/IpfsImage.tsx +53 -58
  216. package/src/components/ui/SvgImage.tsx +1 -3
  217. package/src/components/widgets/commit/CommitWidgetProviders.tsx +5 -5
  218. package/src/components/widgets/finance/FinanceWidgetProviders.tsx +28 -44
  219. package/src/components/widgets/finance/useSellerRoles.ts +38 -4
  220. package/src/components/widgets/index.tsx +0 -2
  221. package/src/components/widgets/redemption/RedemptionWidgetProviders.tsx +40 -56
  222. package/src/components/widgets/roblox/components/ConnectRoblox.tsx +8 -21
  223. package/src/components/widgets/roblox/components/LoginWithRoblox.tsx +1 -2
  224. package/src/components/widgets/roblox/components/RobloxExchangesGrid.tsx +1 -2
  225. package/src/hooks/connection/useSwitchChain.ts +2 -10
  226. package/src/hooks/contracts/useBlockNumber.tsx +127 -2
  227. package/src/index.tsx +0 -1
  228. package/src/lib/chains/getNativeLogoURI.ts +1 -2
  229. package/src/lib/const/chainInfo.ts +2 -40
  230. package/src/lib/const/chains.ts +4 -12
  231. package/src/lib/const/networks.ts +3 -13
  232. package/src/lib/const/providers.ts +3 -10
  233. package/src/lib/const/routing.ts +1 -12
  234. package/src/lib/const/tokens.ts +7 -24
  235. package/src/lib/opensea/getOpenSeaUrl.ts +0 -15
  236. package/src/stories/ConnectWallet.stories.tsx +6 -3
  237. package/src/stories/buttons/Upload.stories.tsx +1 -8
  238. package/src/stories/widgets/Roblox.stories.tsx +1 -1
  239. package/dist/cjs/hooks/contracts/BlockNumberProvider.d.ts +0 -12
  240. package/dist/cjs/hooks/contracts/BlockNumberProvider.d.ts.map +0 -1
  241. package/dist/cjs/hooks/contracts/BlockNumberProvider.js +0 -93
  242. package/dist/cjs/hooks/contracts/BlockNumberProvider.js.map +0 -1
  243. package/dist/esm/hooks/contracts/BlockNumberProvider.d.ts +0 -12
  244. package/dist/esm/hooks/contracts/BlockNumberProvider.d.ts.map +0 -1
  245. package/dist/esm/hooks/contracts/BlockNumberProvider.js +0 -86
  246. package/dist/esm/hooks/contracts/BlockNumberProvider.js.map +0 -1
  247. package/src/hooks/contracts/BlockNumberProvider.tsx +0 -126
@@ -1,5 +1,27 @@
1
- import { useContext } from "react";
2
- import { BlockNumberContext, MISSING_PROVIDER } from "./BlockNumberProvider";
1
+ import React from "react";
2
+ import { ChainId } from "@uniswap/sdk-core";
3
+ import {
4
+ createContext,
5
+ ReactNode,
6
+ useCallback,
7
+ useContext,
8
+ useEffect,
9
+ useMemo,
10
+ useState
11
+ } from "react";
12
+ import { useIsWindowVisible } from "../uniswap/useIsWindowVisible";
13
+ import { RPC_PROVIDERS } from "../../lib/const/providers";
14
+ import { useChainId, useProvider } from "../connection/connection";
15
+
16
+ const MISSING_PROVIDER = Symbol();
17
+ const BlockNumberContext = createContext<
18
+ | {
19
+ fastForward(block: number): void;
20
+ block?: number;
21
+ mainnetBlock?: number;
22
+ }
23
+ | typeof MISSING_PROVIDER
24
+ >(MISSING_PROVIDER);
3
25
 
4
26
  function useBlockNumberContext() {
5
27
  const blockNumber = useContext(BlockNumberContext);
@@ -19,3 +41,106 @@ export function useBlockNumber(): number | undefined {
19
41
  export function useMainnetBlockNumber(): number | undefined {
20
42
  return useBlockNumberContext().mainnetBlock;
21
43
  }
44
+
45
+ export function BlockNumberProvider({ children }: { children: ReactNode }) {
46
+ const activeChainId = useChainId();
47
+ const provider = useProvider();
48
+
49
+ const [{ chainId, block, mainnetBlock }, setChainBlock] = useState<{
50
+ chainId?: number;
51
+ block?: number;
52
+ mainnetBlock?: number;
53
+ }>({
54
+ chainId: activeChainId
55
+ });
56
+
57
+ const onChainBlock = useCallback((chainId: number, block: number) => {
58
+ setChainBlock((chainBlock) => {
59
+ if (chainBlock.chainId === chainId) {
60
+ if (!chainBlock.block || chainBlock.block < block) {
61
+ return {
62
+ chainId,
63
+ block,
64
+ mainnetBlock:
65
+ chainId === ChainId.MAINNET ? block : chainBlock.mainnetBlock
66
+ };
67
+ }
68
+ } else if (chainId === ChainId.MAINNET) {
69
+ if (!chainBlock.mainnetBlock || chainBlock.mainnetBlock < block) {
70
+ return { ...chainBlock, mainnetBlock: block };
71
+ }
72
+ }
73
+ return chainBlock;
74
+ });
75
+ }, []);
76
+
77
+ const windowVisible = useIsWindowVisible();
78
+ useEffect(() => {
79
+ let stale = false;
80
+
81
+ if (provider && activeChainId && windowVisible) {
82
+ // If chainId hasn't changed, don't clear the block. This prevents re-fetching still valid data.
83
+ setChainBlock((chainBlock) =>
84
+ chainBlock.chainId === activeChainId
85
+ ? chainBlock
86
+ : { chainId: activeChainId, mainnetBlock: chainBlock.mainnetBlock }
87
+ );
88
+
89
+ provider
90
+ .getBlockNumber()
91
+ .then((block) => {
92
+ if (!stale) onChainBlock(activeChainId, block);
93
+ })
94
+ .catch((error) => {
95
+ console.error(
96
+ `Failed to get block number for chainId ${activeChainId}`,
97
+ error
98
+ );
99
+ });
100
+
101
+ const onBlock = (block: number) => onChainBlock(activeChainId, block);
102
+ provider.on("block", onBlock);
103
+ return () => {
104
+ stale = true;
105
+ provider.removeListener("block", onBlock);
106
+ };
107
+ }
108
+
109
+ return void 0;
110
+ }, [activeChainId, provider, windowVisible, onChainBlock]);
111
+
112
+ useEffect(() => {
113
+ if (mainnetBlock === undefined) {
114
+ RPC_PROVIDERS[ChainId.MAINNET]
115
+ .getBlockNumber()
116
+ .then((block) => {
117
+ onChainBlock(ChainId.MAINNET, block);
118
+ })
119
+ // swallow errors - it's ok if this fails, as we'll try again if we activate mainnet
120
+ .catch(() => undefined);
121
+ }
122
+ }, [mainnetBlock, onChainBlock]);
123
+
124
+ const value = useMemo(
125
+ () => ({
126
+ fastForward: (update: number) => {
127
+ if (block && update > block) {
128
+ setChainBlock({
129
+ chainId: activeChainId,
130
+ block: update,
131
+ mainnetBlock:
132
+ activeChainId === ChainId.MAINNET ? update : mainnetBlock
133
+ });
134
+ }
135
+ },
136
+ block: chainId === activeChainId ? block : undefined,
137
+ mainnetBlock
138
+ }),
139
+ [activeChainId, block, chainId, mainnetBlock]
140
+ );
141
+ return (
142
+ <BlockNumberContext.Provider value={value}>
143
+ {children}
144
+ </BlockNumberContext.Provider>
145
+ );
146
+ }
package/src/index.tsx CHANGED
@@ -92,7 +92,6 @@ export * from "./lib/opensea/getOpenSeaUrl";
92
92
  export * from "./lib/promises/promises";
93
93
  export * from "./lib/url/url";
94
94
  export * from "./theme";
95
- export * from "./colors";
96
95
  export * from "./types/helpers";
97
96
  export { AuthTokenType } from "@bosonprotocol/common";
98
97
  export * from "@bosonprotocol/core-sdk";
@@ -1,7 +1,6 @@
1
1
  import { ChainId } from "@uniswap/sdk-core";
2
2
  import EthereumLogo from "../../assets/svg/ethereum_square_logo.svg";
3
3
  import MaticLogo from "../../assets/svg/matic-token-icon.svg";
4
- import { ChainId_POLYGON_AMOY } from "../const/chains";
5
4
 
6
5
  export function getNativeLogoURI(
7
6
  chainId: ChainId | number = ChainId.MAINNET
@@ -9,7 +8,7 @@ export function getNativeLogoURI(
9
8
  switch (chainId) {
10
9
  case ChainId.POLYGON:
11
10
  case ChainId.POLYGON_MUMBAI:
12
- case ChainId_POLYGON_AMOY:
11
+ case 80002:
13
12
  return MaticLogo;
14
13
  default:
15
14
  return EthereumLogo;
@@ -5,13 +5,7 @@ import polygonMaticLogo from "../../assets/svg/polygon-matic-logo.svg";
5
5
  import polygonSquareLogoUrl from "../../assets/svg/polygon_square_logo.svg";
6
6
  import ms from "ms";
7
7
 
8
- import {
9
- LocalChainId,
10
- SupportedL1ChainId,
11
- SupportedL2ChainId,
12
- ChainId_POLYGON_AMOY,
13
- ChainId_BASE_SEPOLIA
14
- } from "./chains";
8
+ import { LocalChainId, SupportedL1ChainId, SupportedL2ChainId } from "./chains";
15
9
 
16
10
  export const AVERAGE_L1_BLOCK_TIME = ms(`12s`);
17
11
 
@@ -105,7 +99,7 @@ const CHAIN_INFO: ChainInfoMap = {
105
99
  decimals: 18
106
100
  }
107
101
  },
108
- [ChainId_POLYGON_AMOY]: {
102
+ 80002: {
109
103
  networkType: NetworkType.L1,
110
104
  blockWaitMsBeforeWarning: ms(`10m`),
111
105
  bridge: "https://wallet.polygon.technology/polygon/bridge/deposit",
@@ -120,38 +114,6 @@ const CHAIN_INFO: ChainInfoMap = {
120
114
  decimals: 18
121
115
  }
122
116
  },
123
- [ChainId.BASE]: {
124
- networkType: NetworkType.L2,
125
- blockWaitMsBeforeWarning: ms(`10m`),
126
- bridge: "https://superbridge.app/base",
127
- docs: "https://www.base.org",
128
- explorer: "https://basescan.org/",
129
- infoLink: "https://info.uniswap.org/#/base/",
130
- label: "Base",
131
- logoUrl: ethereumLogoUrl,
132
- nativeCurrency: {
133
- name: "Ether",
134
- symbol: "ETH",
135
- decimals: 18
136
- },
137
- defaultListUrl: ""
138
- },
139
- [ChainId_BASE_SEPOLIA]: {
140
- networkType: NetworkType.L2,
141
- blockWaitMsBeforeWarning: ms(`10m`),
142
- bridge: "https://testnets.superbridge.app/base-sepolia",
143
- docs: "https://www.base.org",
144
- explorer: "https://sepolia.basescan.org/",
145
- infoLink: "https://info.uniswap.org/#/base-sepolia/",
146
- label: "Base Sepolia",
147
- logoUrl: ethereumLogoUrl,
148
- nativeCurrency: {
149
- name: "Ether",
150
- symbol: "ETH",
151
- decimals: 18
152
- },
153
- defaultListUrl: ""
154
- },
155
117
  [LocalChainId]: {
156
118
  networkType: NetworkType.L1,
157
119
  docs: "https://docs.uniswap.org/",
@@ -7,14 +7,13 @@ import { EnvironmentType } from "@bosonprotocol/core-sdk";
7
7
 
8
8
  export const LocalChainId = 31337;
9
9
  export const ChainId_POLYGON_AMOY = 80002;
10
- export const ChainId_BASE_SEPOLIA = 84532;
11
10
 
12
11
  export const UniWalletSupportedChains = [
13
12
  ChainId.MAINNET,
14
13
  // ChainId.ARBITRUM_ONE,
15
14
  // ChainId.OPTIMISM,
16
- ChainId.POLYGON,
17
- ChainId.BASE
15
+ ChainId.POLYGON
16
+ // ChainId.BASE
18
17
  ];
19
18
 
20
19
  export const CHAIN_IDS_TO_NAMES = {
@@ -34,7 +33,6 @@ export const CHAIN_IDS_TO_NAMES = {
34
33
  [ChainId.AVALANCHE]: "avalanche",
35
34
  [ChainId.BASE]: "base",
36
35
  [ChainId.BASE_GOERLI]: "base_goerli",
37
- [ChainId_BASE_SEPOLIA]: "base_sepolia",
38
36
  [LocalChainId]: "local"
39
37
  } as const;
40
38
 
@@ -55,14 +53,12 @@ export const CHAIN_IDS_TO_FRIENDLY_NAMES = {
55
53
  [ChainId.AVALANCHE]: "Avalanche",
56
54
  [ChainId.BASE]: "Base",
57
55
  [ChainId.BASE_GOERLI]: "Base Goerli",
58
- [ChainId_BASE_SEPOLIA]: "Base Sepolia",
59
56
  [LocalChainId]: "Local Hardhat"
60
57
  } as const;
61
58
 
62
59
  const SUPPORTED_CHAINS = [
63
60
  LocalChainId,
64
61
  ChainId_POLYGON_AMOY,
65
- ChainId_BASE_SEPOLIA,
66
62
  ..._SUPPORTED_CHAINS
67
63
  ] as const;
68
64
  export declare type SupportedChainsType = (typeof SUPPORTED_CHAINS)[number];
@@ -98,7 +94,6 @@ export const TESTNET_CHAIN_IDS = [
98
94
  ChainId.SEPOLIA,
99
95
  ChainId.POLYGON_MUMBAI,
100
96
  ChainId_POLYGON_AMOY,
101
- ChainId_BASE_SEPOLIA,
102
97
  LocalChainId
103
98
  // ChainId.ARBITRUM_GOERLI,
104
99
  // ChainId.OPTIMISM_GOERLI,
@@ -134,8 +129,7 @@ export const L2_CHAIN_IDS = [
134
129
  // ChainId.ARBITRUM_GOERLI,
135
130
  // ChainId.OPTIMISM,
136
131
  // ChainId.OPTIMISM_GOERLI
137
- ChainId.BASE,
138
- ChainId_BASE_SEPOLIA
132
+ // ChainId.BASE,
139
133
  // ChainId.BASE_GOERLI
140
134
  ] as const;
141
135
 
@@ -154,9 +148,7 @@ export function getChainPriority(chainId: number): number {
154
148
  return 0;
155
149
  case ChainId.POLYGON:
156
150
  case ChainId.POLYGON_MUMBAI:
157
- case ChainId_POLYGON_AMOY:
158
- case ChainId.BASE:
159
- case ChainId_BASE_SEPOLIA:
151
+ case 80002:
160
152
  return 1;
161
153
  // case ChainId.ARBITRUM_ONE:
162
154
  // case ChainId.ARBITRUM_GOERLI:
@@ -1,5 +1,4 @@
1
1
  import { ChainId } from "@uniswap/sdk-core";
2
- import { ChainId_BASE_SEPOLIA, ChainId_POLYGON_AMOY } from "./chains";
3
2
 
4
3
  // TODO: comment out?
5
4
  // const QUICKNODE_BNB_RPC_URL = process.env.REACT_APP_BNB_RPC_URL;
@@ -72,7 +71,7 @@ export const FALLBACK_URLS = {
72
71
  "https://rpc-mumbai.maticvigil.com",
73
72
  "https://matic-testnet-archive-rpc.bwarelabs.com"
74
73
  ],
75
- [ChainId_POLYGON_AMOY]: [
74
+ 80002: [
76
75
  // "Safe" URLs
77
76
  "https://rpc-amoy.polygon.technology"
78
77
  ],
@@ -136,10 +135,6 @@ export const FALLBACK_URLS = {
136
135
  /*TODO:QUICKNODE_BASE_GOERLI_RPC_URL,*/
137
136
  "https://base-goerli.blastapi.io/b5a802d8-151d-4443-90a7-699108dc4e01",
138
137
  "https://svc.blockdaemon.com/base/testnet/native?apiKey=zpka_1334e7c450464d06b6e33a972a7a4e57_75320f43"
139
- ],
140
- [ChainId_BASE_SEPOLIA]: [
141
- // "Safe" URLs
142
- "https://sepolia.base.org"
143
138
  ]
144
139
  };
145
140
 
@@ -184,10 +179,10 @@ export const getRpcUrls = (infuraKey: string) => ({
184
179
  `https://polygon-mumbai.infura.io/v3/${infuraKey}`,
185
180
  ...FALLBACK_URLS[ChainId.POLYGON_MUMBAI]
186
181
  ],
187
- [ChainId_POLYGON_AMOY]: [
182
+ 80002: [
188
183
  // AMOY
189
184
  `https://polygon-amoy.infura.io/v3/${infuraKey}`,
190
- ...FALLBACK_URLS[ChainId_POLYGON_AMOY]
185
+ ...FALLBACK_URLS[80002]
191
186
  ],
192
187
  [ChainId.CELO]: FALLBACK_URLS[ChainId.CELO],
193
188
  [ChainId.CELO_ALFAJORES]: FALLBACK_URLS[ChainId.CELO_ALFAJORES],
@@ -206,11 +201,6 @@ export const getRpcUrls = (infuraKey: string) => ({
206
201
  `https://base-goerli.infura.io/v3/${infuraKey}`,
207
202
  ...FALLBACK_URLS[ChainId.BASE_GOERLI]
208
203
  ],
209
- [ChainId_BASE_SEPOLIA]: [
210
- // BASE_SEPOLIA
211
- `https://base-sepolia.infura.io/v3/${infuraKey}`,
212
- ...FALLBACK_URLS[ChainId_BASE_SEPOLIA]
213
- ],
214
204
  31337: [
215
205
  `https://mainnet.infura.io/v3/${infuraKey}`,
216
206
  ...FALLBACK_URLS[ChainId.MAINNET]
@@ -3,15 +3,10 @@ import { deepCopy } from "@ethersproject/properties";
3
3
  // eslint-disable-next-line @typescript-eslint/no-restricted-imports
4
4
  import { StaticJsonRpcProvider } from "@ethersproject/providers";
5
5
  import { isPlain } from "@reduxjs/toolkit";
6
- import { ChainId } from "@uniswap/sdk-core";
6
+ import { ChainId, SupportedChainsType } from "@uniswap/sdk-core";
7
7
 
8
8
  import { AVERAGE_L1_BLOCK_TIME } from "./chainInfo";
9
- import {
10
- CHAIN_IDS_TO_NAMES,
11
- ChainId_BASE_SEPOLIA,
12
- ChainId_POLYGON_AMOY,
13
- SupportedChainsType
14
- } from "./chains";
9
+ import { CHAIN_IDS_TO_NAMES } from "./chains";
15
10
  import { CONFIG } from "../config/config";
16
11
  const RPC_URLS = CONFIG.rpcUrls;
17
12
 
@@ -86,12 +81,10 @@ export const RPC_PROVIDERS: {
86
81
  [ChainId.ARBITRUM_GOERLI]: new AppJsonRpcProvider(ChainId.ARBITRUM_GOERLI),
87
82
  [ChainId.POLYGON]: new AppJsonRpcProvider(ChainId.POLYGON),
88
83
  [ChainId.POLYGON_MUMBAI]: new AppJsonRpcProvider(ChainId.POLYGON_MUMBAI),
89
- [ChainId_POLYGON_AMOY]: new AppJsonRpcProvider(ChainId_POLYGON_AMOY),
90
84
  [ChainId.CELO]: new AppJsonRpcProvider(ChainId.CELO),
91
85
  [ChainId.CELO_ALFAJORES]: new AppJsonRpcProvider(ChainId.CELO_ALFAJORES),
92
86
  [ChainId.BNB]: new AppJsonRpcProvider(ChainId.BNB),
93
87
  [ChainId.AVALANCHE]: new AppJsonRpcProvider(ChainId.AVALANCHE),
94
88
  [ChainId.BASE]: new AppJsonRpcProvider(ChainId.BASE),
95
- [ChainId.BASE_GOERLI]: new AppJsonRpcProvider(ChainId.BASE_GOERLI),
96
- [ChainId_BASE_SEPOLIA]: new AppJsonRpcProvider(ChainId_BASE_SEPOLIA)
89
+ [ChainId.BASE_GOERLI]: new AppJsonRpcProvider(ChainId.BASE_GOERLI)
97
90
  };
@@ -42,10 +42,8 @@ import {
42
42
  WETH_AVALANCHE,
43
43
  WETH_POLYGON,
44
44
  WETH_POLYGON_MUMBAI,
45
- WRAPPED_NATIVE_CURRENCY,
46
- WETH_POLYGON_AMOY
45
+ WRAPPED_NATIVE_CURRENCY
47
46
  } from "./tokens";
48
- import { ChainId_BASE_SEPOLIA, ChainId_POLYGON_AMOY } from "./chains";
49
47
 
50
48
  type ChainTokenList = {
51
49
  readonly [chainId: number]: Token[];
@@ -113,10 +111,6 @@ export const COMMON_BASES: ChainCurrencyList = {
113
111
  nativeOnChain(ChainId.BASE_GOERLI),
114
112
  WRAPPED_NATIVE_CURRENCY[ChainId.BASE_GOERLI] as Token
115
113
  ],
116
- [ChainId_BASE_SEPOLIA]: [
117
- nativeOnChain(ChainId_BASE_SEPOLIA),
118
- WRAPPED_NATIVE_CURRENCY[ChainId_BASE_SEPOLIA] as Token
119
- ],
120
114
  [ChainId.POLYGON]: [
121
115
  nativeOnChain(ChainId.POLYGON),
122
116
  WETH_POLYGON,
@@ -130,11 +124,6 @@ export const COMMON_BASES: ChainCurrencyList = {
130
124
  WRAPPED_NATIVE_CURRENCY[ChainId.POLYGON_MUMBAI] as Token,
131
125
  WETH_POLYGON_MUMBAI
132
126
  ],
133
- [ChainId_POLYGON_AMOY]: [
134
- nativeOnChain(ChainId_POLYGON_AMOY),
135
- WRAPPED_NATIVE_CURRENCY[ChainId_POLYGON_AMOY] as Token,
136
- WETH_POLYGON_AMOY
137
- ],
138
127
 
139
128
  [ChainId.CELO]: [
140
129
  nativeOnChain(ChainId.CELO),
@@ -7,7 +7,6 @@ import {
7
7
  WETH9
8
8
  } from "@uniswap/sdk-core";
9
9
  import invariant from "tiny-invariant";
10
- import { ChainId_BASE_SEPOLIA, ChainId_POLYGON_AMOY } from "./chains";
11
10
 
12
11
  export const NATIVE_CHAIN_ID = "NATIVE";
13
12
 
@@ -194,14 +193,6 @@ export const WETH_POLYGON_MUMBAI = new Token(
194
193
  "Wrapped Ether"
195
194
  );
196
195
 
197
- export const WETH_POLYGON_AMOY = new Token(
198
- ChainId_POLYGON_AMOY,
199
- "0x52eF3d68BaB452a294342DC3e5f464d7f610f72E",
200
- 18,
201
- "WETH",
202
- "Wrapped Ether"
203
- );
204
-
205
196
  export const WETH_POLYGON = new Token(
206
197
  ChainId.POLYGON,
207
198
  "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619",
@@ -385,13 +376,6 @@ export const WRAPPED_NATIVE_CURRENCY: { [chainId: number]: Token | undefined } =
385
376
  "WETH",
386
377
  "Wrapped Ether"
387
378
  ),
388
- [ChainId_BASE_SEPOLIA]: new Token(
389
- ChainId_BASE_SEPOLIA,
390
- "0x4200000000000000000000000000000000000006",
391
- 18,
392
- "WETH",
393
- "Wrapped Ether"
394
- ),
395
379
  [ChainId.ARBITRUM_ONE]: new Token(
396
380
  ChainId.ARBITRUM_ONE,
397
381
  "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
@@ -427,9 +411,9 @@ export const WRAPPED_NATIVE_CURRENCY: { [chainId: number]: Token | undefined } =
427
411
  "WMATIC",
428
412
  "Wrapped MATIC"
429
413
  ),
430
- [ChainId_POLYGON_AMOY]: new Token(
431
- ChainId_POLYGON_AMOY,
432
- "0x778f1b662a461695633791d03a77d992c24b588a",
414
+ 80002: new Token(
415
+ 80002,
416
+ "0x52eF3d68BaB452a294342DC3e5f464d7f610f72E",
433
417
  18,
434
418
  "WMATIC",
435
419
  "Wrapped MATIC"
@@ -481,16 +465,15 @@ function getCeloNativeCurrency(chainId: number) {
481
465
  }
482
466
  }
483
467
 
468
+ type NewType = 80002;
469
+
484
470
  export function isMatic(
485
471
  chainId: number
486
- ): chainId is
487
- | ChainId.POLYGON
488
- | ChainId.POLYGON_MUMBAI
489
- | typeof ChainId_POLYGON_AMOY {
472
+ ): chainId is ChainId.POLYGON | ChainId.POLYGON_MUMBAI | NewType {
490
473
  return (
491
474
  chainId === ChainId.POLYGON_MUMBAI ||
492
475
  chainId === ChainId.POLYGON ||
493
- chainId === ChainId_POLYGON_AMOY
476
+ chainId === 80002
494
477
  );
495
478
  }
496
479
 
@@ -15,11 +15,6 @@ const openSeaUrlMap = new Map([
15
15
  "testing-11155111-0",
16
16
  (tokenId: string, contractAddress: string) =>
17
17
  `https://testnets.opensea.io/assets/sepolia/${contractAddress}/${tokenId}`
18
- ],
19
- [
20
- "testing-84532-0",
21
- (tokenId: string, contractAddress: string) =>
22
- `https://testnets.opensea.io/assets/base_sepolia/${contractAddress}/${tokenId}`
23
18
  ]
24
19
  ])
25
20
  ],
@@ -35,11 +30,6 @@ const openSeaUrlMap = new Map([
35
30
  "staging-11155111-0",
36
31
  (tokenId: string, contractAddress: string) =>
37
32
  `https://testnets.opensea.io/assets/sepolia/${contractAddress}/${tokenId}`
38
- ],
39
- [
40
- "staging-84532-0",
41
- (tokenId: string, contractAddress: string) =>
42
- `https://testnets.opensea.io/assets/base_sepolia/${contractAddress}/${tokenId}`
43
33
  ]
44
34
  ])
45
35
  ],
@@ -55,11 +45,6 @@ const openSeaUrlMap = new Map([
55
45
  "production-1-0",
56
46
  (tokenId: string, contractAddress: string) =>
57
47
  `https://opensea.io/assets/ethereum/${contractAddress}/${tokenId}`
58
- ],
59
- [
60
- "production-8453-0",
61
- (tokenId: string, contractAddress: string) =>
62
- `https://opensea.io/assets/base/${contractAddress}/${tokenId}`
63
48
  ]
64
49
  ])
65
50
  ]
@@ -20,10 +20,13 @@ import { bosonButtonThemeKeys } from "../components/ui/ThemedButton";
20
20
  import { CSSProperties, createGlobalStyle } from "styled-components";
21
21
  import { Wallet } from "phosphor-react";
22
22
  import { ReduxProvider } from "../components/widgets/ReduxProvider";
23
- import { BlockNumberProvider } from "../hooks/contracts/BlockNumberProvider";
23
+ import { BlockNumberProvider } from "../hooks/contracts/useBlockNumber";
24
24
 
25
- const successButtonTheme: ConnectWalletProps["connectWalletButtonTheme"] =
26
- bosonButtonThemes()["primary"];
25
+ const successButtonTheme: ConnectWalletProps["connectWalletButtonTheme"] = {
26
+ ...bosonButtonThemes()["primary"],
27
+ color: "inherit",
28
+ background: "var(--buttonBgColor)"
29
+ };
27
30
  const errorButtonTheme = bosonButtonThemes()["orangeInverse"];
28
31
 
29
32
  const envName =
@@ -70,14 +70,7 @@ const BASE_ARGS = {
70
70
  name,
71
71
  placeholder: "",
72
72
  withEditor: false,
73
- saveButtonTheme: undefined,
74
- theme: {
75
- triggerTheme: {
76
- media: {
77
- objectFit: "cover"
78
- }
79
- }
80
- }
73
+ saveButtonTheme: undefined
81
74
  } as const satisfies UploadProps;
82
75
 
83
76
  // More on args: https://storybook.js.org/docs/react/writing-stories/args
@@ -65,7 +65,7 @@ export const Base = {
65
65
  ipfsProjectSecret: process.env.STORYBOOK_DATA_IPFS_PROJECT_SECRET,
66
66
  sendDeliveryInfoThroughXMTP: true,
67
67
  raiseDisputeForExchangeUrl:
68
- "https://drcenter-staging.on-fleek.app/#/exchange/{id}/raise-dispute",
68
+ "https://drcenter-staging.on.fleek.co/#/exchange/{id}/raise-dispute",
69
69
  showProductsPreLogin: true,
70
70
  roundness: "mid",
71
71
  layout: "vertical"
@@ -1,12 +0,0 @@
1
- import React from "react";
2
- import { ReactNode } from "react";
3
- export declare const MISSING_PROVIDER: unique symbol;
4
- export declare const BlockNumberContext: React.Context<typeof MISSING_PROVIDER | {
5
- fastForward(block: number): void;
6
- block?: number;
7
- mainnetBlock?: number;
8
- }>;
9
- export declare function BlockNumberProvider({ children }: {
10
- children: ReactNode;
11
- }): React.JSX.Element;
12
- //# sourceMappingURL=BlockNumberProvider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BlockNumberProvider.d.ts","sourceRoot":"","sources":["../../../../src/hooks/contracts/BlockNumberProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAEL,SAAS,EAKV,MAAM,OAAO,CAAC;AAKf,eAAO,MAAM,gBAAgB,eAAW,CAAC;AACzC,eAAO,MAAM,kBAAkB;uBAEN,MAAM,GAAG,IAAI;YACxB,MAAM;mBACC,MAAM;EAGR,CAAC;AAEpB,wBAAgB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,qBAqGxE"}
@@ -1,93 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.BlockNumberContext = exports.MISSING_PROVIDER = void 0;
7
- exports.BlockNumberProvider = BlockNumberProvider;
8
- const react_1 = __importDefault(require("react"));
9
- const sdk_core_1 = require("@uniswap/sdk-core");
10
- const react_2 = require("react");
11
- const useIsWindowVisible_1 = require("../uniswap/useIsWindowVisible");
12
- const providers_1 = require("../../lib/const/providers");
13
- const connection_1 = require("../connection/connection");
14
- exports.MISSING_PROVIDER = Symbol();
15
- exports.BlockNumberContext = (0, react_2.createContext)(exports.MISSING_PROVIDER);
16
- function BlockNumberProvider({ children }) {
17
- const activeChainId = (0, connection_1.useChainId)();
18
- const provider = (0, connection_1.useProvider)();
19
- const [{ chainId, block, mainnetBlock }, setChainBlock] = (0, react_2.useState)({
20
- chainId: activeChainId
21
- });
22
- const onChainBlock = (0, react_2.useCallback)((chainId, block) => {
23
- setChainBlock((chainBlock) => {
24
- if (chainBlock.chainId === chainId) {
25
- if (!chainBlock.block || chainBlock.block < block) {
26
- return {
27
- chainId,
28
- block,
29
- mainnetBlock: chainId === sdk_core_1.ChainId.MAINNET ? block : chainBlock.mainnetBlock
30
- };
31
- }
32
- }
33
- else if (chainId === sdk_core_1.ChainId.MAINNET) {
34
- if (!chainBlock.mainnetBlock || chainBlock.mainnetBlock < block) {
35
- return Object.assign(Object.assign({}, chainBlock), { mainnetBlock: block });
36
- }
37
- }
38
- return chainBlock;
39
- });
40
- }, []);
41
- const windowVisible = (0, useIsWindowVisible_1.useIsWindowVisible)();
42
- (0, react_2.useEffect)(() => {
43
- let stale = false;
44
- if (provider && activeChainId && windowVisible) {
45
- // If chainId hasn't changed, don't clear the block. This prevents re-fetching still valid data.
46
- setChainBlock((chainBlock) => chainBlock.chainId === activeChainId
47
- ? chainBlock
48
- : { chainId: activeChainId, mainnetBlock: chainBlock.mainnetBlock });
49
- provider
50
- .getBlockNumber()
51
- .then((block) => {
52
- if (!stale)
53
- onChainBlock(activeChainId, block);
54
- })
55
- .catch((error) => {
56
- console.error(`Failed to get block number for chainId ${activeChainId}`, error);
57
- });
58
- const onBlock = (block) => onChainBlock(activeChainId, block);
59
- provider.on("block", onBlock);
60
- return () => {
61
- stale = true;
62
- provider.removeListener("block", onBlock);
63
- };
64
- }
65
- return void 0;
66
- }, [activeChainId, provider, windowVisible, onChainBlock]);
67
- (0, react_2.useEffect)(() => {
68
- if (mainnetBlock === undefined) {
69
- providers_1.RPC_PROVIDERS[sdk_core_1.ChainId.MAINNET]
70
- .getBlockNumber()
71
- .then((block) => {
72
- onChainBlock(sdk_core_1.ChainId.MAINNET, block);
73
- })
74
- // swallow errors - it's ok if this fails, as we'll try again if we activate mainnet
75
- .catch(() => undefined);
76
- }
77
- }, [mainnetBlock, onChainBlock]);
78
- const value = (0, react_2.useMemo)(() => ({
79
- fastForward: (update) => {
80
- if (block && update > block) {
81
- setChainBlock({
82
- chainId: activeChainId,
83
- block: update,
84
- mainnetBlock: activeChainId === sdk_core_1.ChainId.MAINNET ? update : mainnetBlock
85
- });
86
- }
87
- },
88
- block: chainId === activeChainId ? block : undefined,
89
- mainnetBlock
90
- }), [activeChainId, block, chainId, mainnetBlock]);
91
- return (react_1.default.createElement(exports.BlockNumberContext.Provider, { value: value }, children));
92
- }
93
- //# sourceMappingURL=BlockNumberProvider.js.map