@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.
- package/dist/cjs/@types/observer.js.map +1 -1
- package/dist/cjs/classes/WalletAssetMap.class.js +74 -0
- package/dist/cjs/classes/WalletAssetMap.class.js.map +1 -0
- package/dist/cjs/classes/WalletBalanceMap.class.js +9 -11
- package/dist/cjs/classes/WalletBalanceMap.class.js.map +1 -1
- package/dist/cjs/classes/WalletObserver.class.js +78 -36
- package/dist/cjs/classes/WalletObserver.class.js.map +1 -1
- package/dist/cjs/index.js +24 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +32 -11
- package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
- package/dist/cjs/react-components/contexts/observer/types.js.map +1 -1
- package/dist/cjs/react-components/hooks/useWalletHandles.js +26 -21
- package/dist/cjs/react-components/hooks/useWalletHandles.js.map +1 -1
- package/dist/cjs/react-components/hooks/useWalletObserver.js +2 -1
- package/dist/cjs/react-components/hooks/useWalletObserver.js.map +1 -1
- package/dist/cjs/utils/assets.js +35 -0
- package/dist/cjs/utils/assets.js.map +1 -0
- package/dist/esm/@types/observer.js.map +1 -1
- package/dist/esm/classes/WalletAssetMap.class.js +38 -0
- package/dist/esm/classes/WalletAssetMap.class.js.map +1 -0
- package/dist/esm/classes/WalletBalanceMap.class.js +5 -4
- package/dist/esm/classes/WalletBalanceMap.class.js.map +1 -1
- package/dist/esm/classes/WalletObserver.class.js +31 -5
- package/dist/esm/classes/WalletObserver.class.js.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +14 -1
- package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js.map +1 -1
- package/dist/esm/react-components/contexts/observer/types.js.map +1 -1
- package/dist/esm/react-components/hooks/useWalletHandles.js +11 -10
- package/dist/esm/react-components/hooks/useWalletHandles.js.map +1 -1
- package/dist/esm/react-components/hooks/useWalletObserver.js +2 -1
- package/dist/esm/react-components/hooks/useWalletObserver.js.map +1 -1
- package/dist/esm/utils/assets.js +28 -0
- package/dist/esm/utils/assets.js.map +1 -0
- package/dist/types/@types/observer.d.ts +5 -3
- package/dist/types/@types/observer.d.ts.map +1 -1
- package/dist/types/classes/WalletAssetMap.class.d.ts +29 -0
- package/dist/types/classes/WalletAssetMap.class.d.ts.map +1 -0
- package/dist/types/classes/WalletBalanceMap.class.d.ts +3 -2
- package/dist/types/classes/WalletBalanceMap.class.d.ts.map +1 -1
- package/dist/types/classes/WalletObserver.class.d.ts +6 -0
- package/dist/types/classes/WalletObserver.class.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts +2 -0
- package/dist/types/react-components/WalletObserverProvider/hooks/useWalletObserverState.d.ts.map +1 -1
- package/dist/types/react-components/contexts/observer/types.d.ts +3 -1
- package/dist/types/react-components/contexts/observer/types.d.ts.map +1 -1
- package/dist/types/react-components/hooks/useWalletHandles.d.ts.map +1 -1
- package/dist/types/react-components/hooks/useWalletObserver.d.ts.map +1 -1
- package/dist/types/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/utils/assets.d.ts +15 -0
- package/dist/types/utils/assets.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/@types/observer.ts +9 -3
- package/src/__data__/assets.ts +3 -2
- package/src/classes/WalletAssetMap.class.ts +40 -0
- package/src/classes/WalletBalanceMap.class.ts +5 -4
- package/src/classes/WalletObserver.class.ts +56 -11
- package/src/classes/__tests__/WalletBalanceMap.test.ts +2 -1
- package/src/classes/__tests__/WalletObserver.test.ts +10 -3
- package/src/index.ts +2 -0
- package/src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts +16 -1
- package/src/react-components/__tests__/__snapshots__/RenderWalletHandles.test.tsx.snap +2 -2
- package/src/react-components/contexts/observer/types.ts +5 -0
- package/src/react-components/hooks/useWalletHandles.ts +35 -29
- package/src/react-components/hooks/useWalletObserver.ts +2 -0
- 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
|
|
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
|
|
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]) => ({
|
|
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.
|
|
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()
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
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
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
+
if (!handleMetadataChanged) {
|
|
108
|
+
return prevHandles;
|
|
109
|
+
}
|
|
107
110
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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;
|