@sundaeswap/wallet-lite 0.0.40 → 0.0.42

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 (115) hide show
  1. package/dist/cjs/@types/events.js.map +1 -1
  2. package/dist/cjs/@types/global.d.js.map +1 -1
  3. package/dist/cjs/@types/observer.js.map +1 -1
  4. package/dist/cjs/classes/WalletAssetMap.class.js.map +1 -1
  5. package/dist/cjs/classes/WalletBalanceMap.class.js +1 -1
  6. package/dist/cjs/classes/WalletBalanceMap.class.js.map +1 -1
  7. package/dist/cjs/classes/WalletObserver.class.js +1 -1
  8. package/dist/cjs/classes/WalletObserver.class.js.map +1 -1
  9. package/dist/cjs/classes/WalletObserverEvent.js +3 -2
  10. package/dist/cjs/classes/WalletObserverEvent.js.map +1 -1
  11. package/dist/cjs/classes/WalletObserverUtils.class.js +3 -0
  12. package/dist/cjs/classes/WalletObserverUtils.class.js.map +1 -1
  13. package/dist/cjs/react-components/RenderWallet.js.map +1 -1
  14. package/dist/cjs/react-components/RenderWalletHandles.js.map +1 -1
  15. package/dist/cjs/react-components/RenderWalletPeerConnect.js.map +1 -1
  16. package/dist/cjs/react-components/RenderWalletState.js.map +1 -1
  17. package/dist/cjs/react-components/WalletObserverProvider/WalletObserverProvider.js.map +1 -1
  18. package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useDerivedState.js.map +1 -1
  19. package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.js.map +1 -1
  20. package/dist/cjs/react-components/WalletObserverProvider/hooks/useProviderWalletObserverRef.js +6 -0
  21. package/dist/cjs/react-components/WalletObserverProvider/hooks/useProviderWalletObserverRef.js.map +1 -1
  22. package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +5 -3
  23. package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
  24. package/dist/cjs/react-components/contexts/observer/context.js.map +1 -1
  25. package/dist/cjs/react-components/contexts/observer/types.js.map +1 -1
  26. package/dist/cjs/react-components/hooks/useWalletHandles.js.map +1 -1
  27. package/dist/cjs/react-components/hooks/useWalletLoadingState.js.map +1 -1
  28. package/dist/cjs/react-components/hooks/useWalletObserver.js.map +1 -1
  29. package/dist/cjs/react-components/hooks/useWalletPeerConnect.js.map +1 -1
  30. package/dist/cjs/utils/comparisons.js.map +1 -1
  31. package/dist/cjs/utils/hashing.js.map +1 -1
  32. package/dist/esm/@types/events.js.map +1 -1
  33. package/dist/esm/@types/global.d.js.map +1 -1
  34. package/dist/esm/@types/observer.js.map +1 -1
  35. package/dist/esm/classes/WalletAssetMap.class.js.map +1 -1
  36. package/dist/esm/classes/WalletBalanceMap.class.js +1 -1
  37. package/dist/esm/classes/WalletBalanceMap.class.js.map +1 -1
  38. package/dist/esm/classes/WalletObserver.class.js +3 -3
  39. package/dist/esm/classes/WalletObserver.class.js.map +1 -1
  40. package/dist/esm/classes/WalletObserverEvent.js +3 -2
  41. package/dist/esm/classes/WalletObserverEvent.js.map +1 -1
  42. package/dist/esm/classes/WalletObserverUtils.class.js +5 -0
  43. package/dist/esm/classes/WalletObserverUtils.class.js.map +1 -1
  44. package/dist/esm/react-components/RenderWallet.js.map +1 -1
  45. package/dist/esm/react-components/RenderWalletHandles.js.map +1 -1
  46. package/dist/esm/react-components/RenderWalletPeerConnect.js.map +1 -1
  47. package/dist/esm/react-components/RenderWalletState.js.map +1 -1
  48. package/dist/esm/react-components/WalletObserverProvider/WalletObserverProvider.js.map +1 -1
  49. package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useDerivedState.js.map +1 -1
  50. package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.js.map +1 -1
  51. package/dist/esm/react-components/WalletObserverProvider/hooks/useProviderWalletObserverRef.js +5 -0
  52. package/dist/esm/react-components/WalletObserverProvider/hooks/useProviderWalletObserverRef.js.map +1 -1
  53. package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +3 -2
  54. package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
  55. package/dist/esm/react-components/contexts/observer/context.js.map +1 -1
  56. package/dist/esm/react-components/contexts/observer/types.js.map +1 -1
  57. package/dist/esm/react-components/hooks/useWalletHandles.js.map +1 -1
  58. package/dist/esm/react-components/hooks/useWalletLoadingState.js.map +1 -1
  59. package/dist/esm/react-components/hooks/useWalletObserver.js.map +1 -1
  60. package/dist/esm/react-components/hooks/useWalletPeerConnect.js.map +1 -1
  61. package/dist/esm/utils/comparisons.js.map +1 -1
  62. package/dist/esm/utils/hashing.js.map +1 -1
  63. package/dist/types/@types/events.d.ts +2 -2
  64. package/dist/types/classes/WalletBalanceMap.class.d.ts +1 -1
  65. package/dist/types/classes/WalletBalanceMap.class.d.ts.map +1 -1
  66. package/dist/types/classes/WalletObserver.class.d.ts +2 -2
  67. package/dist/types/classes/WalletObserver.class.d.ts.map +1 -1
  68. package/dist/types/classes/WalletObserverEvent.d.ts +7 -7
  69. package/dist/types/classes/WalletObserverEvent.d.ts.map +1 -1
  70. package/dist/types/classes/WalletObserverUtils.class.d.ts.map +1 -1
  71. package/dist/types/react-components/RenderWallet.d.ts +1 -1
  72. package/dist/types/react-components/RenderWallet.d.ts.map +1 -1
  73. package/dist/types/react-components/WalletObserverProvider/hooks/useProviderWalletObserverRef.d.ts.map +1 -1
  74. package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts.map +1 -1
  75. package/dist/types/react-components/contexts/observer/types.d.ts +1 -0
  76. package/dist/types/react-components/contexts/observer/types.d.ts.map +1 -1
  77. package/dist/types/tsconfig.build.tsbuildinfo +1 -1
  78. package/dist/types/utils/comparisons.d.ts.map +1 -1
  79. package/dist/types/utils/hashing.d.ts +3 -3
  80. package/package.json +1 -1
  81. package/src/@types/events.ts +4 -4
  82. package/src/@types/global.d.ts +1 -0
  83. package/src/@types/observer.ts +6 -6
  84. package/src/__data__/assets.ts +1 -1
  85. package/src/classes/WalletAssetMap.class.ts +1 -1
  86. package/src/classes/WalletBalanceMap.class.ts +6 -6
  87. package/src/classes/WalletObserver.class.ts +27 -25
  88. package/src/classes/WalletObserverEvent.ts +14 -13
  89. package/src/classes/WalletObserverUtils.class.ts +11 -5
  90. package/src/classes/__tests__/WalletObserver.test.ts +23 -30
  91. package/src/classes/__tests__/WalletObserverEvent.test.ts +8 -8
  92. package/src/classes/__tests__/WalletObserverUtils.test.ts +6 -6
  93. package/src/react-components/RenderWallet.tsx +4 -4
  94. package/src/react-components/RenderWalletHandles.tsx +2 -2
  95. package/src/react-components/RenderWalletPeerConnect.tsx +2 -2
  96. package/src/react-components/RenderWalletState.tsx +2 -2
  97. package/src/react-components/WalletObserverProvider/WalletObserverProvider.tsx +3 -3
  98. package/src/react-components/WalletObserverProvider/hooks/effects/useDerivedState.ts +2 -2
  99. package/src/react-components/WalletObserverProvider/hooks/effects/useProviderRefreshInterval.ts +1 -1
  100. package/src/react-components/WalletObserverProvider/hooks/useProviderWalletObserverRef.ts +21 -10
  101. package/src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts +19 -27
  102. package/src/react-components/__tests__/RenderWallet.test.tsx +1 -1
  103. package/src/react-components/__tests__/RenderWalletHandles.test.tsx +8 -8
  104. package/src/react-components/__tests__/hooks/useAvailableExtensions.test.tsx +1 -0
  105. package/src/react-components/__tests__/hooks/useWalletObserverRef.test.tsx +1 -1
  106. package/src/react-components/contexts/observer/context.ts +3 -3
  107. package/src/react-components/contexts/observer/types.ts +6 -5
  108. package/src/react-components/hooks/useWalletHandles.ts +5 -5
  109. package/src/react-components/hooks/useWalletLoadingState.ts +2 -2
  110. package/src/react-components/hooks/useWalletObserver.ts +2 -2
  111. package/src/react-components/hooks/useWalletPeerConnect.tsx +1 -1
  112. package/src/utils/__tests__/comparisons.test.ts +3 -3
  113. package/src/utils/__tests__/hashing.test.ts +6 -8
  114. package/src/utils/comparisons.ts +3 -1
  115. package/src/utils/hashing.ts +5 -5
@@ -23,7 +23,7 @@ describe("WalletObserverEvent", () => {
23
23
 
24
24
  instance.addEventListener(
25
25
  EWalletObserverEvents.CONNECT_WALLET_END,
26
- handler
26
+ handler,
27
27
  );
28
28
 
29
29
  instance.dispatch(EWalletObserverEvents.CONNECT_WALLET_END);
@@ -43,14 +43,14 @@ describe("WalletObserverEvent", () => {
43
43
 
44
44
  instance.addEventListener(
45
45
  EWalletObserverEvents.CONNECT_WALLET_END,
46
- handler
46
+ handler,
47
47
  );
48
48
 
49
49
  expect(instance.eventList().size).toEqual(1);
50
50
 
51
51
  instance.addEventListener(
52
52
  EWalletObserverEvents.CONNECT_WALLET_END,
53
- handler
53
+ handler,
54
54
  );
55
55
 
56
56
  expect(instance.eventList().size).toEqual(1);
@@ -67,29 +67,29 @@ describe("WalletObserverEvent", () => {
67
67
 
68
68
  instance.addEventListener(
69
69
  EWalletObserverEvents.CONNECT_WALLET_START,
70
- handler1
70
+ handler1,
71
71
  );
72
72
  instance.addEventListener(
73
73
  EWalletObserverEvents.CONNECT_WALLET_END,
74
- handler1
74
+ handler1,
75
75
  );
76
76
  instance.addEventListener(
77
77
  EWalletObserverEvents.CONNECT_WALLET_END,
78
- handler2
78
+ handler2,
79
79
  );
80
80
 
81
81
  expect(instance.eventList().size).toEqual(3);
82
82
 
83
83
  instance.removeEventListener(
84
84
  EWalletObserverEvents.CONNECT_WALLET_START,
85
- handler1
85
+ handler1,
86
86
  );
87
87
 
88
88
  expect(instance.eventList().size).toEqual(2);
89
89
 
90
90
  instance.removeEventListener(
91
91
  EWalletObserverEvents.CONNECT_WALLET_END,
92
- handler1
92
+ handler1,
93
93
  );
94
94
 
95
95
  expect(instance.eventList().size).toEqual(1);
@@ -53,12 +53,12 @@ beforeAll(() => {
53
53
  })),
54
54
  },
55
55
  },
56
- })
56
+ }),
57
57
  );
58
58
  });
59
59
 
60
60
  afterAll(() => {
61
- mock.module("@cardano-sdk/core", () => coreModuleMock);
61
+ mock.restore();
62
62
  });
63
63
 
64
64
  describe("WalletObserverUtils", async () => {
@@ -91,7 +91,7 @@ describe("WalletObserverUtils", async () => {
91
91
  it("should throw an error if the address is malformed", () => {
92
92
  isValidMock.mockImplementation(() => false);
93
93
  expect(() => instance.getAddressDetails("invalid")).toThrowError(
94
- "Expected a Bech32 encoded address."
94
+ "Expected a Bech32 encoded address.",
95
95
  );
96
96
  });
97
97
  });
@@ -100,19 +100,19 @@ describe("WalletObserverUtils", async () => {
100
100
  it("should call correct dependency functions", () => {
101
101
  expect(() => instance.getBech32StakingAddress(testAddress)).not.toThrow();
102
102
  expect(instance.getBech32StakingAddress(testAddress)).toEqual(
103
- stakeAddress
103
+ stakeAddress,
104
104
  );
105
105
 
106
106
  isValidMock.mockImplementation(() => false);
107
107
  expect(() => instance.getBech32StakingAddress("invalid")).toThrowError(
108
- "Expected a Bech32 encoded address."
108
+ "Expected a Bech32 encoded address.",
109
109
  );
110
110
  expect(isValidMock).toHaveBeenCalled();
111
111
 
112
112
  // @ts-expect-error It can be undefined.
113
113
  getStakeCredentialMock.mockImplementation(() => undefined);
114
114
  expect(() => instance.getBech32StakingAddress("invalid")).toThrowError(
115
- "Expected a Bech32 encoded address."
115
+ "Expected a Bech32 encoded address.",
116
116
  );
117
117
  });
118
118
  });
@@ -5,12 +5,12 @@ import { ErrorBoundary } from "react-error-boundary";
5
5
  import { useWalletObserver } from "./hooks/useWalletObserver.js";
6
6
 
7
7
  export type TRenderWalletFunctionState<
8
- T extends IAssetAmountMetadata = IAssetAmountMetadata
8
+ T extends IAssetAmountMetadata = IAssetAmountMetadata,
9
9
  > = ReturnType<typeof useWalletObserver<T>>;
10
10
 
11
- export type TRenderWalletFunction = (
12
- state: TRenderWalletFunctionState<any>
13
- ) => JSX.Element | ReactNode;
11
+ export type TRenderWalletFunction<
12
+ T extends IAssetAmountMetadata = IAssetAmountMetadata,
13
+ > = (state: TRenderWalletFunctionState<T>) => JSX.Element | ReactNode;
14
14
 
15
15
  export interface IRenderWalletProps {
16
16
  render: TRenderWalletFunction;
@@ -6,12 +6,12 @@ import { useWalletHandles } from "./hooks/useWalletHandles.js";
6
6
  import { useWalletObserver } from "./hooks/useWalletObserver.js";
7
7
 
8
8
  export type TRenderWalletHandlesFunctionState<
9
- T extends IAssetAmountMetadata = IAssetAmountMetadata
9
+ T extends IAssetAmountMetadata = IAssetAmountMetadata,
10
10
  > = ReturnType<typeof useWalletObserver<T>> &
11
11
  ReturnType<typeof useWalletHandles<T>>;
12
12
 
13
13
  export type TRenderWalletHandlesFunction = (
14
- state: TRenderWalletHandlesFunctionState
14
+ state: TRenderWalletHandlesFunctionState,
15
15
  ) => JSX.Element | ReactNode;
16
16
 
17
17
  export interface IRenderWalletHandlesProps {
@@ -6,12 +6,12 @@ import { useWalletObserver } from "./hooks/useWalletObserver.js";
6
6
  import { useWalletPeerConnect } from "./hooks/useWalletPeerConnect.js";
7
7
 
8
8
  export type TRenderWalletPeerConnectFunctionState<
9
- T extends IAssetAmountMetadata = IAssetAmountMetadata
9
+ T extends IAssetAmountMetadata = IAssetAmountMetadata,
10
10
  > = ReturnType<typeof useWalletObserver<T>> &
11
11
  ReturnType<typeof useWalletPeerConnect<T>>;
12
12
 
13
13
  export type TRenderWalletPeerConnectFunction = (
14
- state: TRenderWalletPeerConnectFunctionState
14
+ state: TRenderWalletPeerConnectFunctionState,
15
15
  ) => ReactNode;
16
16
 
17
17
  export interface IRenderWalletPeerConnectProps {
@@ -6,12 +6,12 @@ import { useWalletLoadingState } from "./hooks/useWalletLoadingState.js";
6
6
  import { useWalletObserver } from "./hooks/useWalletObserver.js";
7
7
 
8
8
  export type TRenderWalletStateFunctionState<
9
- T extends IAssetAmountMetadata = IAssetAmountMetadata
9
+ T extends IAssetAmountMetadata = IAssetAmountMetadata,
10
10
  > = ReturnType<typeof useWalletObserver<T>> &
11
11
  ReturnType<typeof useWalletLoadingState<T>>;
12
12
 
13
13
  export type TRenderWalletStateFunction = (
14
- state: TRenderWalletStateFunctionState
14
+ state: TRenderWalletStateFunctionState,
15
15
  ) => JSX.Element | ReactNode;
16
16
 
17
17
  export interface IRenderWalletStateProps {
@@ -34,7 +34,7 @@ const WalletObserverProvider: FC<
34
34
  useProviderRefreshInterval(
35
35
  observerRef.current,
36
36
  state.syncWallet,
37
- options?.refreshInterval
37
+ options?.refreshInterval,
38
38
  );
39
39
 
40
40
  const derivedState = useDerivedState(observerRef.current, {
@@ -63,7 +63,7 @@ const WalletObserverProvider: FC<
63
63
  syncingWallet,
64
64
  ready,
65
65
  observerRef.current,
66
- ]
66
+ ],
67
67
  );
68
68
 
69
69
  useEffect(() => {
@@ -73,7 +73,7 @@ const WalletObserverProvider: FC<
73
73
 
74
74
  const wallet: TSupportedWalletExtensions | null =
75
75
  window.localStorage.getItem(
76
- WalletObserver.PERSISTENCE_CACHE_KEY
76
+ WalletObserver.PERSISTENCE_CACHE_KEY,
77
77
  ) as TSupportedWalletExtensions;
78
78
 
79
79
  if (wallet && observerRef.current?.getOptions()?.persistence) {
@@ -4,7 +4,7 @@ import { useWalletObserverState } from "../useWalletObserverState.js";
4
4
 
5
5
  export const useDerivedState = (
6
6
  observer: WalletObserver,
7
- state: Pick<ReturnType<typeof useWalletObserverState>, "usedAddresses">
7
+ state: Pick<ReturnType<typeof useWalletObserverState>, "usedAddresses">,
8
8
  ) => {
9
9
  const [stakeAddress, setStakeAddress] = useState<string>();
10
10
 
@@ -23,7 +23,7 @@ export const useDerivedState = (
23
23
  stakeAddress,
24
24
  mainAddress: state.usedAddresses[0],
25
25
  }),
26
- [state.usedAddresses[0], stakeAddress]
26
+ [state.usedAddresses[0], stakeAddress],
27
27
  );
28
28
 
29
29
  return memoizedDerivedState;
@@ -14,7 +14,7 @@ import { WalletObserver } from "../../../../classes/WalletObserver.class.js";
14
14
  export const useProviderRefreshInterval = (
15
15
  observer: WalletObserver,
16
16
  syncWallet: () => Promise<void>,
17
- refreshInterval?: number
17
+ refreshInterval?: number,
18
18
  ) => {
19
19
  useEffect(() => {
20
20
  if (!refreshInterval) {
@@ -14,7 +14,7 @@ import { TWalletProviderHooks } from "../../contexts/observer/index.js";
14
14
  */
15
15
  export const useProviderWalletObserverRef = (
16
16
  options?: TWalletObserverOptions,
17
- hooks?: TWalletProviderHooks
17
+ hooks?: TWalletProviderHooks,
18
18
  ) => {
19
19
  // Use ref to store the observer instance, ensuring it's created only once
20
20
  const observerRef = useRef<WalletObserver | null>(null);
@@ -33,7 +33,7 @@ export const useProviderWalletObserverRef = (
33
33
  return Boolean(
34
34
  observerRef.current &&
35
35
  observerRef.current.api &&
36
- observerRef.current.activeWallet
36
+ observerRef.current.activeWallet,
37
37
  );
38
38
  }, [observerRef, observerRef.current.api, observerRef.current.activeWallet]);
39
39
 
@@ -61,22 +61,29 @@ export const useProviderWalletObserverRef = (
61
61
  hooks?.onSyncWalletEnd?.();
62
62
  setSyncing(() => false);
63
63
  };
64
+ const onDisconnect = () => {
65
+ hooks?.onDisconnectWallet?.();
66
+ };
64
67
 
65
68
  observerRef.current.addEventListener(
66
69
  EWalletObserverEvents.CONNECT_WALLET_START,
67
- setConnectingStart
70
+ setConnectingStart,
68
71
  );
69
72
  observerRef.current.addEventListener(
70
73
  EWalletObserverEvents.CONNECT_WALLET_END,
71
- setConnectingEnd
74
+ setConnectingEnd,
72
75
  );
73
76
  observerRef.current.addEventListener(
74
77
  EWalletObserverEvents.SYNCING_WALLET_START,
75
- setSyncingStart
78
+ setSyncingStart,
76
79
  );
77
80
  observerRef.current.addEventListener(
78
81
  EWalletObserverEvents.SYNCING_WALLET_END,
79
- setSyncingEnd
82
+ setSyncingEnd,
83
+ );
84
+ observerRef.current.addEventListener(
85
+ EWalletObserverEvents.DISCONNECT,
86
+ onDisconnect,
80
87
  );
81
88
 
82
89
  setEventListenersAttached(() => true);
@@ -88,19 +95,23 @@ export const useProviderWalletObserverRef = (
88
95
 
89
96
  observerRef.current.removeEventListener(
90
97
  EWalletObserverEvents.CONNECT_WALLET_START,
91
- setConnectingStart
98
+ setConnectingStart,
92
99
  );
93
100
  observerRef.current.removeEventListener(
94
101
  EWalletObserverEvents.CONNECT_WALLET_END,
95
- setConnectingEnd
102
+ setConnectingEnd,
96
103
  );
97
104
  observerRef.current.removeEventListener(
98
105
  EWalletObserverEvents.SYNCING_WALLET_START,
99
- setSyncingStart
106
+ setSyncingStart,
100
107
  );
101
108
  observerRef.current.removeEventListener(
102
109
  EWalletObserverEvents.SYNCING_WALLET_END,
103
- setSyncingEnd
110
+ setSyncingEnd,
111
+ );
112
+ observerRef.current.removeEventListener(
113
+ EWalletObserverEvents.DISCONNECT,
114
+ onDisconnect,
104
115
  );
105
116
  };
106
117
  }, [observerRef, hooks]);
@@ -1,12 +1,6 @@
1
1
  import type { TransactionUnspentOutput } from "@cardano-sdk/core/dist/cjs/Serialization/index.js";
2
2
  import { AssetAmount, IAssetAmountMetadata } from "@sundaeswap/asset";
3
- import {
4
- useCallback,
5
- useEffect,
6
- useMemo,
7
- useState,
8
- useTransition,
9
- } from "react";
3
+ import { useCallback, useEffect, useState, useTransition } from "react";
10
4
 
11
5
  import {
12
6
  TAssetAmountMap,
@@ -25,20 +19,20 @@ import { THandleMetadata } from "../../contexts/observer/index.js";
25
19
  * @param {WalletObserver} observer
26
20
  */
27
21
  export const useWalletObserverState = <
28
- AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata
22
+ AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata,
29
23
  >(
30
- observer: WalletObserver<AssetMetadata>
24
+ observer: WalletObserver<AssetMetadata>,
31
25
  ) => {
32
26
  const [activeWallet, setActiveWallet] =
33
27
  useState<TSupportedWalletExtensions>();
34
28
  const [adaBalance, setAdaBalance] = useState<AssetAmount<AssetMetadata>>(
35
- new AssetAmount<AssetMetadata>(0n)
29
+ new AssetAmount<AssetMetadata>(0n),
36
30
  );
37
31
  const [handleMetadata, setHandleMetadata] = useState<
38
32
  TAssetAmountMap<THandleMetadata<AssetMetadata>>
39
33
  >(new WalletAssetMap<THandleMetadata<AssetMetadata>>());
40
34
  const [balance, setBalance] = useState<WalletBalanceMap<AssetMetadata>>(
41
- new WalletBalanceMap<AssetMetadata>(observer)
35
+ new WalletBalanceMap<AssetMetadata>(observer),
42
36
  );
43
37
  const [network, setNetwork] = useState<number | undefined>();
44
38
  const [usedAddresses, setUsedAddresses] = useState<string[]>([]);
@@ -48,14 +42,11 @@ export const useWalletObserverState = <
48
42
  const [isCip45, setIsCip45] = useState(false);
49
43
  const [switching, setSwitching] = useState(false);
50
44
  const [isPending, startTransition] = useTransition();
51
-
52
- const willAutoConnect = useMemo(
53
- () =>
54
- Boolean(
55
- window.localStorage.getItem(WalletObserver.PERSISTENCE_CACHE_KEY) &&
56
- observer.getOptions().persistence
57
- ),
58
- [observer]
45
+ const [willAutoConnect, setWillAutoConnect] = useState(
46
+ Boolean(
47
+ window.localStorage.getItem(WalletObserver.PERSISTENCE_CACHE_KEY) &&
48
+ observer.getOptions().persistence,
49
+ ),
59
50
  );
60
51
 
61
52
  const disconnect = useCallback(() => {
@@ -73,6 +64,7 @@ export const useWalletObserverState = <
73
64
  setUtxos(undefined);
74
65
  setCollateral(undefined);
75
66
  setIsCip45(false);
67
+ setWillAutoConnect(false);
76
68
  }, [observer]);
77
69
 
78
70
  const syncWallet = useCallback(async () => {
@@ -90,40 +82,40 @@ export const useWalletObserverState = <
90
82
 
91
83
  startTransition(() => {
92
84
  setActiveWallet((prevWallet) =>
93
- newWallet === prevWallet ? prevWallet : newWallet
85
+ newWallet === prevWallet ? prevWallet : newWallet,
94
86
  );
95
87
 
96
88
  const newAdaBalance = freshData.balanceMap.get(
97
- WalletObserver.ADA_ASSET_ID
89
+ WalletObserver.ADA_ASSET_ID,
98
90
  );
99
91
  if (newAdaBalance) {
100
92
  setAdaBalance((prevBalance) =>
101
93
  prevBalance.amount === newAdaBalance.amount
102
94
  ? prevBalance
103
- : newAdaBalance
95
+ : newAdaBalance,
104
96
  );
105
97
  }
106
98
 
107
99
  setBalance((prevBalance) =>
108
100
  areAssetMapsEqual(prevBalance, freshData.balanceMap)
109
101
  ? prevBalance
110
- : freshData.balanceMap
102
+ : freshData.balanceMap,
111
103
  );
112
104
 
113
105
  setUsedAddresses((prevValue) =>
114
106
  JSON.stringify(prevValue) === JSON.stringify(freshData.usedAddresses)
115
107
  ? prevValue
116
- : freshData.usedAddresses
108
+ : freshData.usedAddresses,
117
109
  );
118
110
 
119
111
  setUnusedAddresses((prevValue) =>
120
112
  JSON.stringify(prevValue) === JSON.stringify(freshData.unusedAddresses)
121
113
  ? prevValue
122
- : freshData.unusedAddresses
114
+ : freshData.unusedAddresses,
123
115
  );
124
116
 
125
117
  setNetwork((prevValue) =>
126
- prevValue === freshData.network ? prevValue : freshData.network
118
+ prevValue === freshData.network ? prevValue : freshData.network,
127
119
  );
128
120
 
129
121
  setUtxos((prevValue) => {
@@ -161,7 +153,7 @@ export const useWalletObserverState = <
161
153
  setSwitching(() => false);
162
154
  return observer.api;
163
155
  },
164
- [observer, setSwitching]
156
+ [observer, setSwitching],
165
157
  );
166
158
 
167
159
  /**
@@ -37,7 +37,7 @@ describe("RenderWallet", () => {
37
37
  wrapper(props) {
38
38
  return <WalletObserverProvider {...props} />;
39
39
  },
40
- }
40
+ },
41
41
  );
42
42
 
43
43
  expect(container.innerHTML).toMatchSnapshot();
@@ -38,15 +38,15 @@ describe("RenderWalletHandles", () => {
38
38
  const user = userEvent.setup();
39
39
  const spiedOnGetAllDataBatch = spyOn(
40
40
  KoraLabsProvider.prototype,
41
- "getAllDataBatch"
41
+ "getAllDataBatch",
42
42
  );
43
43
  spiedOnGetAllDataBatch.mockImplementationOnce(
44
- // @ts-ignore Bug in Bun.sh that mocks the function result rather than the reference.
45
- () => async () => mockHandleMetadata
44
+ // @ts-expect-error Bug in Bun.sh that mocks the function result rather than the reference.
45
+ () => async () => mockHandleMetadata,
46
46
  );
47
47
  spiedOnGetAllDataBatch.mockImplementationOnce(
48
- // @ts-ignore Bug in Bun.sh that mocks the function result rather than the reference.
49
- () => async () => mockHandleMetadata
48
+ // @ts-expect-error Bug in Bun.sh that mocks the function result rather than the reference.
49
+ () => async () => mockHandleMetadata,
50
50
  );
51
51
 
52
52
  const { container, getByTestId, queryByTestId, rerender } = render(
@@ -55,7 +55,7 @@ describe("RenderWalletHandles", () => {
55
55
  wrapper(props) {
56
56
  return <WalletObserverProvider {...props} />;
57
57
  },
58
- }
58
+ },
59
59
  );
60
60
 
61
61
  expect(spiedOnGetAllDataBatch).not.toHaveBeenCalled();
@@ -74,8 +74,8 @@ describe("RenderWalletHandles", () => {
74
74
  expect(container.innerHTML).toMatchSnapshot();
75
75
 
76
76
  spiedOnGetAllDataBatch.mockImplementationOnce(
77
- // @ts-ignore See first mock comment.
78
- () => async () => mockHandleMetadata.map(({ name }) => `${name}-updated`)
77
+ // @ts-expect-error See first mock comment.
78
+ () => async () => mockHandleMetadata.map(({ name }) => `${name}-updated`),
79
79
  );
80
80
 
81
81
  rerender(<RenderWalletHandles render={TestComponent} />);
@@ -29,6 +29,7 @@ describe("useAvailableExtensions", () => {
29
29
  // Inject a duplicate api.
30
30
  window.cardano = {
31
31
  ...window.cardano,
32
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
33
  flint: mockedEternlWallet as unknown as any,
33
34
  };
34
35
 
@@ -28,6 +28,6 @@ describe("useWalletObserverRef", () => {
28
28
  ),
29
29
  });
30
30
 
31
- expect(result.current.current).toBeInstanceOf(WalletObserver);
31
+ expect(result.current.observerRef.current).toBeInstanceOf(WalletObserver);
32
32
  });
33
33
  });
@@ -15,15 +15,15 @@ export const WalletObserverContext = createContext<
15
15
  * @returns {IWalletObserverState<AssetMetadata>}
16
16
  */
17
17
  export function useWalletObserverContext<
18
- AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata
18
+ AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata,
19
19
  >(): IWalletObserverState<AssetMetadata> {
20
20
  const context = useContext(
21
- WalletObserverContext
21
+ WalletObserverContext,
22
22
  ) as unknown as IWalletObserverState<AssetMetadata>;
23
23
 
24
24
  if (!context) {
25
25
  throw new Error(
26
- "useWalletObserverContext must be used within a WalletObserverProvider"
26
+ "useWalletObserverContext must be used within a WalletObserverProvider",
27
27
  );
28
28
  }
29
29
 
@@ -15,13 +15,14 @@ export type TWalletProviderHooks = {
15
15
  onSyncWalletEnd?: () => void;
16
16
  onConnectWalletStart?: () => void;
17
17
  onConnectWalletEnd?: () => void;
18
+ onDisconnectWallet?: () => void;
18
19
  };
19
20
 
20
21
  /**
21
22
  * The resolved internal props of the WalletObserverProvider.
22
23
  */
23
24
  export interface IWalletObserverProviderState<
24
- AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata
25
+ AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata,
25
26
  > {
26
27
  observerOptions: TWalletObserverOptions<AssetMetadata>;
27
28
  hooks: TWalletProviderHooks;
@@ -32,7 +33,7 @@ export interface IWalletObserverProviderState<
32
33
  * The main WalletObserverProvider props.
33
34
  */
34
35
  export interface IWalletObserverProviderProps<
35
- AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata
36
+ AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata,
36
37
  > {
37
38
  options?: Partial<IWalletObserverProviderState<AssetMetadata>>;
38
39
  }
@@ -41,7 +42,7 @@ export interface IWalletObserverProviderProps<
41
42
  * The WalletObserverProvider's internal state.
42
43
  */
43
44
  export interface IWalletObserverState<
44
- AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata
45
+ AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata,
45
46
  > {
46
47
  observerRef: MutableRefObject<WalletObserver<AssetMetadata>>;
47
48
  refreshInterval: number | false;
@@ -61,14 +62,14 @@ export interface IWalletObserverState<
61
62
  * returned from the metadataResolver.
62
63
  */
63
64
  export type THandleMetadata<
64
- AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata
65
+ AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata,
65
66
  > = AssetMetadata & IHandle;
66
67
 
67
68
  /**
68
69
  * The exposed state of the WalletObserverProvider.
69
70
  */
70
71
  export type TUseWalletObserverState<
71
- AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata
72
+ AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata,
72
73
  > = Omit<
73
74
  IWalletObserverState<AssetMetadata>["state"],
74
75
  | "setActiveWallet"
@@ -15,7 +15,7 @@ import { THandleMetadata } from "../contexts/observer/types.js";
15
15
  import { useWalletObserver } from "./useWalletObserver.js";
16
16
 
17
17
  export const useWalletHandles = <
18
- AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata
18
+ AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata,
19
19
  >() => {
20
20
  const state = useWalletObserver<THandleMetadata<AssetMetadata>>();
21
21
  const [isPending, startTransition] = useTransition();
@@ -25,7 +25,7 @@ export const useWalletHandles = <
25
25
 
26
26
  const memoizedHandleDep = useMemo(
27
27
  () => [...state.balance.getHandles().keys()],
28
- [state.balance]
28
+ [state.balance],
29
29
  );
30
30
 
31
31
  const syncHandles = useCallback<
@@ -63,12 +63,12 @@ export const useWalletHandles = <
63
63
  .getAllDataBatch(
64
64
  walletHandlesWithDataArray.map(([key]) => ({
65
65
  value: key.split(".")[1],
66
- }))
66
+ })),
67
67
  );
68
68
 
69
69
  walletHandlesWithDataArray.forEach(([key, asset]) => {
70
70
  const matchingData = walletHandleDataArray.find(
71
- ({ hex }) => hex === key.split(".")[1]
71
+ ({ hex }) => hex === key.split(".")[1],
72
72
  ) as IHandle;
73
73
 
74
74
  walletHandles.set(
@@ -80,7 +80,7 @@ export const useWalletHandles = <
80
80
  assetId: normalizeAssetIdWithDot(asset.metadata.assetId),
81
81
  decimals: 0,
82
82
  })
83
- .withAmount(1n)
83
+ .withAmount(1n),
84
84
  );
85
85
  });
86
86
 
@@ -4,7 +4,7 @@ import { useMemo } from "react";
4
4
  import { useWalletObserverContext } from "../contexts/observer/context.js";
5
5
 
6
6
  export const useWalletLoadingState = <
7
- AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata
7
+ AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata,
8
8
  >() => {
9
9
  const { state } = useWalletObserverContext<AssetMetadata>();
10
10
 
@@ -14,7 +14,7 @@ export const useWalletLoadingState = <
14
14
  syncingWallet: state.syncingWallet,
15
15
  ready: state.ready,
16
16
  }),
17
- [state.ready, state.syncingWallet, state.connectingWallet]
17
+ [state.ready, state.syncingWallet, state.connectingWallet],
18
18
  );
19
19
 
20
20
  return result;
@@ -12,7 +12,7 @@ import {
12
12
  * @returns {Omit<TUseWalletObserverState<AssetMetadata>, "ready" | "connectingWallet" | "syncingWallet">}
13
13
  */
14
14
  export const useWalletObserver = <
15
- AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata
15
+ AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata,
16
16
  >(): Omit<
17
17
  TUseWalletObserverState<AssetMetadata>,
18
18
  "ready" | "connectingWallet" | "syncingWallet"
@@ -64,7 +64,7 @@ export const useWalletObserver = <
64
64
  state.isPending,
65
65
  state.handles,
66
66
  state.willAutoConnect,
67
- ]
67
+ ],
68
68
  );
69
69
 
70
70
  return result;
@@ -11,7 +11,7 @@ import { TGetPeerConnectInstance } from "../../@types/observer.js";
11
11
  import { useWalletObserver } from "./useWalletObserver.js";
12
12
 
13
13
  export const useWalletPeerConnect = <
14
- AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata
14
+ AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata,
15
15
  >() => {
16
16
  const state = useWalletObserver<AssetMetadata>();
17
17
  const [isPending, startTransition] = useTransition();