@sundaeswap/wallet-lite 0.0.27 → 0.0.29

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 (54) hide show
  1. package/dist/cjs/classes/WalletObserver.class.js +33 -24
  2. package/dist/cjs/classes/WalletObserver.class.js.map +1 -1
  3. package/dist/cjs/react-components/RenderWalletHandles.js.map +1 -1
  4. package/dist/cjs/react-components/RenderWalletPeerConnect.js.map +1 -1
  5. package/dist/cjs/react-components/RenderWalletState.js.map +1 -1
  6. package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +6 -14
  7. package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
  8. package/dist/cjs/react-components/contexts/observer/types.js.map +1 -1
  9. package/dist/cjs/react-components/hooks/useWalletLoadingState.js +14 -3
  10. package/dist/cjs/react-components/hooks/useWalletLoadingState.js.map +1 -1
  11. package/dist/cjs/react-components/hooks/useWalletObserver.js +1 -2
  12. package/dist/cjs/react-components/hooks/useWalletObserver.js.map +1 -1
  13. package/dist/cjs/react-components/hooks/useWalletPeerConnect.js +1 -1
  14. package/dist/cjs/react-components/hooks/useWalletPeerConnect.js.map +1 -1
  15. package/dist/esm/classes/WalletObserver.class.js +7 -1
  16. package/dist/esm/classes/WalletObserver.class.js.map +1 -1
  17. package/dist/esm/react-components/RenderWalletHandles.js.map +1 -1
  18. package/dist/esm/react-components/RenderWalletPeerConnect.js.map +1 -1
  19. package/dist/esm/react-components/RenderWalletState.js.map +1 -1
  20. package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +1 -6
  21. package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
  22. package/dist/esm/react-components/contexts/observer/types.js.map +1 -1
  23. package/dist/esm/react-components/hooks/useWalletLoadingState.js +9 -3
  24. package/dist/esm/react-components/hooks/useWalletLoadingState.js.map +1 -1
  25. package/dist/esm/react-components/hooks/useWalletObserver.js +1 -2
  26. package/dist/esm/react-components/hooks/useWalletObserver.js.map +1 -1
  27. package/dist/esm/react-components/hooks/useWalletPeerConnect.js +1 -1
  28. package/dist/esm/react-components/hooks/useWalletPeerConnect.js.map +1 -1
  29. package/dist/types/classes/WalletObserver.class.d.ts +1 -1
  30. package/dist/types/classes/WalletObserver.class.d.ts.map +1 -1
  31. package/dist/types/react-components/RenderWalletHandles.d.ts +2 -7
  32. package/dist/types/react-components/RenderWalletHandles.d.ts.map +1 -1
  33. package/dist/types/react-components/RenderWalletPeerConnect.d.ts +2 -5
  34. package/dist/types/react-components/RenderWalletPeerConnect.d.ts.map +1 -1
  35. package/dist/types/react-components/RenderWalletState.d.ts +2 -4
  36. package/dist/types/react-components/RenderWalletState.d.ts.map +1 -1
  37. package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts +0 -2
  38. package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts.map +1 -1
  39. package/dist/types/react-components/contexts/observer/types.d.ts +0 -2
  40. package/dist/types/react-components/contexts/observer/types.d.ts.map +1 -1
  41. package/dist/types/react-components/hooks/useWalletLoadingState.d.ts +1 -0
  42. package/dist/types/react-components/hooks/useWalletLoadingState.d.ts.map +1 -1
  43. package/dist/types/react-components/hooks/useWalletObserver.d.ts.map +1 -1
  44. package/dist/types/tsconfig.build.tsbuildinfo +1 -1
  45. package/package.json +1 -1
  46. package/src/classes/WalletObserver.class.ts +15 -4
  47. package/src/react-components/RenderWalletHandles.tsx +2 -10
  48. package/src/react-components/RenderWalletPeerConnect.tsx +2 -5
  49. package/src/react-components/RenderWalletState.tsx +2 -4
  50. package/src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts +0 -5
  51. package/src/react-components/contexts/observer/types.ts +0 -2
  52. package/src/react-components/hooks/useWalletLoadingState.ts +14 -2
  53. package/src/react-components/hooks/useWalletObserver.ts +0 -2
  54. package/src/react-components/hooks/useWalletPeerConnect.tsx +2 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sundaeswap/wallet-lite",
3
- "version": "0.0.27",
3
+ "version": "0.0.29",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",
@@ -1,7 +1,9 @@
1
1
  import type { TransactionUnspentOutput } from "@cardano-sdk/core/dist/cjs/Serialization/index.js";
2
- import type {
3
- Cip30WalletApi,
4
- GetCollateral,
2
+ import {
3
+ APIErrorCode,
4
+ type ApiError,
5
+ type Cip30WalletApi,
6
+ type GetCollateral,
5
7
  } from "@cardano-sdk/dapp-connector";
6
8
  import { AssetAmount, type IAssetAmountMetadata } from "@sundaeswap/asset";
7
9
  import merge from "lodash/merge.js";
@@ -238,7 +240,8 @@ export class WalletObserver<
238
240
  const selectedWallet =
239
241
  activeWallet || (this._activeWallet as TSupportedWalletExtensions);
240
242
 
241
- while (!this.api) {
243
+ let shouldContinue = true;
244
+ while (!this.api && shouldContinue) {
242
245
  if (attempts === 10) {
243
246
  throw new Error(
244
247
  "Could not reconnect to the selected wallet. Please check your extension."
@@ -255,6 +258,14 @@ export class WalletObserver<
255
258
  this.api = api;
256
259
  this.network = await api.getNetworkId();
257
260
  } catch (e) {
261
+ if (
262
+ (e as Error)?.message === "user canceled connection" ||
263
+ (e as ApiError)?.code === APIErrorCode.Refused
264
+ ) {
265
+ shouldContinue = false;
266
+ return undefined;
267
+ }
268
+
258
269
  await new Promise((res) => setTimeout(res, 200));
259
270
  attempts++;
260
271
  }
@@ -1,21 +1,13 @@
1
1
  import { IAssetAmountMetadata } from "@sundaeswap/asset";
2
2
  import { FC, ReactNode } from "react";
3
3
 
4
- import { TAssetAmountMap } from "../@types/observer.js";
5
- import { THandleMetadata } from "./contexts/observer/index.js";
6
4
  import { useWalletHandles } from "./hooks/useWalletHandles.js";
7
5
  import { useWalletObserver } from "./hooks/useWalletObserver.js";
8
6
 
9
- export type IWalletHandles<
10
- AssetMetadata extends IAssetAmountMetadata = IAssetAmountMetadata
11
- > = {
12
- handles: TAssetAmountMap<THandleMetadata<AssetMetadata>>;
13
- loadingHandles: boolean;
14
- };
15
-
16
7
  export type TRenderWalletHandlesFunctionState<
17
8
  T extends IAssetAmountMetadata = IAssetAmountMetadata
18
- > = ReturnType<typeof useWalletObserver<T>> & IWalletHandles;
9
+ > = ReturnType<typeof useWalletObserver<T>> &
10
+ ReturnType<typeof useWalletHandles<T>>;
19
11
 
20
12
  export type TRenderWalletHandlesFunction = (
21
13
  state: TRenderWalletHandlesFunctionState
@@ -2,16 +2,13 @@ import { IAssetAmountMetadata } from "@sundaeswap/asset";
2
2
  import { FC, ReactNode } from "react";
3
3
  import { ErrorBoundary } from "react-error-boundary";
4
4
 
5
- import { TGetPeerConnectInstance } from "../@types/observer.js";
6
5
  import { useWalletObserver } from "./hooks/useWalletObserver.js";
7
6
  import { useWalletPeerConnect } from "./hooks/useWalletPeerConnect.js";
8
7
 
9
8
  export type TRenderWalletPeerConnectFunctionState<
10
9
  T extends IAssetAmountMetadata = IAssetAmountMetadata
11
- > = ReturnType<typeof useWalletObserver<T>> & {
12
- peerConnect?: ReturnType<TGetPeerConnectInstance>;
13
- QRCodeElement: ReactNode;
14
- };
10
+ > = ReturnType<typeof useWalletObserver<T>> &
11
+ ReturnType<typeof useWalletPeerConnect<T>>;
15
12
 
16
13
  export type TRenderWalletPeerConnectFunction = (
17
14
  state: TRenderWalletPeerConnectFunctionState
@@ -6,10 +6,8 @@ import { useWalletObserver } from "./hooks/useWalletObserver.js";
6
6
 
7
7
  export type TRenderWalletStateFunctionState<
8
8
  T extends IAssetAmountMetadata = IAssetAmountMetadata
9
- > = ReturnType<typeof useWalletObserver<T>> & {
10
- connectingWallet: boolean;
11
- syncingWallet: boolean;
12
- };
9
+ > = ReturnType<typeof useWalletObserver<T>> &
10
+ ReturnType<typeof useWalletLoadingState<T>>;
13
11
 
14
12
  export type TRenderWalletStateFunction = (
15
13
  state: TRenderWalletStateFunctionState
@@ -35,7 +35,6 @@ export const useWalletObserverState = (observer: WalletObserver) => {
35
35
  const [unusedAddresses, setUnusedAddresses] = useState<string[]>([]);
36
36
  const [utxos, setUtxos] = useState<TransactionUnspentOutput[]>();
37
37
  const [collateral, setCollateral] = useState<TransactionUnspentOutput[]>();
38
- const [ready, setReady] = useState(false);
39
38
  const [isCip45, setIsCip45] = useState(false);
40
39
  const [switching, setSwitching] = useState(false);
41
40
 
@@ -53,7 +52,6 @@ export const useWalletObserverState = (observer: WalletObserver) => {
53
52
  setNetwork(undefined);
54
53
  setUtxos(undefined);
55
54
  setCollateral(undefined);
56
- setReady(false);
57
55
  setIsCip45(false);
58
56
  }, [observer]);
59
57
 
@@ -125,7 +123,6 @@ export const useWalletObserverState = (observer: WalletObserver) => {
125
123
  return prevValue;
126
124
  });
127
125
 
128
- setReady(true);
129
126
  setIsCip45(newWallet.includes("p2p"));
130
127
  }, [observer, disconnect]);
131
128
 
@@ -170,7 +167,5 @@ export const useWalletObserverState = (observer: WalletObserver) => {
170
167
  connectWallet,
171
168
  switching,
172
169
  setSwitching,
173
- ready,
174
- setReady,
175
170
  };
176
171
  };
@@ -49,10 +49,8 @@ export interface IWalletObserverState<
49
49
  observerRef: MutableRefObject<WalletObserver<AssetMetadata>>;
50
50
  refreshInterval: number | false;
51
51
  state: {
52
- ready: boolean;
53
52
  isCip45: boolean;
54
53
  setIsCip45: Dispatch<SetStateAction<boolean>>;
55
- setReady: Dispatch<SetStateAction<boolean>>;
56
54
  activeWallet?: TSupportedWalletExtensions;
57
55
  setActiveWallet: Dispatch<
58
56
  SetStateAction<TSupportedWalletExtensions | undefined>
@@ -10,6 +10,7 @@ export const useWalletLoadingState = <
10
10
  const state = useWalletObserver<AssetMetadata>();
11
11
  const [connecting, setConnecting] = useState(false);
12
12
  const [syncing, setSyncing] = useState(false);
13
+ const [ready, setReady] = useState(false);
13
14
 
14
15
  useEffect(() => {
15
16
  if (!state.observer) {
@@ -21,6 +22,7 @@ export const useWalletLoadingState = <
21
22
  };
22
23
  const setConnectingEnd = () => {
23
24
  setConnecting(false);
25
+ setReady(true);
24
26
  };
25
27
  const setSyncingStart = () => {
26
28
  setSyncing(true);
@@ -28,6 +30,7 @@ export const useWalletLoadingState = <
28
30
  const setSyncingEnd = () => {
29
31
  setSyncing(false);
30
32
  };
33
+ const onDisconnect = () => setReady(false);
31
34
 
32
35
  state.observer.addEventListener(
33
36
  EWalletObserverEvents.CONNECT_WALLET_START,
@@ -45,6 +48,10 @@ export const useWalletLoadingState = <
45
48
  EWalletObserverEvents.SYNCING_WALLET_END,
46
49
  setSyncingEnd
47
50
  );
51
+ state.observer.addEventListener(
52
+ EWalletObserverEvents.DISCONNECT,
53
+ onDisconnect
54
+ );
48
55
 
49
56
  return () => {
50
57
  state.observer.removeEventListener(
@@ -63,15 +70,20 @@ export const useWalletLoadingState = <
63
70
  EWalletObserverEvents.SYNCING_WALLET_END,
64
71
  setSyncingEnd
65
72
  );
73
+ state.observer.removeEventListener(
74
+ EWalletObserverEvents.DISCONNECT,
75
+ onDisconnect
76
+ );
66
77
  };
67
- }, [state.observer, setConnecting, setSyncing]);
78
+ }, [state.observer, setConnecting, setSyncing, setReady]);
68
79
 
69
80
  const memoizedState = useMemo(
70
81
  () => ({
71
82
  connectingWallet: connecting,
72
83
  syncingWallet: syncing,
84
+ ready,
73
85
  }),
74
- []
86
+ [connecting, syncing, ready]
75
87
  );
76
88
 
77
89
  return memoizedState;
@@ -18,7 +18,6 @@ export const useWalletObserver = <
18
18
 
19
19
  const memoizedState = useMemo(() => {
20
20
  const result: TUseWalletObserverState<AssetMetadata> = {
21
- ready: Boolean(state.activeWallet && state.observer.api),
22
21
  isCip45: state.isCip45,
23
22
  activeWallet: state.activeWallet,
24
23
  adaBalance: state.adaBalance,
@@ -53,7 +52,6 @@ export const useWalletObserver = <
53
52
  state.usedAddresses,
54
53
  state.utxos,
55
54
  state.collateral,
56
- state.ready,
57
55
  state.isCip45,
58
56
  state.switching,
59
57
  ]);
@@ -1,6 +1,6 @@
1
1
  import { IAssetAmountMetadata } from "@sundaeswap/asset";
2
-
3
2
  import { MutableRefObject, useEffect, useMemo, useRef, useState } from "react";
3
+
4
4
  import { TGetPeerConnectInstance } from "../../@types/observer.js";
5
5
  import { useWalletObserver } from "./useWalletObserver.js";
6
6
 
@@ -22,7 +22,7 @@ export const useWalletPeerConnect = <
22
22
  .getCip45Instance()
23
23
  .then((res) => setPeerConnect(res))
24
24
  .catch((e) => setError((e as Error).message));
25
- }, [state.observer, state.ready, setPeerConnect, setError]);
25
+ }, [state.observer, setPeerConnect, setError]);
26
26
 
27
27
  useEffect(() => {
28
28
  if (peerConnect && qrCode.current) {