@sundaeswap/wallet-lite 0.0.95 → 0.0.97
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/WalletBalanceMap.class.js +1 -1
- package/dist/cjs/classes/WalletBalanceMap.class.js.map +1 -1
- package/dist/cjs/classes/WalletObserver.class.js +2 -2
- package/dist/cjs/classes/WalletObserver.class.js.map +1 -1
- package/dist/cjs/classes/WalletObserverUtils.class.js +2 -1
- package/dist/cjs/classes/WalletObserverUtils.class.js.map +1 -1
- package/dist/cjs/react-components/hooks/useWalletHandles.js +7 -2
- package/dist/cjs/react-components/hooks/useWalletHandles.js.map +1 -1
- package/dist/esm/@types/observer.js.map +1 -1
- package/dist/esm/classes/WalletBalanceMap.class.js +1 -1
- package/dist/esm/classes/WalletBalanceMap.class.js.map +1 -1
- package/dist/esm/classes/WalletObserver.class.js +1 -1
- package/dist/esm/classes/WalletObserver.class.js.map +1 -1
- package/dist/esm/classes/WalletObserverUtils.class.js +2 -1
- package/dist/esm/classes/WalletObserverUtils.class.js.map +1 -1
- package/dist/esm/react-components/hooks/useWalletHandles.js +2 -1
- package/dist/esm/react-components/hooks/useWalletHandles.js.map +1 -1
- package/dist/types/@types/observer.d.ts +3 -0
- package/dist/types/@types/observer.d.ts.map +1 -1
- package/dist/types/classes/WalletObserver.class.d.ts.map +1 -1
- package/dist/types/classes/WalletObserverUtils.class.d.ts.map +1 -1
- package/dist/types/react-components/hooks/useWalletHandles.d.ts.map +1 -1
- package/dist/types/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -1
- package/src/@types/observer.ts +3 -0
- package/src/__data__/assets.ts +16 -106
- package/src/__data__/eternl.ts +5 -5
- package/src/classes/WalletBalanceMap.class.ts +1 -1
- package/src/classes/WalletObserver.class.ts +2 -1
- package/src/classes/WalletObserverUtils.class.ts +3 -1
- package/src/classes/__tests__/WalletBalanceMap.test.ts +31 -19
- package/src/classes/__tests__/WalletObserver.test.ts +47 -35
- package/src/classes/__tests__/WalletObserverUtils.test.ts +12 -50
- package/src/react-components/__tests__/hooks/useAvailableExtensions.test.tsx +1 -1
- package/src/react-components/__tests__/hooks/useWalletObserver.test.tsx +20 -9
- package/src/react-components/hooks/useWalletHandles.ts +6 -1
- package/src/react-components/__tests__/RenderWalletHandles.test.tsx +0 -77
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sundaeswap/wallet-lite",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.97",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
@@ -61,6 +61,7 @@
|
|
|
61
61
|
"@babel/preset-typescript": "^7.24.7",
|
|
62
62
|
"@happy-dom/global-registrator": "^16.5.3",
|
|
63
63
|
"@sundaeswap/babel-preset": "^2.0.15",
|
|
64
|
+
"@tanstack/react-query": "^5.51.11",
|
|
64
65
|
"@testing-library/dom": "^10.1.0",
|
|
65
66
|
"@testing-library/react": "^16.0.0",
|
|
66
67
|
"@testing-library/react-hooks": "^8.0.1",
|
package/src/@types/observer.ts
CHANGED
package/src/__data__/assets.ts
CHANGED
|
@@ -1,113 +1,23 @@
|
|
|
1
|
+
import { Serialization } from "@cardano-sdk/core";
|
|
2
|
+
import { HexBlob } from "@cardano-sdk/util";
|
|
1
3
|
import { AssetAmount } from "@sundaeswap/asset";
|
|
2
4
|
import { normalizeAssetIdWithDot } from "../utils/assets";
|
|
5
|
+
import { mockBalance } from "./eternl";
|
|
3
6
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
"063bbb14b22e39aedf7beba84d7ce9ea771a6f19d9ad02f70d6f3eaa446973636f536f6c6172697345787472617330313431",
|
|
8
|
-
"063bbb14b22e39aedf7beba84d7ce9ea771a6f19d9ad02f70d6f3eaa446973636f536f6c6172697345787472617339303038",
|
|
9
|
-
"0cf7296fe09e9225d8cc0a444ee60e8d4f09c1c5f3dbc8aaee1ebc705448554e54",
|
|
10
|
-
"1088b361c41f49906645cedeeb7a9ef0e0b793b1a2d24f623ea748764861766f63576f726c647336393339",
|
|
11
|
-
"2b7e1c65b836affa518d0a63067e52962c37e0485cf28edcd970bff676424f4f4b",
|
|
12
|
-
"2d3b299285e911a6dddb915d03d47970a45cb0a08aa8a138dba39c6f4b4a4232393932",
|
|
13
|
-
"3059f54ae7c2d56237bd921a864eb090d7d0c98b2775f9784f854fdd72434f5049",
|
|
14
|
-
"3e9499856b0421b4424c8fc3a75c4e05aadab5e05f1337304efb6c1f53505f6b55325a4164",
|
|
15
|
-
"41142faeb5e3c644625966715c0a844bb4d6aeef2bcdbf535b14e5a57448414e444c45",
|
|
16
|
-
"46e607b3046a34c95e7c29e47047618dbf5e10de777ba56c590cfd5c4e45574d5f31",
|
|
17
|
-
"477cec772adb1466b301fb8161f505aa66ed1ee8d69d3e7984256a43477574656e62657267204269626c65202336393232",
|
|
18
|
-
"477cec772adb1466b301fb8161f505aa66ed1ee8d69d3e7984256a43477574656e62657267204269626c65202337393130",
|
|
19
|
-
"477cec772adb1466b301fb8161f505aa66ed1ee8d69d3e7984256a43477574656e62657267204269626c65202339313538",
|
|
20
|
-
"51a5e236c4de3af2b8020442e2a26f454fda3b04cb621c1294a0ef34424f4f4b",
|
|
21
|
-
"5c1abfb2c2b2a4ce2fa731cdb2f793fcd4ab2c2c05b8ee39b142a4a64d694c4b3630",
|
|
22
|
-
"6a10a650be925743cb0e5592442326dd1094e107b1b0402c13160ebd446973636f696e45617272696e673335",
|
|
23
|
-
"76dbbc78587bf972c710f22a0807a6905a8a5e713418515fc9abeed1646973636f736f6c617269733038393233",
|
|
24
|
-
"7f9a722eac5d460444e4df7e65144785e7f16de8579c00663232879c4e49444f57415645303831",
|
|
25
|
-
"8d7526784ef72fe0ccdd085976ada0da88e7fb013e38e794b09233414245415244",
|
|
26
|
-
"9293316c91ff5143e3bc60d78d44dfb87edff59d61b99cf4c938d9084142544e",
|
|
27
|
-
"92a7b9d9d8e6111ca2105409e0f0efea9661d2a0bd44e322253420b453505f354956317337",
|
|
28
|
-
"9460f3352773623741fcf6fd471668998021c3ebb805413c80e9b43941424f4f4b",
|
|
29
|
-
"960d6f6cb6d3f8d9746bff157000ca71ed1c8cc419fff09796ee9e8a4d694c4b44726f707a20315f3236",
|
|
30
|
-
"a0028f350aaabe0545fdcb56b039bfb08e4bb4d8c4d7c3c7d481c235484f534b59",
|
|
31
|
-
"a706fc87764cde4ac018c38bf61630c1065932db49e6f495be3b29f8436f636f4c6f636f477265656e50616c6d53314e465431363537",
|
|
32
|
-
"ad14d754d349ac1a6cbd3e08d404e67bc5b3ab265884736a5bf07eb05448554e54",
|
|
33
|
-
"ae1b29e34cb98ca4e02011a2b2c465261ae9805a1e256c41647a952072424f4f4b",
|
|
34
|
-
"b6a7467ea1deb012808ef4e87b5ff371e85f7142d7b356a40d9b42a0436f726e75636f70696173205b76696120436861696e506f72742e696f5d",
|
|
35
|
-
"bf5aebb0481d3b0031eac8b495808235f7d5f252421504e64f3729dd4d494e544b4559",
|
|
36
|
-
"c117f33edeee4b531dfdb85ead5753433c9dbd875629bc971013ffac42656174426f792023343136",
|
|
37
|
-
"c117f33edeee4b531dfdb85ead5753433c9dbd875629bc971013ffac42656174426f79202331383334",
|
|
38
|
-
"c117f33edeee4b531dfdb85ead5753433c9dbd875629bc971013ffac42656174426f79202332363237",
|
|
39
|
-
"c117f33edeee4b531dfdb85ead5753433c9dbd875629bc971013ffac42656174426f79202336343934",
|
|
40
|
-
"c281975562f394761771f13f599881517fa8455946e7e30454de22da474f415454726962653034313736",
|
|
41
|
-
"d0112837f8f856b2ca14f69b375bc394e73d146fdadcc993bb993779446973636f536f6c6172697331313738",
|
|
42
|
-
"d0112837f8f856b2ca14f69b375bc394e73d146fdadcc993bb993779446973636f536f6c6172697331343434",
|
|
43
|
-
"d0112837f8f856b2ca14f69b375bc394e73d146fdadcc993bb993779446973636f536f6c6172697331363037",
|
|
44
|
-
"d0112837f8f856b2ca14f69b375bc394e73d146fdadcc993bb993779446973636f536f6c6172697331373030",
|
|
45
|
-
"d0112837f8f856b2ca14f69b375bc394e73d146fdadcc993bb993779446973636f536f6c6172697331383538",
|
|
46
|
-
"d0112837f8f856b2ca14f69b375bc394e73d146fdadcc993bb993779446973636f536f6c6172697332333938",
|
|
47
|
-
"d0112837f8f856b2ca14f69b375bc394e73d146fdadcc993bb993779446973636f536f6c6172697332343734",
|
|
48
|
-
"d0112837f8f856b2ca14f69b375bc394e73d146fdadcc993bb993779446973636f536f6c6172697332353239",
|
|
49
|
-
"d0112837f8f856b2ca14f69b375bc394e73d146fdadcc993bb993779446973636f536f6c6172697332353837",
|
|
50
|
-
"d0112837f8f856b2ca14f69b375bc394e73d146fdadcc993bb993779446973636f536f6c6172697332393635",
|
|
51
|
-
"d0112837f8f856b2ca14f69b375bc394e73d146fdadcc993bb993779446973636f536f6c6172697333303938",
|
|
52
|
-
"d0112837f8f856b2ca14f69b375bc394e73d146fdadcc993bb993779446973636f536f6c6172697333323235",
|
|
53
|
-
"d0112837f8f856b2ca14f69b375bc394e73d146fdadcc993bb993779446973636f536f6c6172697334303031",
|
|
54
|
-
"d0112837f8f856b2ca14f69b375bc394e73d146fdadcc993bb993779446973636f536f6c6172697334323638",
|
|
55
|
-
"d0112837f8f856b2ca14f69b375bc394e73d146fdadcc993bb993779446973636f536f6c6172697334343533",
|
|
56
|
-
"d1218edd90bd8446051a22d043b4cc7369ad48be46299528f8b22c487241584f",
|
|
57
|
-
"d55bf9d2ad12cc55e4ed29d97c64dba0e4905d3c80f800449f3d51f04368616e6765",
|
|
58
|
-
"df6268fb872b81a349469825c23bd4d0f5fb4b35bcba547493b35fd6446f78786f536f6c6172697330313431",
|
|
59
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe36976",
|
|
60
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe3666171",
|
|
61
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe3666472",
|
|
62
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe368756773",
|
|
63
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe36d696e69",
|
|
64
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe372656b74",
|
|
65
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe377656233",
|
|
66
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe36269703339",
|
|
67
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe3636f2d6f70",
|
|
68
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe3656964616e",
|
|
69
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe36761746573",
|
|
70
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe374616e7961",
|
|
71
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe3647275646765",
|
|
72
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe366696e6c6579",
|
|
73
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe36b6f65706b65",
|
|
74
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe36d616b657273",
|
|
75
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe36d6f6465726e",
|
|
76
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe373796e746178",
|
|
77
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe37a656b696168",
|
|
78
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe3636176656d616e",
|
|
79
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe364697372757074",
|
|
80
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe3656e6372797074",
|
|
81
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe368757362616e64",
|
|
82
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe36d696e696d616c",
|
|
83
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe370726f66696c65",
|
|
84
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe370757273756974",
|
|
85
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe3736176696e6773",
|
|
86
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe3616c64657262696e",
|
|
87
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe362726577636c7562",
|
|
88
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe36f726967696e616c",
|
|
89
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe3706c61793277696e",
|
|
90
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe37072656d69657265",
|
|
91
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe3646179747261646572",
|
|
92
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe363687269737469616e6e",
|
|
93
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe3706f7274666f6c696f31",
|
|
94
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe3706f7274666f6c696f32",
|
|
95
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe3706f7274666f6c696f33",
|
|
96
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe373756666696369656e74",
|
|
97
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe373757270726973656d65",
|
|
98
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe36f70706f7274756e697374",
|
|
99
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe3736f6c6f7072656e657572",
|
|
100
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe3737572766976616c697374",
|
|
101
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe374686562726577636c7562",
|
|
102
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe36472756467657265706f7274",
|
|
103
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe368617070796e657779656172",
|
|
104
|
-
"f55ac9646c45e899603a5617d398570705fd7b93278a6e4879136f954d6f6f6e6c69676874313834",
|
|
105
|
-
"f55ac9646c45e899603a5617d398570705fd7b93278a6e4879136f954d6f6f6e6c69676874313937",
|
|
106
|
-
"f55ac9646c45e899603a5617d398570705fd7b93278a6e4879136f954d6f6f6e6c69676874323237",
|
|
107
|
-
"f66d78b4a3cb3d37afa0ec36461e51ecbde00f26c8f0a68f94b6988069425443",
|
|
108
|
-
];
|
|
7
|
+
const assets = Serialization.Value.fromCbor(HexBlob(mockBalance));
|
|
8
|
+
const assetsCore = assets.toCore();
|
|
9
|
+
export const mockWalletAssetIds: string[] = [];
|
|
109
10
|
|
|
110
|
-
|
|
11
|
+
if (assetsCore.coins > 0n) {
|
|
12
|
+
mockWalletAssetIds.push("ada.lovelace");
|
|
13
|
+
}
|
|
14
|
+
if (assetsCore.assets) {
|
|
15
|
+
for (const [assetId] of assetsCore.assets) {
|
|
16
|
+
mockWalletAssetIds.push(assetId);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export const assetMap = mockWalletAssetIds.map((id) => {
|
|
111
21
|
const assetId = normalizeAssetIdWithDot(id);
|
|
112
22
|
const name = Buffer.from(id.slice(56), "hex").toString("utf-8");
|
|
113
23
|
|
package/src/__data__/eternl.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const
|
|
1
|
+
export const mockUsedAddresses = [
|
|
2
2
|
"00c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d0",
|
|
3
3
|
"00e855cd3dbc30bad8ac8fffbed87d36325b407a8e934b1507725fcd80121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d0",
|
|
4
4
|
"00129ee829b3cea5762f0c1077db667390a9ee007825a0ed7b1150d35d121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d0",
|
|
@@ -125,16 +125,16 @@ export const usedAddresses = [
|
|
|
125
125
|
"6033b94204fa0c33953e26834572de06f89496dd9b910c98d622e21612",
|
|
126
126
|
];
|
|
127
127
|
|
|
128
|
-
export const
|
|
128
|
+
export const mockUnusedAddresses = [
|
|
129
129
|
"00c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d0",
|
|
130
130
|
];
|
|
131
131
|
|
|
132
|
-
export const
|
|
132
|
+
export const mockBalance =
|
|
133
133
|
"821b00000004c09febb6b818581c06dd6a12db0a3eb41a9fa243dd53df588418d4819f245f36d8c45f49aa4b5265776172645374616b65014f546173746554657374506f6c6963790150526577617264466f6c64506f6c6963790151436f6c6c656374466f6c64506f6c6963790151546f6b656e486f6c646572506f6c696379015254617374655465737456616c696461746f720153526577617264466f6c6456616c696461746f720154436f6c6c656374466f6c6456616c696461746f720154546f6b656e486f6c64657256616c696461746f7201575461737465546573745374616b6556616c696461746f7201581c14e957a7799ee1feb0afe68a7abeb6f642832d28045e71fb0003b1cba1495454507265766965771b0000001878e4fd18581c2fe3c3364b443194b10954771c95819b8d6ed464033c21f03f8facb5a144695553441b0000000185d7560a581c4086577ed57c514f8e29b78f42ef4f379363355a3b65b9a032ee30c9a1446c70202d1a00bcd161581c44a1eb2d9f58add4eb1932bd0048e6a1947e85e3fe4f32956a110414a458200014df10035002e600d25a96003ecd1746007f59bac2788355687d18c79271191a00214ed558200014df102e74e6af9739616dd021f547bca1f68c937b566bb6ca2e4782e760011a0042f18658200014df10bd9437d9ec1a559d053f05dc38d337c32d1d0746952ea961f874c39a1abe4fb74958200014df10fe7606868521244f4a86d5e88ef483de7a441b286f4d751550518ff81a37c01cb3581c633a136877ed6ad0ab33e69a22611319673474c8bd0a79a4c76d9289a158200014df101750b21414d4198763ee4d442f5c03a295a13a6028def9be4a7854631a009ca627581c6c6011f808562c80d7d24b9462e3eec41bea9d96e3e7a51e620a061ea344425443621a97883a4d444a5059621b000019f16e3daf24464d41544943621b000000024dda5412581c8140c4b89428fc264e90b10c71c53a4c3f9ce52b676bf1d9b51eb9caa458200014df100ae1b3f34bfbf30e2fb38305f3a6c27aece138ba7febe13d5db3e1341a7960ea6b58200014df1034c2b9d553d3a74b3ac67cc8cefb423af0f77fc84664420090e099901a19c9dd1f58200014df105b3955db22793705b4e6f34871ef5429bace12e909fb1ccf862c60e91a0006d2ed58200014df108bf66e915c450ad94866abb02802821b599e32f43536a42470b21ea21a005bfec8581c824faecc3a7312f5cad0397dd9ffb96e15dd4cf6a3cf16e23d7352b3a1401b000000e8d4a51000581c919d4c2c9455016289341b1a14dedf697687af31751170d56a31466ea14874434c41524954591b000000cf898883f8581c99b071ce8580d6a3a11b4902145adb8bfd0d2a03935af8cf66403e15b14443484f431a01696cc444555344431a0bebc200465242455252591b000000ba8c6bfdef465342455252591b0000596460ffa1ed48544553545f4e4654014874526577617264731a203046184a546573744173736574311a009896804a546573744173736574321a009896804a546573744173736574331a009896804a546573744173736574341a009896804a546573744173736574351a009896804a546573744173736574361a009896804a546573744173736574371a009896804a546573744173736574381a009896804a546573744173736574391a009896804b54657374417373657431301a009884405153616c7361536f6c61726973233031343101581c99e7cd5c0aca25bc3e90be7e318326a188f913a07bbfe09b3bace0d4a1495454507265766965771b00000417d7b93b42581ca51963f936f00b0def70fc1196e70603cb95c85f18e836be6ba2ad8ba149446966667573696f6e1b000000016506cbcb581cb89bdcb78010912ce6e98c97d5ab38e8e62f3d0851cdca0811e4ae92aa4b5265776172645374616b65014f546173746554657374506f6c6963790150526577617264466f6c64506f6c6963790151436f6c6c656374466f6c64506f6c6963790151546f6b656e486f6c646572506f6c696379015254617374655465737456616c696461746f720153526577617264466f6c6456616c696461746f720154436f6c6c656374466f6c6456616c696461746f720154546f6b656e486f6c64657256616c696461746f7201575461737465546573745374616b6556616c696461746f7201581cba0062b8f68bb8f80d4509e53d97a554381030b5e84832115376cb0aa148544553545f4e465401581ccaaaa4dd8b3b5c9dae65573cdb0bc2e989c43c3963d06b93d37687f1a150537461626c6520446966667573696f6e1a00273a8a581ccadd6bf1f7535eed785b01169b03fc800360b396ab5617b560fccd4ea448544553545f4e465401514e45574d5f566f74655f507265766965771b00002d794ca2a4225353616c7361536f6c61726973446973636f696e196d60554e45574d5f50726f706f73616c5f5072657669657702581cd35c752af635d9e9cb79aea44537a57a5ecd91e23133cd7f210f0070a1456d544f53491822581cd441227553a0f1a965fee7d60a0f724b368dd1bddbc208730fccebcfa1465242455252591a0167e3da581cd606298f0f892cce3f4df1585d3723f3817be8198abbc0c83bb89fadaa4b5265776172645374616b65014f546173746554657374506f6c6963790150526577617264466f6c64506f6c6963790151436f6c6c656374466f6c64506f6c6963790151546f6b656e486f6c646572506f6c696379015254617374655465737456616c696461746f720153526577617264466f6c6456616c696461746f720154436f6c6c656374466f6c6456616c696461746f720154546f6b656e486f6c64657256616c696461746f7201575461737465546573745374616b6556616c696461746f7201581cd805c13981d8b6b239ab4df3a3c6de653fcb426312b768e90304fa41a7581f46534e0f050513190d2dffcc8ea86a615c8cbb9690f367e439071e8d3a241c01581f46534e4bab725e4899fb4b628f8e4773fcdffcbd1b34666736d2a4d9935b6d01581f46534e6e12a1701cb5b4173e4e21bd8ffa98f4ccd2a9b90cc325f561d972f301581f46534e7ae7c9465ccc850e25cacec07820883be9e1a972931511d63d078d9401581f46534e7fa42f43b2d7e1a9d8e3276f68d37b9b8a0746991b3f7a420673aca001581f46534eb0158422435c0130845b3141353463420e28f42696c18cef305a7c3101581f46534efeae1e5d3310dab9193f315e3124e97fc462b0b523b545e235c4704b01581cd8906ca5c7ba124a0407a32dab37b2c82b13b3dcd9111e42940dcea4a1480014df105553444d1b00000037e11d5fff581cf99a0cc5bac393156aa088bbe28993679feb59de74ccdb0c8586213aa158200014df10fc2c4a6ae8048b0b5affc169dfd496a7ace7d08288c476d9d7a5804e1a000f4240581cfa3eff2047fdf9293c5feef4dc85ce58097ea1c6da4845a351535183a14574494e44591a0fbd2529";
|
|
134
134
|
|
|
135
|
-
export const
|
|
135
|
+
export const mockNetwork = 0;
|
|
136
136
|
|
|
137
|
-
export const
|
|
137
|
+
export const mockUtxos = [
|
|
138
138
|
"828258202ffa2cb637456ddc2326ff71ca525cc3c066b74aa0e7251df708640280782a6f0082583900c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d01ab2d05e00",
|
|
139
139
|
"82825820739753ecb91d7ca749748e789f114db73650d70ee3241fb937abe8dba37dcb920182583900c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d0821a1d56b205a1581c44a1eb2d9f58add4eb1932bd0048e6a1947e85e3fe4f32956a110414a158200014df10035002e600d25a96003ecd1746007f59bac2788355687d18c79271191a00214ed5",
|
|
140
140
|
"8282582068869e3b2181917a443240a11e865352010138b63b60fb28869779cdd459c07c0182583900c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d0821a1109e7c0a1581c99b071ce8580d6a3a11b4902145adb8bfd0d2a03935af8cf66403e15a1465242455252591a00603449",
|
|
@@ -62,7 +62,7 @@ export class WalletBalanceMap<
|
|
|
62
62
|
const map: TAssetAmountMap<AssetMetadata> = new WalletAssetMap();
|
|
63
63
|
[...this.entries()].forEach(([key, asset]) => {
|
|
64
64
|
const isHandle = this._handlePolicyIds[this._observer.network]?.some(
|
|
65
|
-
(policyId) => asset.
|
|
65
|
+
(policyId) => asset.id.includes(policyId),
|
|
66
66
|
);
|
|
67
67
|
|
|
68
68
|
if (isHandle) {
|
|
@@ -673,7 +673,8 @@ export class WalletObserver<
|
|
|
673
673
|
|
|
674
674
|
const start = performance.now();
|
|
675
675
|
try {
|
|
676
|
-
const address =
|
|
676
|
+
const address =
|
|
677
|
+
window.cardano?.[this.activeWallet!]?.experimental?.feeAddress;
|
|
677
678
|
const end = performance.now();
|
|
678
679
|
|
|
679
680
|
if (this._options.debug) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, it, spyOn, test } from "bun:test";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { IAssetAmountMetadata } from "@sundaeswap/asset";
|
|
4
|
+
import { mockWalletAssetIds } from "../../__data__/assets.js";
|
|
4
5
|
import { normalizeAssetIdWithDot } from "../../utils/assets.js";
|
|
5
6
|
import { WalletBalanceMap } from "../WalletBalanceMap.class.js";
|
|
6
7
|
import { WalletObserver } from "../WalletObserver.class.js";
|
|
@@ -8,17 +9,28 @@ import { WalletObserver } from "../WalletObserver.class.js";
|
|
|
8
9
|
let instance: WalletBalanceMap;
|
|
9
10
|
|
|
10
11
|
const fungibleId = "ada.lovelace";
|
|
11
|
-
const handleId =
|
|
12
|
-
"8d18d786e92776c824607fd8e193ec535c79dc61ea2405ddf3b09fe36d696e696d616c";
|
|
13
12
|
const nftId =
|
|
14
|
-
"
|
|
13
|
+
"06dd6a12db0a3eb41a9fa243dd53df588418d4819f245f36d8c45f49.5265776172645374616b65";
|
|
15
14
|
|
|
16
|
-
beforeEach(() => {
|
|
17
|
-
const observer = new WalletObserver(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
beforeEach(async () => {
|
|
16
|
+
const observer = new WalletObserver({
|
|
17
|
+
metadataResolver: async ({ assetIds, normalizeAssetId }) => {
|
|
18
|
+
const map = new Map<string, IAssetAmountMetadata>();
|
|
19
|
+
for (const id of assetIds) {
|
|
20
|
+
const decimals = id === nftId ? 0 : 6;
|
|
21
|
+
map.set(normalizeAssetId(id), {
|
|
22
|
+
assetId: normalizeAssetId(id),
|
|
23
|
+
decimals,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return map;
|
|
27
|
+
},
|
|
21
28
|
});
|
|
29
|
+
await observer.connectWallet("eternl");
|
|
30
|
+
const balanceMap = await observer.getBalanceMap();
|
|
31
|
+
if (balanceMap instanceof WalletBalanceMap) {
|
|
32
|
+
instance = balanceMap;
|
|
33
|
+
}
|
|
22
34
|
});
|
|
23
35
|
|
|
24
36
|
describe("WalletBalanceMap", () => {
|
|
@@ -30,26 +42,28 @@ describe("WalletBalanceMap", () => {
|
|
|
30
42
|
});
|
|
31
43
|
|
|
32
44
|
it("should setup the test instance properly", () => {
|
|
33
|
-
expect(instance.size).toEqual(
|
|
34
|
-
expect([...instance.keys()]).toEqual(
|
|
45
|
+
expect(instance.size).toEqual(mockWalletAssetIds.length);
|
|
46
|
+
expect([...instance.keys()]).toEqual(
|
|
47
|
+
mockWalletAssetIds.map(normalizeAssetIdWithDot),
|
|
48
|
+
);
|
|
35
49
|
});
|
|
36
50
|
|
|
37
51
|
test("getFungibleTokens()", () => {
|
|
38
52
|
const fungible = instance.getFungibleTokens();
|
|
39
53
|
expect(fungible).toBeInstanceOf(Map);
|
|
40
|
-
|
|
54
|
+
// It will be one less than the total because we set the decimals for only one of them to 0.
|
|
55
|
+
expect(fungible.size).toEqual(mockWalletAssetIds.length - 1);
|
|
41
56
|
|
|
42
57
|
expect(fungible.get(fungibleId)).toBeDefined();
|
|
43
|
-
expect(fungible.get(handleId)).toBeUndefined();
|
|
44
58
|
expect(fungible.get(nftId)).toBeUndefined();
|
|
45
59
|
});
|
|
46
60
|
|
|
47
61
|
test("getHandles()", () => {
|
|
48
62
|
const handles = instance.getHandles();
|
|
49
63
|
expect(handles).toBeInstanceOf(Map);
|
|
50
|
-
|
|
64
|
+
// No handles exist in the dataset.
|
|
65
|
+
expect(handles.size).toEqual(0);
|
|
51
66
|
|
|
52
|
-
expect(handles.get(handleId)).toBeDefined();
|
|
53
67
|
expect(handles.get(nftId)).toBeUndefined();
|
|
54
68
|
expect(handles.get(fungibleId)).toBeUndefined();
|
|
55
69
|
});
|
|
@@ -57,20 +71,18 @@ describe("WalletBalanceMap", () => {
|
|
|
57
71
|
test("getNonFungibleTokens()", () => {
|
|
58
72
|
const nfts = instance.getNonFungibleTokens();
|
|
59
73
|
expect(nfts).toBeInstanceOf(Map);
|
|
60
|
-
expect(nfts.size).toEqual(
|
|
74
|
+
expect(nfts.size).toEqual(1);
|
|
61
75
|
|
|
62
76
|
expect(nfts.get(nftId)).toBeDefined();
|
|
63
|
-
expect(nfts.get(handleId)).toBeUndefined();
|
|
64
77
|
expect(nfts.get(fungibleId)).toBeUndefined();
|
|
65
78
|
});
|
|
66
79
|
|
|
67
80
|
test("getNonFungibleTokens(withHandles?: true)", () => {
|
|
68
81
|
const nfts = instance.getNonFungibleTokens(true);
|
|
69
82
|
expect(nfts).toBeInstanceOf(Map);
|
|
70
|
-
expect(nfts.size).toEqual(
|
|
83
|
+
expect(nfts.size).toEqual(1);
|
|
71
84
|
|
|
72
85
|
expect(nfts.get(nftId)).toBeDefined();
|
|
73
|
-
expect(nfts.get(handleId)).toBeDefined();
|
|
74
86
|
expect(nfts.get(fungibleId)).toBeUndefined();
|
|
75
87
|
});
|
|
76
88
|
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { IAssetAmountMetadata } from "@sundaeswap/asset";
|
|
2
2
|
import { afterEach, describe, expect, it, spyOn, test } from "bun:test";
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { Cardano } from "@cardano-sdk/core";
|
|
5
|
+
import { mockWalletAssetIds } from "../../__data__/assets.js";
|
|
5
6
|
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
mockNetwork,
|
|
8
|
+
mockUnusedAddresses,
|
|
9
|
+
mockUsedAddresses,
|
|
9
10
|
} from "../../__data__/eternl.js";
|
|
10
11
|
import {
|
|
11
12
|
EWalletObserverEvents,
|
|
@@ -154,29 +155,42 @@ describe("WalletObserver", async () => {
|
|
|
154
155
|
expect(spiedDispatch).toHaveBeenNthCalledWith(
|
|
155
156
|
4,
|
|
156
157
|
EWalletObserverEvents.GET_BALANCE_MAP_END,
|
|
157
|
-
{
|
|
158
|
+
expect.objectContaining({
|
|
158
159
|
balanceMap: expect.objectContaining({
|
|
159
|
-
size:
|
|
160
|
+
size: mockWalletAssetIds.length,
|
|
160
161
|
}),
|
|
161
|
-
},
|
|
162
|
+
}),
|
|
162
163
|
);
|
|
163
164
|
expect(spiedDispatch).toHaveBeenNthCalledWith(
|
|
164
165
|
5,
|
|
165
166
|
EWalletObserverEvents.SYNCING_WALLET_END,
|
|
166
167
|
expect.objectContaining({
|
|
167
168
|
balanceMap: expect.objectContaining({
|
|
168
|
-
size:
|
|
169
|
+
size: mockWalletAssetIds.length,
|
|
170
|
+
}),
|
|
171
|
+
network: mockNetwork,
|
|
172
|
+
unusedAddresses: expect.objectContaining({
|
|
173
|
+
length: mockUnusedAddresses.length,
|
|
174
|
+
}),
|
|
175
|
+
usedAddresses: expect.objectContaining({
|
|
176
|
+
length: mockUsedAddresses.length,
|
|
169
177
|
}),
|
|
170
|
-
network,
|
|
171
|
-
unusedAddresses,
|
|
172
|
-
usedAddresses,
|
|
173
178
|
}),
|
|
174
179
|
);
|
|
175
180
|
|
|
176
|
-
expect(syncResults.balanceMap
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
181
|
+
expect(syncResults.balanceMap).toHaveProperty(
|
|
182
|
+
"size",
|
|
183
|
+
mockWalletAssetIds.length,
|
|
184
|
+
);
|
|
185
|
+
expect(syncResults.network).toBe(mockNetwork);
|
|
186
|
+
expect(syncResults.unusedAddresses).toHaveProperty(
|
|
187
|
+
"length",
|
|
188
|
+
mockUnusedAddresses.length,
|
|
189
|
+
);
|
|
190
|
+
expect(syncResults.usedAddresses).toHaveProperty(
|
|
191
|
+
"length",
|
|
192
|
+
mockUsedAddresses.length,
|
|
193
|
+
);
|
|
180
194
|
});
|
|
181
195
|
|
|
182
196
|
it("should connect correctly with persistence", async () => {
|
|
@@ -196,14 +210,23 @@ describe("WalletObserver", async () => {
|
|
|
196
210
|
|
|
197
211
|
const syncResults = await observer.sync();
|
|
198
212
|
|
|
199
|
-
expect(syncResults.balanceMap
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
213
|
+
expect(syncResults.balanceMap).toHaveProperty(
|
|
214
|
+
"size",
|
|
215
|
+
mockWalletAssetIds.length,
|
|
216
|
+
);
|
|
217
|
+
expect(syncResults.network).toBe(mockNetwork);
|
|
218
|
+
expect(syncResults.unusedAddresses).toHaveProperty(
|
|
219
|
+
"length",
|
|
220
|
+
mockUnusedAddresses.length,
|
|
221
|
+
);
|
|
222
|
+
expect(syncResults.usedAddresses).toHaveProperty(
|
|
223
|
+
"length",
|
|
224
|
+
mockUsedAddresses.length,
|
|
225
|
+
);
|
|
203
226
|
expect(
|
|
204
227
|
window.localStorage.getItem(WalletObserver.PERSISTENCE_CACHE_KEY),
|
|
205
228
|
).toEqual(
|
|
206
|
-
`{"activeWallet":"eternl","mainAddress":"${
|
|
229
|
+
`{"activeWallet":"eternl","mainAddress":"${Cardano.Address.fromString(mockUsedAddresses[0])?.toBech32()}"}`,
|
|
207
230
|
);
|
|
208
231
|
});
|
|
209
232
|
});
|
|
@@ -224,13 +247,15 @@ describe("WalletObserver", async () => {
|
|
|
224
247
|
expect(
|
|
225
248
|
window.localStorage.getItem(WalletObserver.PERSISTENCE_CACHE_KEY),
|
|
226
249
|
).toEqual(
|
|
227
|
-
`{"activeWallet":"eternl","mainAddress":"${
|
|
250
|
+
`{"activeWallet":"eternl","mainAddress":"${Cardano.Address.fromString(mockUsedAddresses[0])?.toBech32()}"}`,
|
|
228
251
|
);
|
|
229
252
|
|
|
230
253
|
await observer.sync();
|
|
231
254
|
|
|
232
255
|
expect(observer.activeWallet).toEqual("eternl");
|
|
233
|
-
expect(observer.getCachedAssetMetadata().size).toEqual(
|
|
256
|
+
expect(observer.getCachedAssetMetadata().size).toEqual(
|
|
257
|
+
mockWalletAssetIds.length,
|
|
258
|
+
);
|
|
234
259
|
|
|
235
260
|
observer.disconnect();
|
|
236
261
|
|
|
@@ -263,8 +288,6 @@ describe("WalletObserver", async () => {
|
|
|
263
288
|
},
|
|
264
289
|
},
|
|
265
290
|
});
|
|
266
|
-
const spiedOnConnect = spyOn(observer, "connectWallet");
|
|
267
|
-
const spiedOnDisconnect = spyOn(observer, "disconnect");
|
|
268
291
|
|
|
269
292
|
expect(observer.peerConnectInstance).toBeUndefined();
|
|
270
293
|
|
|
@@ -277,17 +300,6 @@ describe("WalletObserver", async () => {
|
|
|
277
300
|
instance: data.instance,
|
|
278
301
|
}),
|
|
279
302
|
);
|
|
280
|
-
|
|
281
|
-
// Simulate injection.
|
|
282
|
-
// @ts-expect-error Simulating the actual function.
|
|
283
|
-
data.instance.__testStartServer();
|
|
284
|
-
expect(spiedOnConnect).toHaveBeenCalledWith("eternl-p2p");
|
|
285
|
-
|
|
286
|
-
data.instance.shutdownServer();
|
|
287
|
-
expect(spiedOnDisconnect).toHaveBeenCalled();
|
|
288
|
-
|
|
289
|
-
// Restore window.
|
|
290
|
-
delete window.cardano?.["eternl-p2p"];
|
|
291
303
|
});
|
|
292
304
|
});
|
|
293
305
|
});
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
afterAll,
|
|
3
3
|
beforeAll,
|
|
4
|
-
beforeEach,
|
|
5
4
|
describe,
|
|
6
5
|
expect,
|
|
7
6
|
it,
|
|
7
|
+
Mock,
|
|
8
8
|
mock,
|
|
9
9
|
spyOn,
|
|
10
10
|
} from "bun:test";
|
|
11
|
-
import { merge } from "lodash";
|
|
12
11
|
|
|
13
|
-
import { coreModuleMock } from "../../../setup-tests.js";
|
|
14
|
-
import
|
|
12
|
+
// import { coreModuleMock } from "../../../setup-tests.js";
|
|
13
|
+
import { Cardano } from "@cardano-sdk/core";
|
|
15
14
|
import { WalletObserverUtils } from "../WalletObserverUtils.class.js";
|
|
16
15
|
|
|
17
16
|
const testAddress =
|
|
@@ -19,59 +18,24 @@ const testAddress =
|
|
|
19
18
|
const stakeAddress =
|
|
20
19
|
"stake_test1uqfpl53wpdt6cgr0alrk879l5pm3jx04yx95q6g7afz3f5quuwrwt";
|
|
21
20
|
|
|
22
|
-
const fromBech32Mock = mock();
|
|
23
|
-
const getStakeCredentialMock = mock(() => ({
|
|
24
|
-
hash: "121fd22e0b57ac206fefc763f8bfa0771919f5218b40691eea4514d0",
|
|
25
|
-
type: 1,
|
|
26
|
-
}));
|
|
27
|
-
const fromAddressMock = mock(() => ({
|
|
28
|
-
getPaymentCredential: mock(() => ({
|
|
29
|
-
hash: "c279a3fb3b4e62bbc78e288783b58045d4ae82a18867d8352d02775a",
|
|
30
|
-
type: 0,
|
|
31
|
-
})),
|
|
32
|
-
getStakeCredential: getStakeCredentialMock,
|
|
33
|
-
}));
|
|
34
|
-
const isValidMock = mock();
|
|
35
|
-
const spiedOnGetCardanoCore = spyOn(getLibModules, "getCardanoCore");
|
|
36
|
-
|
|
37
|
-
beforeAll(() => {
|
|
38
|
-
mock.module("@cardano-sdk/core", () =>
|
|
39
|
-
merge(coreModuleMock, {
|
|
40
|
-
Cardano: {
|
|
41
|
-
Address: {
|
|
42
|
-
isValidBech32: isValidMock,
|
|
43
|
-
fromBech32: fromBech32Mock,
|
|
44
|
-
},
|
|
45
|
-
BaseAddress: {
|
|
46
|
-
fromAddress: fromAddressMock,
|
|
47
|
-
},
|
|
48
|
-
RewardAddress: {
|
|
49
|
-
fromCredentials: mock(() => ({
|
|
50
|
-
toAddress: mock(() => ({
|
|
51
|
-
toBech32: mock(() => stakeAddress),
|
|
52
|
-
})),
|
|
53
|
-
})),
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
}),
|
|
57
|
-
);
|
|
58
|
-
});
|
|
59
|
-
|
|
60
21
|
afterAll(() => {
|
|
61
22
|
mock.restore();
|
|
62
23
|
});
|
|
63
24
|
|
|
64
25
|
describe("WalletObserverUtils", async () => {
|
|
65
|
-
|
|
26
|
+
let instance: WalletObserverUtils;
|
|
27
|
+
let isValidMock: Mock<(bech32: string) => boolean>;
|
|
28
|
+
let fromBech32Mock: Mock<(bech32: string) => Cardano.Address>;
|
|
66
29
|
|
|
67
|
-
|
|
68
|
-
|
|
30
|
+
beforeAll(async () => {
|
|
31
|
+
instance = await WalletObserverUtils.new(0);
|
|
32
|
+
isValidMock = spyOn(instance.Cardano.Address, "isValidBech32");
|
|
33
|
+
fromBech32Mock = spyOn(instance.Cardano.Address, "fromBech32");
|
|
69
34
|
});
|
|
70
35
|
|
|
71
36
|
it("should instantiate with expected defaults", () => {
|
|
72
37
|
expect(instance).toBeInstanceOf(WalletObserverUtils);
|
|
73
38
|
expect(instance.network).toEqual(0);
|
|
74
|
-
expect(spiedOnGetCardanoCore).toHaveBeenCalledTimes(1);
|
|
75
39
|
});
|
|
76
40
|
|
|
77
41
|
it("should be able to switch networks", () => {
|
|
@@ -89,7 +53,7 @@ describe("WalletObserverUtils", async () => {
|
|
|
89
53
|
});
|
|
90
54
|
|
|
91
55
|
it("should throw an error if the address is malformed", () => {
|
|
92
|
-
isValidMock.
|
|
56
|
+
isValidMock.mockImplementationOnce(() => false);
|
|
93
57
|
expect(() => instance.getAddressDetails("invalid")).toThrowError(
|
|
94
58
|
"Expected a Bech32 encoded address.",
|
|
95
59
|
);
|
|
@@ -103,14 +67,12 @@ describe("WalletObserverUtils", async () => {
|
|
|
103
67
|
stakeAddress,
|
|
104
68
|
);
|
|
105
69
|
|
|
106
|
-
isValidMock.
|
|
70
|
+
isValidMock.mockImplementationOnce(() => false);
|
|
107
71
|
expect(() => instance.getBech32StakingAddress("invalid")).toThrowError(
|
|
108
72
|
"Expected a Bech32 encoded address.",
|
|
109
73
|
);
|
|
110
74
|
expect(isValidMock).toHaveBeenCalled();
|
|
111
75
|
|
|
112
|
-
// @ts-expect-error It can be undefined.
|
|
113
|
-
getStakeCredentialMock.mockImplementation(() => undefined);
|
|
114
76
|
expect(() => instance.getBech32StakingAddress("invalid")).toThrowError(
|
|
115
77
|
"Expected a Bech32 encoded address.",
|
|
116
78
|
);
|
|
@@ -3,7 +3,7 @@ import { act } from "@testing-library/react";
|
|
|
3
3
|
import { renderHook } from "@testing-library/react-hooks";
|
|
4
4
|
import { describe, expect, it } from "bun:test";
|
|
5
5
|
|
|
6
|
-
import { mockedEternlWallet } from "
|
|
6
|
+
import { mockedEternlWallet } from "../../../../../setup-tests.js";
|
|
7
7
|
import {
|
|
8
8
|
IWalletObserverProviderProps,
|
|
9
9
|
useAvailableExtensions,
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { act, renderHook } from "@testing-library/react-hooks";
|
|
2
2
|
import { describe, expect, it } from "bun:test";
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { Cardano } from "@cardano-sdk/core";
|
|
5
|
+
import { mockWalletAssetIds } from "../../../__data__/assets.js";
|
|
5
6
|
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
mockNetwork,
|
|
8
|
+
mockUnusedAddresses,
|
|
9
|
+
mockUsedAddresses,
|
|
9
10
|
} from "../../../__data__/eternl.js";
|
|
10
11
|
import { WalletObserver } from "../../../classes/WalletObserver.class.js";
|
|
11
12
|
import {
|
|
@@ -52,11 +53,21 @@ describe("useWalletObserver", () => {
|
|
|
52
53
|
|
|
53
54
|
expect(result.current.activeWallet).toEqual("eternl");
|
|
54
55
|
expect(result.current.adaBalance.amount.toString()).not.toEqual("0");
|
|
55
|
-
expect(result.current.balance.size).toEqual(
|
|
56
|
+
expect(result.current.balance.size).toEqual(mockWalletAssetIds.length);
|
|
56
57
|
expect(result.current.isCip45).toBeFalse();
|
|
57
|
-
expect(result.current.mainAddress).toEqual(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
expect(result.current.
|
|
58
|
+
expect(result.current.mainAddress).toEqual(
|
|
59
|
+
Cardano.Address.fromString(mockUsedAddresses[0])!.toBech32(),
|
|
60
|
+
);
|
|
61
|
+
expect(result.current.network).toEqual(mockNetwork);
|
|
62
|
+
expect(result.current.unusedAddresses).toEqual(
|
|
63
|
+
mockUnusedAddresses.map((cbor) =>
|
|
64
|
+
Cardano.Address.fromString(cbor)!.toBech32(),
|
|
65
|
+
),
|
|
66
|
+
);
|
|
67
|
+
expect(result.current.usedAddresses).toEqual(
|
|
68
|
+
mockUsedAddresses.map((cbor) =>
|
|
69
|
+
Cardano.Address.fromString(cbor)!.toBech32(),
|
|
70
|
+
),
|
|
71
|
+
);
|
|
61
72
|
});
|
|
62
73
|
});
|
|
@@ -22,7 +22,12 @@ export const useWalletHandles = <
|
|
|
22
22
|
>({
|
|
23
23
|
queryKey,
|
|
24
24
|
queryFn: async () => {
|
|
25
|
-
|
|
25
|
+
const result = await getHandleMetadata(
|
|
26
|
+
state.balance.getHandles(),
|
|
27
|
+
state.network || 0,
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
return result;
|
|
26
31
|
},
|
|
27
32
|
refetchInterval: false,
|
|
28
33
|
notifyOnChangeProps: ["data", "isLoading"],
|