@sundaeswap/wallet-lite 0.0.94 → 0.0.96
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/WalletObserver.class.js +227 -177
- package/dist/cjs/classes/WalletObserver.class.js.map +1 -1
- package/dist/cjs/react-components/WalletObserverProvider/WalletObserverProvider.js +2 -1
- package/dist/cjs/react-components/WalletObserverProvider/WalletObserverProvider.js.map +1 -1
- package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useDerivedState.js +6 -5
- package/dist/cjs/react-components/WalletObserverProvider/hooks/effects/useDerivedState.js.map +1 -1
- package/dist/cjs/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +30 -17
- 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/useWalletObserver.js +2 -1
- package/dist/cjs/react-components/hooks/useWalletObserver.js.map +1 -1
- package/dist/esm/@types/observer.js.map +1 -1
- package/dist/esm/classes/WalletObserver.class.js +30 -3
- package/dist/esm/classes/WalletObserver.class.js.map +1 -1
- package/dist/esm/react-components/WalletObserverProvider/WalletObserverProvider.js +2 -1
- package/dist/esm/react-components/WalletObserverProvider/WalletObserverProvider.js.map +1 -1
- package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useDerivedState.js +6 -5
- package/dist/esm/react-components/WalletObserverProvider/hooks/effects/useDerivedState.js.map +1 -1
- package/dist/esm/react-components/WalletObserverProvider/hooks/useWalletObserverState.js +8 -0
- 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/useWalletObserver.js +2 -1
- package/dist/esm/react-components/hooks/useWalletObserver.js.map +1 -1
- package/dist/types/@types/observer.d.ts +4 -0
- package/dist/types/@types/observer.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/react-components/WalletObserverProvider/WalletObserverProvider.d.ts.map +1 -1
- package/dist/types/react-components/WalletObserverProvider/hooks/effects/useDerivedState.d.ts +1 -1
- package/dist/types/react-components/WalletObserverProvider/hooks/effects/useDerivedState.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 +1 -1
- package/dist/types/react-components/contexts/observer/types.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/package.json +2 -1
- package/src/@types/observer.ts +4 -0
- package/src/classes/WalletObserver.class.ts +40 -1
- package/src/react-components/WalletObserverProvider/WalletObserverProvider.tsx +1 -0
- package/src/react-components/WalletObserverProvider/hooks/effects/useDerivedState.ts +8 -15
- package/src/react-components/WalletObserverProvider/hooks/useWalletObserverState.ts +11 -0
- package/src/react-components/contexts/observer/types.ts +1 -0
- package/src/react-components/hooks/useWalletObserver.ts +2 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sundaeswap/wallet-lite",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.96",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
@@ -66,6 +66,7 @@
|
|
|
66
66
|
"@testing-library/react-hooks": "^8.0.1",
|
|
67
67
|
"@testing-library/user-event": "^14.5.2",
|
|
68
68
|
"@types/libsodium-wrappers-sumo": "^0.7.8",
|
|
69
|
+
"@tanstack/react-query": "^5.51.11",
|
|
69
70
|
"@types/lodash": "^4.17.4",
|
|
70
71
|
"@types/node": "^20.14.2",
|
|
71
72
|
"@types/node-fetch": "^2.6.11",
|
package/src/@types/observer.ts
CHANGED
|
@@ -18,6 +18,9 @@ export interface IWindowCip30Extension {
|
|
|
18
18
|
icon: string;
|
|
19
19
|
isEnabled: () => Promise<boolean>;
|
|
20
20
|
name: string;
|
|
21
|
+
experimental?: {
|
|
22
|
+
feeAddress?: string;
|
|
23
|
+
};
|
|
21
24
|
}
|
|
22
25
|
|
|
23
26
|
/**
|
|
@@ -102,4 +105,5 @@ export interface IWalletObserverSync<
|
|
|
102
105
|
collateral?: Error | TransactionUnspentOutput[];
|
|
103
106
|
network: Error | number;
|
|
104
107
|
feeAddress?: Error | string;
|
|
108
|
+
changeAddress?: Error | string;
|
|
105
109
|
}
|
|
@@ -150,6 +150,7 @@ export class WalletObserver<
|
|
|
150
150
|
newOutputs,
|
|
151
151
|
newCollateral,
|
|
152
152
|
newFeeAddress,
|
|
153
|
+
newChangeAddress,
|
|
153
154
|
] = await Promise.all([
|
|
154
155
|
this.getNetwork(),
|
|
155
156
|
this.getUsedAddresses(),
|
|
@@ -157,6 +158,7 @@ export class WalletObserver<
|
|
|
157
158
|
this.getUtxos(),
|
|
158
159
|
this.getCollateral(),
|
|
159
160
|
this.getFeeAddress(),
|
|
161
|
+
this.getChangeAddress(),
|
|
160
162
|
]);
|
|
161
163
|
|
|
162
164
|
const result: IWalletObserverSync<AssetMetadata> = {
|
|
@@ -167,6 +169,7 @@ export class WalletObserver<
|
|
|
167
169
|
collateral: newCollateral,
|
|
168
170
|
network: newNetwork,
|
|
169
171
|
feeAddress: newFeeAddress,
|
|
172
|
+
changeAddress: newChangeAddress,
|
|
170
173
|
};
|
|
171
174
|
|
|
172
175
|
const end = performance.now();
|
|
@@ -414,6 +417,41 @@ export class WalletObserver<
|
|
|
414
417
|
this.dispatch(EWalletObserverEvents.DISCONNECT);
|
|
415
418
|
};
|
|
416
419
|
|
|
420
|
+
/**
|
|
421
|
+
* Gets a the change address.
|
|
422
|
+
*
|
|
423
|
+
* @returns {Promise<string | Error>} The change address, or an error.
|
|
424
|
+
*/
|
|
425
|
+
getChangeAddress = async (): Promise<string | Error> => {
|
|
426
|
+
if (!this.api) {
|
|
427
|
+
throw new Error(
|
|
428
|
+
"Attempted to query change address without an API instance.",
|
|
429
|
+
);
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
const start = performance.now();
|
|
433
|
+
|
|
434
|
+
const [{ Cardano }, typedHex] = await Promise.all([
|
|
435
|
+
getCardanoCore(),
|
|
436
|
+
getCardanoUtil(),
|
|
437
|
+
]);
|
|
438
|
+
|
|
439
|
+
let cbor: string;
|
|
440
|
+
try {
|
|
441
|
+
cbor = await this.api.getChangeAddress();
|
|
442
|
+
} catch (e) {
|
|
443
|
+
return e as Error;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
const data = Cardano.Address.fromBytes(typedHex(cbor)).toBech32();
|
|
447
|
+
|
|
448
|
+
const end = performance.now();
|
|
449
|
+
if (this._options.debug) {
|
|
450
|
+
console.log(`getChangeAddress: ${end - start}ms`);
|
|
451
|
+
}
|
|
452
|
+
return data;
|
|
453
|
+
};
|
|
454
|
+
|
|
417
455
|
/**
|
|
418
456
|
* Retrieves the balance of the wallet, including metadata for each asset.
|
|
419
457
|
*
|
|
@@ -635,7 +673,8 @@ export class WalletObserver<
|
|
|
635
673
|
|
|
636
674
|
const start = performance.now();
|
|
637
675
|
try {
|
|
638
|
-
const address =
|
|
676
|
+
const address =
|
|
677
|
+
window.cardano?.[this.activeWallet!]?.experimental?.feeAddress;
|
|
639
678
|
const end = performance.now();
|
|
640
679
|
|
|
641
680
|
if (this._options.debug) {
|
|
@@ -7,32 +7,30 @@ export const useDerivedState = (
|
|
|
7
7
|
observer: WalletObserver,
|
|
8
8
|
state: Pick<
|
|
9
9
|
ReturnType<typeof useWalletObserverState>,
|
|
10
|
-
"usedAddresses" | "unusedAddresses"
|
|
10
|
+
"usedAddresses" | "unusedAddresses" | "changeAddress"
|
|
11
11
|
>,
|
|
12
12
|
) => {
|
|
13
13
|
const [stakeAddress, setStakeAddress] = useState<string>();
|
|
14
|
+
const address =
|
|
15
|
+
state.changeAddress || state.usedAddresses[0] || state.unusedAddresses[0];
|
|
14
16
|
|
|
15
17
|
useEffect(() => {
|
|
16
|
-
if (!
|
|
18
|
+
if (!address) {
|
|
17
19
|
return;
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
observer.getUtils().then((utils) => {
|
|
21
|
-
setStakeAddress(
|
|
22
|
-
utils.getBech32StakingAddress(
|
|
23
|
-
state.usedAddresses[0] || state.unusedAddresses[0],
|
|
24
|
-
),
|
|
25
|
-
);
|
|
23
|
+
setStakeAddress(utils.getBech32StakingAddress(address));
|
|
26
24
|
});
|
|
27
|
-
}, [
|
|
25
|
+
}, [address]);
|
|
28
26
|
|
|
29
27
|
const memoizedDerivedState = useMemo(() => {
|
|
30
|
-
let mainAddress = state.usedAddresses[0] || state.unusedAddresses[0];
|
|
31
28
|
const persistentCache = window.localStorage.getItem(
|
|
32
29
|
WalletObserver.PERSISTENCE_CACHE_KEY,
|
|
33
30
|
);
|
|
34
31
|
const usePersistence = observer.getOptions().persistence;
|
|
35
32
|
|
|
33
|
+
let mainAddress = address;
|
|
36
34
|
if (usePersistence && persistentCache && !mainAddress) {
|
|
37
35
|
const cache = JSON.parse(persistentCache) as IWalletObserverSeed;
|
|
38
36
|
mainAddress = cache.mainAddress;
|
|
@@ -42,12 +40,7 @@ export const useDerivedState = (
|
|
|
42
40
|
stakeAddress,
|
|
43
41
|
mainAddress,
|
|
44
42
|
};
|
|
45
|
-
}, [
|
|
46
|
-
observer,
|
|
47
|
-
state.usedAddresses[0],
|
|
48
|
-
state.unusedAddresses[0],
|
|
49
|
-
stakeAddress,
|
|
50
|
-
]);
|
|
43
|
+
}, [observer, address, stakeAddress]);
|
|
51
44
|
|
|
52
45
|
return memoizedDerivedState;
|
|
53
46
|
};
|
|
@@ -31,6 +31,7 @@ export const useWalletObserverState = <
|
|
|
31
31
|
const [network, setNetwork] = useState<number | undefined>();
|
|
32
32
|
const [usedAddresses, setUsedAddresses] = useState<string[]>([]);
|
|
33
33
|
const [unusedAddresses, setUnusedAddresses] = useState<string[]>([]);
|
|
34
|
+
const [changeAddress, setChangeAddress] = useState<string | undefined>();
|
|
34
35
|
const [feeAddress, setFeeAddress] = useState<string | undefined>();
|
|
35
36
|
const [utxos, setUtxos] = useState<TransactionUnspentOutput[]>();
|
|
36
37
|
const [collateral, setCollateral] = useState<TransactionUnspentOutput[]>();
|
|
@@ -54,6 +55,7 @@ export const useWalletObserverState = <
|
|
|
54
55
|
setBalance(new WalletBalanceMap(observer));
|
|
55
56
|
setUsedAddresses([]);
|
|
56
57
|
setUnusedAddresses([]);
|
|
58
|
+
setChangeAddress(undefined);
|
|
57
59
|
setActiveWallet(undefined);
|
|
58
60
|
setNetwork(undefined);
|
|
59
61
|
setUtxos(undefined);
|
|
@@ -176,6 +178,13 @@ export const useWalletObserverState = <
|
|
|
176
178
|
prevValue === newFeeAddress ? prevValue : newFeeAddress,
|
|
177
179
|
);
|
|
178
180
|
}
|
|
181
|
+
|
|
182
|
+
const newChangeAddress = freshData.changeAddress;
|
|
183
|
+
if (!(newChangeAddress instanceof Error)) {
|
|
184
|
+
setChangeAddress((prevValue) =>
|
|
185
|
+
prevValue === newChangeAddress ? prevValue : newChangeAddress,
|
|
186
|
+
);
|
|
187
|
+
}
|
|
179
188
|
});
|
|
180
189
|
} catch (e) {
|
|
181
190
|
setErrorSyncing(true);
|
|
@@ -212,6 +221,7 @@ export const useWalletObserverState = <
|
|
|
212
221
|
isPending,
|
|
213
222
|
isReadOnlyMode,
|
|
214
223
|
network,
|
|
224
|
+
changeAddress,
|
|
215
225
|
setActiveWallet,
|
|
216
226
|
setAdaBalance,
|
|
217
227
|
setBalance,
|
|
@@ -224,6 +234,7 @@ export const useWalletObserverState = <
|
|
|
224
234
|
setUnusedAddresses,
|
|
225
235
|
setUsedAddresses,
|
|
226
236
|
setUtxos,
|
|
237
|
+
setChangeAddress,
|
|
227
238
|
switching,
|
|
228
239
|
syncWallet,
|
|
229
240
|
unusedAddresses,
|
|
@@ -36,6 +36,7 @@ export const useWalletObserver = <
|
|
|
36
36
|
isPending: state.isPending,
|
|
37
37
|
isReadOnlyMode: state.isReadOnlyMode,
|
|
38
38
|
mainAddress: state.mainAddress,
|
|
39
|
+
changeAddress: state.changeAddress,
|
|
39
40
|
network: state.network,
|
|
40
41
|
observer: state.observer,
|
|
41
42
|
stakeAddress: state.stakeAddress,
|
|
@@ -47,6 +48,7 @@ export const useWalletObserver = <
|
|
|
47
48
|
willAutoConnect: state.willAutoConnect,
|
|
48
49
|
}),
|
|
49
50
|
[
|
|
51
|
+
state.changeAddress,
|
|
50
52
|
state.activeWallet,
|
|
51
53
|
state.adaBalance.amount,
|
|
52
54
|
state.balance.size,
|