@bosonprotocol/react-kit 0.36.0-alpha.13 → 0.36.0-alpha.15

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 (52) hide show
  1. package/dist/cjs/components/ui/SvgImage.d.ts.map +1 -1
  2. package/dist/cjs/components/ui/SvgImage.js +2 -1
  3. package/dist/cjs/components/ui/SvgImage.js.map +1 -1
  4. package/dist/cjs/components/widgets/commit/CommitWidgetProviders.js +2 -2
  5. package/dist/cjs/components/widgets/commit/CommitWidgetProviders.js.map +1 -1
  6. package/dist/cjs/components/widgets/finance/FinanceWidgetProviders.js +2 -2
  7. package/dist/cjs/components/widgets/finance/FinanceWidgetProviders.js.map +1 -1
  8. package/dist/cjs/components/widgets/index.d.ts +1 -0
  9. package/dist/cjs/components/widgets/index.d.ts.map +1 -1
  10. package/dist/cjs/components/widgets/index.js +3 -1
  11. package/dist/cjs/components/widgets/index.js.map +1 -1
  12. package/dist/cjs/components/widgets/redemption/RedemptionWidgetProviders.js +2 -2
  13. package/dist/cjs/components/widgets/redemption/RedemptionWidgetProviders.js.map +1 -1
  14. package/dist/cjs/hooks/contracts/BlockNumberProvider.d.ts +12 -0
  15. package/dist/cjs/hooks/contracts/BlockNumberProvider.d.ts.map +1 -0
  16. package/dist/cjs/hooks/contracts/BlockNumberProvider.js +93 -0
  17. package/dist/cjs/hooks/contracts/BlockNumberProvider.js.map +1 -0
  18. package/dist/cjs/hooks/contracts/useBlockNumber.d.ts +0 -5
  19. package/dist/cjs/hooks/contracts/useBlockNumber.d.ts.map +1 -1
  20. package/dist/cjs/hooks/contracts/useBlockNumber.js +4 -91
  21. package/dist/cjs/hooks/contracts/useBlockNumber.js.map +1 -1
  22. package/dist/esm/components/ui/SvgImage.d.ts.map +1 -1
  23. package/dist/esm/components/ui/SvgImage.js +2 -1
  24. package/dist/esm/components/ui/SvgImage.js.map +1 -1
  25. package/dist/esm/components/widgets/commit/CommitWidgetProviders.js +1 -1
  26. package/dist/esm/components/widgets/commit/CommitWidgetProviders.js.map +1 -1
  27. package/dist/esm/components/widgets/finance/FinanceWidgetProviders.js +1 -1
  28. package/dist/esm/components/widgets/finance/FinanceWidgetProviders.js.map +1 -1
  29. package/dist/esm/components/widgets/index.d.ts +1 -0
  30. package/dist/esm/components/widgets/index.d.ts.map +1 -1
  31. package/dist/esm/components/widgets/index.js +1 -0
  32. package/dist/esm/components/widgets/index.js.map +1 -1
  33. package/dist/esm/components/widgets/redemption/RedemptionWidgetProviders.js +1 -1
  34. package/dist/esm/components/widgets/redemption/RedemptionWidgetProviders.js.map +1 -1
  35. package/dist/esm/hooks/contracts/BlockNumberProvider.d.ts +12 -0
  36. package/dist/esm/hooks/contracts/BlockNumberProvider.d.ts.map +1 -0
  37. package/dist/esm/hooks/contracts/BlockNumberProvider.js +86 -0
  38. package/dist/esm/hooks/contracts/BlockNumberProvider.js.map +1 -0
  39. package/dist/esm/hooks/contracts/useBlockNumber.d.ts +0 -5
  40. package/dist/esm/hooks/contracts/useBlockNumber.d.ts.map +1 -1
  41. package/dist/esm/hooks/contracts/useBlockNumber.js +2 -85
  42. package/dist/esm/hooks/contracts/useBlockNumber.js.map +1 -1
  43. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  44. package/package.json +4 -4
  45. package/src/components/ui/SvgImage.tsx +3 -1
  46. package/src/components/widgets/commit/CommitWidgetProviders.tsx +1 -1
  47. package/src/components/widgets/finance/FinanceWidgetProviders.tsx +1 -1
  48. package/src/components/widgets/index.tsx +1 -0
  49. package/src/components/widgets/redemption/RedemptionWidgetProviders.tsx +1 -1
  50. package/src/hooks/contracts/BlockNumberProvider.tsx +126 -0
  51. package/src/hooks/contracts/useBlockNumber.tsx +2 -127
  52. package/src/stories/ConnectWallet.stories.tsx +1 -1
@@ -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
+ }
@@ -1,27 +1,5 @@
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);
1
+ import { useContext } from "react";
2
+ import { BlockNumberContext, MISSING_PROVIDER } from "./BlockNumberProvider";
25
3
 
26
4
  function useBlockNumberContext() {
27
5
  const blockNumber = useContext(BlockNumberContext);
@@ -41,106 +19,3 @@ export function useBlockNumber(): number | undefined {
41
19
  export function useMainnetBlockNumber(): number | undefined {
42
20
  return useBlockNumberContext().mainnetBlock;
43
21
  }
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
- }
@@ -20,7 +20,7 @@ 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/useBlockNumber";
23
+ import { BlockNumberProvider } from "../hooks/contracts/BlockNumberProvider";
24
24
 
25
25
  const successButtonTheme: ConnectWalletProps["connectWalletButtonTheme"] =
26
26
  bosonButtonThemes()["primary"];