@sundaeswap/wallet-lite 0.0.97 → 0.0.98

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 (26) hide show
  1. package/dist/cjs/react-components/WalletObserverProvider/WalletObserverProvider.js +4 -2
  2. package/dist/cjs/react-components/WalletObserverProvider/WalletObserverProvider.js.map +1 -1
  3. package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useSyncWalletWithInterval.js +26 -0
  4. package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useSyncWalletWithInterval.js.map +1 -0
  5. package/dist/esm/react-components/WalletObserverProvider/WalletObserverProvider.js +4 -2
  6. package/dist/esm/react-components/WalletObserverProvider/WalletObserverProvider.js.map +1 -1
  7. package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useSyncWalletWithInterval.js +21 -0
  8. package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useSyncWalletWithInterval.js.map +1 -0
  9. package/dist/types/react-components/WalletObserverProvider/WalletObserverProvider.d.ts.map +1 -1
  10. package/dist/types/react-components/WalletObserverProvider/hooks/effects/useSyncWalletWithInterval.d.ts +10 -0
  11. package/dist/types/react-components/WalletObserverProvider/hooks/effects/useSyncWalletWithInterval.d.ts.map +1 -0
  12. package/dist/types/tsconfig.build.tsbuildinfo +1 -1
  13. package/package.json +1 -1
  14. package/src/react-components/WalletObserverProvider/WalletObserverProvider.tsx +3 -6
  15. package/src/react-components/WalletObserverProvider/hooks/effects/useSyncWalletWithInterval.ts +23 -0
  16. package/src/react-components/__tests__/RenderWallet.test.tsx +13 -2
  17. package/src/react-components/__tests__/hooks/useAvailableExtensions.test.tsx +12 -1
  18. package/src/react-components/__tests__/hooks/useWalletObserver.test.tsx +20 -11
  19. package/src/react-components/__tests__/hooks/useWalletObserverRef.test.tsx +19 -10
  20. package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.js +0 -28
  21. package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.js.map +0 -1
  22. package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.js +0 -22
  23. package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.js.map +0 -1
  24. package/dist/types/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.d.ts +0 -12
  25. package/dist/types/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.d.ts.map +0 -1
  26. package/src/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.ts +0 -30
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sundaeswap/wallet-lite",
3
- "version": "0.0.97",
3
+ "version": "0.0.98",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",
@@ -7,7 +7,7 @@ import {
7
7
  WalletObserverContext,
8
8
  } from "../contexts/observer/index.js";
9
9
  import { useDerivedState } from "./hooks/effects/useDerivedState.js";
10
- import { useProviderRefreshInterval } from "./hooks/effects/useProviderRefreshInterval.js";
10
+ import { useSyncWalletWithInterval } from "./hooks/effects/useSyncWalletWithInterval.js";
11
11
  import { useProviderWalletObserverRef } from "./hooks/useProviderWalletObserverRef.js";
12
12
  import { useWalletObserverState } from "./hooks/useWalletObserverState.js";
13
13
 
@@ -30,11 +30,8 @@ const WalletObserverProvider: FC<
30
30
  } = useProviderWalletObserverRef(options?.observerOptions, options?.hooks);
31
31
  const state = useWalletObserverState(observerRef.current);
32
32
 
33
- useProviderRefreshInterval(
34
- observerRef.current,
35
- state.syncWallet,
36
- options?.refreshInterval,
37
- );
33
+ // Enable syncing.
34
+ useSyncWalletWithInterval(state.syncWallet, options?.refreshInterval);
38
35
 
39
36
  const derivedState = useDerivedState(observerRef.current, {
40
37
  usedAddresses: state.usedAddresses,
@@ -0,0 +1,23 @@
1
+ import { useQuery } from "@tanstack/react-query";
2
+
3
+ /**
4
+ * This hook is responsible for attaching
5
+ * calling the sync function on an interval.
6
+ * If set to 0, then the refresh interval is not attached.
7
+ *
8
+ * @param syncWalletFn
9
+ * @param refreshInterval
10
+ */
11
+ export const useSyncWalletWithInterval = (
12
+ syncWalletFn: () => Promise<void>,
13
+ refreshInterval?: number,
14
+ ) => {
15
+ useQuery({
16
+ queryKey: [refreshInterval, syncWalletFn],
17
+ queryFn: syncWalletFn,
18
+ refetchInterval: refreshInterval,
19
+ enabled: refreshInterval ? refreshInterval > 0 : false,
20
+ refetchOnWindowFocus: true,
21
+ refetchOnReconnect: true,
22
+ });
23
+ };
@@ -1,14 +1,21 @@
1
+ import { IAssetAmountMetadata } from "@sundaeswap/asset";
2
+ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
1
3
  import { render } from "@testing-library/react";
2
4
  import { userEvent } from "@testing-library/user-event";
3
5
  import { describe, expect, it } from "bun:test";
6
+ import { FC, PropsWithChildren } from "react";
4
7
 
5
- import { IAssetAmountMetadata } from "@sundaeswap/asset";
6
8
  import {
7
9
  RenderWallet,
8
10
  TUseWalletObserverState,
9
11
  WalletObserverProvider,
10
12
  } from "../../index.js";
11
13
 
14
+ const client = new QueryClient();
15
+ const QueryProvider: FC<PropsWithChildren> = ({ children }) => (
16
+ <QueryClientProvider client={client}>{children}</QueryClientProvider>
17
+ );
18
+
12
19
  const TestComponent = (
13
20
  state: Omit<
14
21
  TUseWalletObserverState<IAssetAmountMetadata>,
@@ -40,7 +47,11 @@ describe("RenderWallet", () => {
40
47
  <RenderWallet render={TestComponent} />,
41
48
  {
42
49
  wrapper(props) {
43
- return <WalletObserverProvider {...props} />;
50
+ return (
51
+ <QueryProvider>
52
+ <WalletObserverProvider {...props} />
53
+ </QueryProvider>
54
+ );
44
55
  },
45
56
  },
46
57
  );
@@ -3,6 +3,8 @@ import { act } from "@testing-library/react";
3
3
  import { renderHook } from "@testing-library/react-hooks";
4
4
  import { describe, expect, it } from "bun:test";
5
5
 
6
+ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
7
+ import { FC, PropsWithChildren } from "react";
6
8
  import { mockedEternlWallet } from "../../../../../setup-tests.js";
7
9
  import {
8
10
  IWalletObserverProviderProps,
@@ -12,13 +14,22 @@ import {
12
14
 
13
15
  const INTERVAL_AMOUNT = 10;
14
16
 
17
+ const client = new QueryClient();
18
+ const QueryProvider: FC<PropsWithChildren> = ({ children }) => (
19
+ <QueryClientProvider client={client}>{children}</QueryClientProvider>
20
+ );
21
+
15
22
  describe("useAvailableExtensions", () => {
16
23
  it("should correctly retrieve the instance", async () => {
17
24
  const { result } = renderHook<
18
25
  IWalletObserverProviderProps,
19
26
  ReturnType<typeof useAvailableExtensions>
20
27
  >(() => useAvailableExtensions(INTERVAL_AMOUNT), {
21
- wrapper: (props) => <WalletObserverProvider {...props} />,
28
+ wrapper: (props) => (
29
+ <QueryProvider>
30
+ <WalletObserverProvider {...props} />
31
+ </QueryProvider>
32
+ ),
22
33
  });
23
34
 
24
35
  act(() => {
@@ -1,7 +1,9 @@
1
+ import { Cardano } from "@cardano-sdk/core";
2
+ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
1
3
  import { act, renderHook } from "@testing-library/react-hooks";
2
4
  import { describe, expect, it } from "bun:test";
5
+ import { FC, PropsWithChildren } from "react";
3
6
 
4
- import { Cardano } from "@cardano-sdk/core";
5
7
  import { mockWalletAssetIds } from "../../../__data__/assets.js";
6
8
  import {
7
9
  mockNetwork,
@@ -15,6 +17,11 @@ import {
15
17
  useWalletObserver,
16
18
  } from "../../../index.js";
17
19
 
20
+ const client = new QueryClient();
21
+ const QueryProvider: FC<PropsWithChildren> = ({ children }) => (
22
+ <QueryClientProvider client={client}>{children}</QueryClientProvider>
23
+ );
24
+
18
25
  describe("useWalletObserver", () => {
19
26
  it("should correctly retrieve the context", async () => {
20
27
  const { result } = renderHook<
@@ -22,16 +29,18 @@ describe("useWalletObserver", () => {
22
29
  ReturnType<typeof useWalletObserver>
23
30
  >(() => useWalletObserver(), {
24
31
  wrapper: (props) => (
25
- <WalletObserverProvider
26
- {...{
27
- ...props,
28
- observerOptions: {
29
- ...props.options?.observerOptions,
30
- // Quick resolve time for tests.
31
- connectTimeout: 10,
32
- },
33
- }}
34
- />
32
+ <QueryProvider>
33
+ <WalletObserverProvider
34
+ {...{
35
+ ...props,
36
+ observerOptions: {
37
+ ...props.options?.observerOptions,
38
+ // Quick resolve time for tests.
39
+ connectTimeout: 10,
40
+ },
41
+ }}
42
+ />
43
+ </QueryProvider>
35
44
  ),
36
45
  });
37
46
 
@@ -1,5 +1,7 @@
1
+ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
1
2
  import { renderHook } from "@testing-library/react-hooks";
2
3
  import { describe, expect, it } from "bun:test";
4
+ import { FC, PropsWithChildren } from "react";
3
5
 
4
6
  import { WalletObserver } from "../../../classes/WalletObserver.class.js";
5
7
  import {
@@ -8,6 +10,11 @@ import {
8
10
  } from "../../../index.js";
9
11
  import { useProviderWalletObserverRef } from "../../WalletObserverProvider/hooks/useProviderWalletObserverRef.js";
10
12
 
13
+ const client = new QueryClient();
14
+ const QueryProvider: FC<PropsWithChildren> = ({ children }) => (
15
+ <QueryClientProvider client={client}>{children}</QueryClientProvider>
16
+ );
17
+
11
18
  describe("useWalletObserverRef", () => {
12
19
  it("should correctly retrieve the instance", async () => {
13
20
  const { result } = renderHook<
@@ -15,16 +22,18 @@ describe("useWalletObserverRef", () => {
15
22
  ReturnType<typeof useProviderWalletObserverRef>
16
23
  >(() => useProviderWalletObserverRef(), {
17
24
  wrapper: (props) => (
18
- <WalletObserverProvider
19
- {...{
20
- ...props,
21
- observerOptions: {
22
- ...props.options?.observerOptions,
23
- // Quick resolve time for tests.
24
- connectTimeout: 10,
25
- },
26
- }}
27
- />
25
+ <QueryProvider>
26
+ <WalletObserverProvider
27
+ {...{
28
+ ...props,
29
+ observerOptions: {
30
+ ...props.options?.observerOptions,
31
+ // Quick resolve time for tests.
32
+ connectTimeout: 10,
33
+ },
34
+ }}
35
+ />
36
+ </QueryProvider>
28
37
  ),
29
38
  });
30
39
 
@@ -1,28 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useProviderRefreshInterval = void 0;
7
- var _react = require("react");
8
- /**
9
- * Internal use only. This hook is responsible for attaching
10
- * a refresh interval to the WalletObserver. If set to 0, then
11
- * the refresh interval is not attached.
12
- *
13
- * @param observer
14
- * @param refreshInterval
15
- * @param syncWallet
16
- */
17
- var useProviderRefreshInterval = exports.useProviderRefreshInterval = function useProviderRefreshInterval(observer, syncWallet, refreshInterval) {
18
- (0, _react.useEffect)(function () {
19
- if (!refreshInterval) {
20
- return;
21
- }
22
- var interval = setInterval(syncWallet, refreshInterval);
23
- return function () {
24
- clearInterval(interval);
25
- };
26
- }, [refreshInterval, syncWallet, observer]);
27
- };
28
- //# sourceMappingURL=useProviderRefreshInterval.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useProviderRefreshInterval.js","names":["_react","require","useProviderRefreshInterval","exports","observer","syncWallet","refreshInterval","useEffect","interval","setInterval","clearInterval"],"sources":["../../../../../../src/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { WalletObserver } from \"../../../../classes/WalletObserver.class.js\";\n\n/**\n * Internal use only. This hook is responsible for attaching\n * a refresh interval to the WalletObserver. If set to 0, then\n * the refresh interval is not attached.\n *\n * @param observer\n * @param refreshInterval\n * @param syncWallet\n */\nexport const useProviderRefreshInterval = (\n observer: WalletObserver,\n syncWallet: () => Promise<void>,\n refreshInterval?: number,\n) => {\n useEffect(() => {\n if (!refreshInterval) {\n return;\n }\n\n const interval = setInterval(syncWallet, refreshInterval);\n\n return () => {\n clearInterval(interval);\n };\n }, [refreshInterval, syncWallet, observer]);\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMC,0BAA0B,GAAAC,OAAA,CAAAD,0BAAA,GAAG,SAA7BA,0BAA0BA,CACrCE,QAAwB,EACxBC,UAA+B,EAC/BC,eAAwB,EACrB;EACH,IAAAC,gBAAS,EAAC,YAAM;IACd,IAAI,CAACD,eAAe,EAAE;MACpB;IACF;IAEA,IAAME,QAAQ,GAAGC,WAAW,CAACJ,UAAU,EAAEC,eAAe,CAAC;IAEzD,OAAO,YAAM;MACXI,aAAa,CAACF,QAAQ,CAAC;IACzB,CAAC;EACH,CAAC,EAAE,CAACF,eAAe,EAAED,UAAU,EAAED,QAAQ,CAAC,CAAC;AAC7C,CAAC","ignoreList":[]}
@@ -1,22 +0,0 @@
1
- import { useEffect } from "react";
2
- /**
3
- * Internal use only. This hook is responsible for attaching
4
- * a refresh interval to the WalletObserver. If set to 0, then
5
- * the refresh interval is not attached.
6
- *
7
- * @param observer
8
- * @param refreshInterval
9
- * @param syncWallet
10
- */
11
- export const useProviderRefreshInterval = (observer, syncWallet, refreshInterval) => {
12
- useEffect(() => {
13
- if (!refreshInterval) {
14
- return;
15
- }
16
- const interval = setInterval(syncWallet, refreshInterval);
17
- return () => {
18
- clearInterval(interval);
19
- };
20
- }, [refreshInterval, syncWallet, observer]);
21
- };
22
- //# sourceMappingURL=useProviderRefreshInterval.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useProviderRefreshInterval.js","names":["useEffect","useProviderRefreshInterval","observer","syncWallet","refreshInterval","interval","setInterval","clearInterval"],"sources":["../../../../../../src/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.ts"],"sourcesContent":["import { useEffect } from \"react\";\n\nimport { WalletObserver } from \"../../../../classes/WalletObserver.class.js\";\n\n/**\n * Internal use only. This hook is responsible for attaching\n * a refresh interval to the WalletObserver. If set to 0, then\n * the refresh interval is not attached.\n *\n * @param observer\n * @param refreshInterval\n * @param syncWallet\n */\nexport const useProviderRefreshInterval = (\n observer: WalletObserver,\n syncWallet: () => Promise<void>,\n refreshInterval?: number,\n) => {\n useEffect(() => {\n if (!refreshInterval) {\n return;\n }\n\n const interval = setInterval(syncWallet, refreshInterval);\n\n return () => {\n clearInterval(interval);\n };\n }, [refreshInterval, syncWallet, observer]);\n};\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AAIjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,0BAA0B,GAAGA,CACxCC,QAAwB,EACxBC,UAA+B,EAC/BC,eAAwB,KACrB;EACHJ,SAAS,CAAC,MAAM;IACd,IAAI,CAACI,eAAe,EAAE;MACpB;IACF;IAEA,MAAMC,QAAQ,GAAGC,WAAW,CAACH,UAAU,EAAEC,eAAe,CAAC;IAEzD,OAAO,MAAM;MACXG,aAAa,CAACF,QAAQ,CAAC;IACzB,CAAC;EACH,CAAC,EAAE,CAACD,eAAe,EAAED,UAAU,EAAED,QAAQ,CAAC,CAAC;AAC7C,CAAC","ignoreList":[]}
@@ -1,12 +0,0 @@
1
- import { WalletObserver } from "../../../../classes/WalletObserver.class.js";
2
- /**
3
- * Internal use only. This hook is responsible for attaching
4
- * a refresh interval to the WalletObserver. If set to 0, then
5
- * the refresh interval is not attached.
6
- *
7
- * @param observer
8
- * @param refreshInterval
9
- * @param syncWallet
10
- */
11
- export declare const useProviderRefreshInterval: (observer: WalletObserver, syncWallet: () => Promise<void>, refreshInterval?: number) => void;
12
- //# sourceMappingURL=useProviderRefreshInterval.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useProviderRefreshInterval.d.ts","sourceRoot":"","sources":["../../../../../../src/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAE7E;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,aAC3B,cAAc,cACZ,MAAM,QAAQ,IAAI,CAAC,oBACb,MAAM,SAazB,CAAC"}
@@ -1,30 +0,0 @@
1
- import { useEffect } from "react";
2
-
3
- import { WalletObserver } from "../../../../classes/WalletObserver.class.js";
4
-
5
- /**
6
- * Internal use only. This hook is responsible for attaching
7
- * a refresh interval to the WalletObserver. If set to 0, then
8
- * the refresh interval is not attached.
9
- *
10
- * @param observer
11
- * @param refreshInterval
12
- * @param syncWallet
13
- */
14
- export const useProviderRefreshInterval = (
15
- observer: WalletObserver,
16
- syncWallet: () => Promise<void>,
17
- refreshInterval?: number,
18
- ) => {
19
- useEffect(() => {
20
- if (!refreshInterval) {
21
- return;
22
- }
23
-
24
- const interval = setInterval(syncWallet, refreshInterval);
25
-
26
- return () => {
27
- clearInterval(interval);
28
- };
29
- }, [refreshInterval, syncWallet, observer]);
30
- };