@sundaeswap/wallet-lite 0.0.16 → 0.0.18

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 (70) hide show
  1. package/dist/cjs/@types/observer.js.map +1 -1
  2. package/dist/cjs/classes/WalletAssetMap.class.js +74 -0
  3. package/dist/cjs/classes/WalletAssetMap.class.js.map +1 -0
  4. package/dist/cjs/classes/WalletBalanceMap.class.js +9 -11
  5. package/dist/cjs/classes/WalletBalanceMap.class.js.map +1 -1
  6. package/dist/cjs/classes/WalletObserver.class.js +78 -36
  7. package/dist/cjs/classes/WalletObserver.class.js.map +1 -1
  8. package/dist/cjs/index.js +24 -0
  9. package/dist/cjs/index.js.map +1 -1
  10. package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +32 -11
  11. package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
  12. package/dist/cjs/react-components/contexts/observer/types.js.map +1 -1
  13. package/dist/cjs/react-components/hooks/useWalletHandles.js +26 -21
  14. package/dist/cjs/react-components/hooks/useWalletHandles.js.map +1 -1
  15. package/dist/cjs/react-components/hooks/useWalletObserver.js +2 -1
  16. package/dist/cjs/react-components/hooks/useWalletObserver.js.map +1 -1
  17. package/dist/cjs/utils/assets.js +35 -0
  18. package/dist/cjs/utils/assets.js.map +1 -0
  19. package/dist/esm/@types/observer.js.map +1 -1
  20. package/dist/esm/classes/WalletAssetMap.class.js +38 -0
  21. package/dist/esm/classes/WalletAssetMap.class.js.map +1 -0
  22. package/dist/esm/classes/WalletBalanceMap.class.js +5 -4
  23. package/dist/esm/classes/WalletBalanceMap.class.js.map +1 -1
  24. package/dist/esm/classes/WalletObserver.class.js +31 -5
  25. package/dist/esm/classes/WalletObserver.class.js.map +1 -1
  26. package/dist/esm/index.js +2 -0
  27. package/dist/esm/index.js.map +1 -1
  28. package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +14 -1
  29. package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
  30. package/dist/esm/react-components/contexts/observer/types.js.map +1 -1
  31. package/dist/esm/react-components/hooks/useWalletHandles.js +11 -10
  32. package/dist/esm/react-components/hooks/useWalletHandles.js.map +1 -1
  33. package/dist/esm/react-components/hooks/useWalletObserver.js +2 -1
  34. package/dist/esm/react-components/hooks/useWalletObserver.js.map +1 -1
  35. package/dist/esm/utils/assets.js +28 -0
  36. package/dist/esm/utils/assets.js.map +1 -0
  37. package/dist/types/@types/observer.d.ts +5 -3
  38. package/dist/types/@types/observer.d.ts.map +1 -1
  39. package/dist/types/classes/WalletAssetMap.class.d.ts +29 -0
  40. package/dist/types/classes/WalletAssetMap.class.d.ts.map +1 -0
  41. package/dist/types/classes/WalletBalanceMap.class.d.ts +3 -2
  42. package/dist/types/classes/WalletBalanceMap.class.d.ts.map +1 -1
  43. package/dist/types/classes/WalletObserver.class.d.ts +6 -0
  44. package/dist/types/classes/WalletObserver.class.d.ts.map +1 -1
  45. package/dist/types/index.d.ts +2 -0
  46. package/dist/types/index.d.ts.map +1 -1
  47. package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts +2 -0
  48. package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts.map +1 -1
  49. package/dist/types/react-components/contexts/observer/types.d.ts +3 -1
  50. package/dist/types/react-components/contexts/observer/types.d.ts.map +1 -1
  51. package/dist/types/react-components/hooks/useWalletHandles.d.ts.map +1 -1
  52. package/dist/types/react-components/hooks/useWalletObserver.d.ts.map +1 -1
  53. package/dist/types/tsconfig.build.tsbuildinfo +1 -1
  54. package/dist/types/utils/assets.d.ts +15 -0
  55. package/dist/types/utils/assets.d.ts.map +1 -0
  56. package/package.json +1 -1
  57. package/src/@types/observer.ts +9 -3
  58. package/src/__data__/assets.ts +3 -2
  59. package/src/classes/WalletAssetMap.class.ts +40 -0
  60. package/src/classes/WalletBalanceMap.class.ts +5 -4
  61. package/src/classes/WalletObserver.class.ts +56 -11
  62. package/src/classes/__tests__/WalletBalanceMap.test.ts +2 -1
  63. package/src/classes/__tests__/WalletObserver.test.ts +10 -3
  64. package/src/index.ts +2 -0
  65. package/src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts +16 -1
  66. package/src/react-components/__tests__/__snapshots__/RenderWalletHandles.test.tsx.snap +2 -2
  67. package/src/react-components/contexts/observer/types.ts +5 -0
  68. package/src/react-components/hooks/useWalletHandles.ts +35 -29
  69. package/src/react-components/hooks/useWalletObserver.ts +2 -0
  70. package/src/utils/assets.ts +31 -0
@@ -3,6 +3,8 @@ import { useCallback, useEffect, useMemo, useState } from "react";
3
3
  import { IHandle } from "@koralabs/adahandle-sdk";
4
4
  import { IAssetAmountMetadata } from "@sundaeswap/asset";
5
5
  import { TAssetAmountMap } from "../../@types/observer.js";
6
+ import { WalletAssetMap } from "../../classes/WalletAssetMap.class.js";
7
+ import { normalizeAssetIdWithDot } from "../../utils/assets.js";
6
8
  import { THandleMetadata } from "../contexts/observer/types.js";
7
9
  import { useWalletObserver } from "./useWalletObserver.js";
8
10
 
@@ -13,7 +15,7 @@ export const useWalletHandles = <
13
15
  const [loadingHandles, setLoadingHandles] = useState(true);
14
16
  const [handles, setHandles] = useState<
15
17
  TAssetAmountMap<THandleMetadata<AssetMetadata>>
16
- >(new Map());
18
+ >(new WalletAssetMap());
17
19
  const memoizedHandleDep = useMemo(
18
20
  () => [...state.balance.getHandles().keys()],
19
21
  [state.balance]
@@ -24,10 +26,9 @@ export const useWalletHandles = <
24
26
  >(async () => {
25
27
  // Make a copy of our wallet map.
26
28
  const walletHandles: TAssetAmountMap<THandleMetadata<AssetMetadata>> =
27
- new Map([...state.balance.getHandles()]);
29
+ new WalletAssetMap([...state.balance.getHandles()]);
28
30
 
29
31
  if (walletHandles.size === 0) {
30
- setLoadingHandles(false);
31
32
  return walletHandles;
32
33
  }
33
34
 
@@ -53,30 +54,31 @@ export const useWalletHandles = <
53
54
  const walletHandleDataArray: IHandle[] = await sdk
54
55
  .provider()
55
56
  .getAllDataBatch(
56
- walletHandlesWithDataArray.map(([key]) => ({ value: key.slice(56) }))
57
+ walletHandlesWithDataArray.map(([key]) => ({
58
+ value: key.split(".")[1],
59
+ }))
57
60
  );
58
61
 
59
62
  walletHandlesWithDataArray.forEach(([key, asset]) => {
60
63
  const matchingData = walletHandleDataArray.find(
61
- ({ hex }) => hex === key.slice(56)
64
+ ({ hex }) => hex === key.split(".")[1]
62
65
  ) as IHandle;
63
66
 
64
67
  walletHandles.set(
65
- key,
68
+ normalizeAssetIdWithDot(key),
66
69
  asset
67
70
  .withMetadata({
68
71
  ...matchingData,
69
72
  ...asset.metadata,
73
+ assetId: normalizeAssetIdWithDot(asset.metadata.assetId),
70
74
  decimals: 0,
71
75
  })
72
76
  .withAmount(1n)
73
77
  );
74
78
  });
75
79
 
76
- setLoadingHandles(false);
77
80
  return walletHandles;
78
81
  } catch (e) {
79
- setLoadingHandles(false);
80
82
  console.log(e);
81
83
  return walletHandles;
82
84
  }
@@ -84,31 +86,33 @@ export const useWalletHandles = <
84
86
  }, [state.balance, setLoadingHandles]);
85
87
 
86
88
  useEffect(() => {
87
- syncHandles().then((newHandles) => {
88
- setHandles((prevHandles) => {
89
- let handleMetadataChanged = false;
90
-
91
- if (newHandles.size !== prevHandles?.size) {
92
- handleMetadataChanged = true;
93
- } else {
94
- for (const [key, val] of newHandles) {
95
- if (
96
- !prevHandles.has(key) ||
97
- prevHandles.get(key)?.amount !== val?.amount
98
- ) {
99
- handleMetadataChanged = true;
89
+ syncHandles()
90
+ .then((newHandles) => {
91
+ setHandles((prevHandles) => {
92
+ let handleMetadataChanged = false;
93
+
94
+ if (newHandles.size !== prevHandles?.size) {
95
+ handleMetadataChanged = true;
96
+ } else {
97
+ for (const [key, val] of newHandles) {
98
+ if (
99
+ !prevHandles.has(key) ||
100
+ prevHandles.get(key)?.amount !== val?.amount
101
+ ) {
102
+ handleMetadataChanged = true;
103
+ }
100
104
  }
101
105
  }
102
- }
103
106
 
104
- if (!handleMetadataChanged) {
105
- return prevHandles;
106
- }
107
+ if (!handleMetadataChanged) {
108
+ return prevHandles;
109
+ }
107
110
 
108
- return newHandles;
109
- });
110
- });
111
- }, [memoizedHandleDep, syncHandles, setHandles]);
111
+ return newHandles;
112
+ });
113
+ })
114
+ .then(() => setLoadingHandles((prevValue) => !prevValue));
115
+ }, [memoizedHandleDep, syncHandles, setHandles, setLoadingHandles]);
112
116
 
113
117
  const data = useMemo(
114
118
  () => ({
@@ -118,5 +122,7 @@ export const useWalletHandles = <
118
122
  [handles, loadingHandles]
119
123
  );
120
124
 
125
+ console.log(handles, loadingHandles);
126
+
121
127
  return data;
122
128
  };
@@ -27,6 +27,7 @@ export const useWalletObserver = <
27
27
  stakeAddress: state.stakeAddress,
28
28
  network: state.network,
29
29
  utxos: state.utxos,
30
+ collateral: state.collateral,
30
31
  observer: state.observer,
31
32
  syncWallet: state.syncWallet,
32
33
  unusedAddresses: state.unusedAddresses,
@@ -46,6 +47,7 @@ export const useWalletObserver = <
46
47
  state.unusedAddresses,
47
48
  state.usedAddresses,
48
49
  state.utxos,
50
+ state.collateral,
49
51
  state.ready,
50
52
  state.isCip45,
51
53
  ]);
@@ -0,0 +1,31 @@
1
+ import { WalletObserver } from "../classes/WalletObserver.class.js";
2
+
3
+ /**
4
+ * Helper function to normalize asset ID notation.
5
+ *
6
+ * @param {string} assetId The asset ID as a HEX string (either with dot or without).
7
+ * @returns {string}
8
+ */
9
+ export const normalizeAssetIdWithDot = (assetId: string): string => {
10
+ if (assetId.includes(".") || assetId === WalletObserver.ADA_ASSET_ID) {
11
+ return assetId;
12
+ }
13
+
14
+ const policyId = assetId.slice(0, 56);
15
+ const assetName = assetId.slice(56);
16
+
17
+ if (assetName) {
18
+ return `${policyId}.${assetName}`;
19
+ }
20
+
21
+ return policyId;
22
+ };
23
+
24
+ /**
25
+ * Helper function to internally check if an asset is ADA.
26
+ *
27
+ * @param {string} id The asset id.
28
+ * @returns {boolean}
29
+ */
30
+ export const isAdaAsset = (id: string): boolean =>
31
+ id === WalletObserver.ADA_ASSET_ID;