@ledgerhq/live-common 34.51.0-nightly.7 → 34.51.0-nightly.8
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/lib/e2e/index.d.ts +5 -0
- package/lib/e2e/index.d.ts.map +1 -1
- package/lib/e2e/speculosCI.d.ts.map +1 -1
- package/lib/e2e/speculosCI.js +2 -1
- package/lib/e2e/speculosCI.js.map +1 -1
- package/lib/env.react.d.ts +1 -1
- package/lib/env.react.d.ts.map +1 -1
- package/lib/featureFlags/defaultFeatures.d.ts.map +1 -1
- package/lib/featureFlags/defaultFeatures.js +10 -0
- package/lib/featureFlags/defaultFeatures.js.map +1 -1
- package/lib/featureFlags/useFeature.d.ts +1 -1
- package/lib/featureFlags/useFeature.d.ts.map +1 -1
- package/lib/modularDrawer/hooks/__test__/useAssetAccountCounts.test.d.ts +2 -0
- package/lib/modularDrawer/hooks/__test__/useAssetAccountCounts.test.d.ts.map +1 -0
- package/lib/modularDrawer/hooks/__test__/useAssetAccountCounts.test.js +38 -0
- package/lib/modularDrawer/hooks/__test__/useAssetAccountCounts.test.js.map +1 -0
- package/lib/modularDrawer/hooks/__test__/useCurrenciesUnderFeatureFlag.test.d.ts +2 -0
- package/lib/modularDrawer/hooks/__test__/useCurrenciesUnderFeatureFlag.test.d.ts.map +1 -0
- package/lib/modularDrawer/hooks/__test__/useCurrenciesUnderFeatureFlag.test.js +50 -0
- package/lib/modularDrawer/hooks/__test__/useCurrenciesUnderFeatureFlag.test.js.map +1 -0
- package/lib/modularDrawer/hooks/__test__/useDetailedAccountsCore.test.d.ts.map +1 -0
- package/lib/modularDrawer/hooks/__test__/useDetailedAccountsCore.test.js.map +1 -0
- package/lib/modularDrawer/modules/__test__/createAssetConfiguration.test.d.ts +19 -0
- package/lib/modularDrawer/modules/__test__/createAssetConfiguration.test.d.ts.map +1 -0
- package/lib/modularDrawer/modules/__test__/createAssetConfiguration.test.js +209 -0
- package/lib/modularDrawer/modules/__test__/createAssetConfiguration.test.js.map +1 -0
- package/lib/modularDrawer/modules/__test__/createNetworkConfiguration.test.js +9 -27
- package/lib/modularDrawer/modules/__test__/createNetworkConfiguration.test.js.map +1 -1
- package/lib-es/e2e/index.d.ts +5 -0
- package/lib-es/e2e/index.d.ts.map +1 -1
- package/lib-es/e2e/speculosCI.d.ts.map +1 -1
- package/lib-es/e2e/speculosCI.js +2 -1
- package/lib-es/e2e/speculosCI.js.map +1 -1
- package/lib-es/env.react.d.ts +1 -1
- package/lib-es/env.react.d.ts.map +1 -1
- package/lib-es/featureFlags/defaultFeatures.d.ts.map +1 -1
- package/lib-es/featureFlags/defaultFeatures.js +10 -0
- package/lib-es/featureFlags/defaultFeatures.js.map +1 -1
- package/lib-es/featureFlags/useFeature.d.ts +1 -1
- package/lib-es/featureFlags/useFeature.d.ts.map +1 -1
- package/lib-es/modularDrawer/hooks/__test__/useAssetAccountCounts.test.d.ts +2 -0
- package/lib-es/modularDrawer/hooks/__test__/useAssetAccountCounts.test.d.ts.map +1 -0
- package/lib-es/modularDrawer/hooks/__test__/useAssetAccountCounts.test.js +36 -0
- package/lib-es/modularDrawer/hooks/__test__/useAssetAccountCounts.test.js.map +1 -0
- package/lib-es/modularDrawer/hooks/__test__/useCurrenciesUnderFeatureFlag.test.d.ts +2 -0
- package/lib-es/modularDrawer/hooks/__test__/useCurrenciesUnderFeatureFlag.test.d.ts.map +1 -0
- package/lib-es/modularDrawer/hooks/__test__/useCurrenciesUnderFeatureFlag.test.js +45 -0
- package/lib-es/modularDrawer/hooks/__test__/useCurrenciesUnderFeatureFlag.test.js.map +1 -0
- package/lib-es/modularDrawer/hooks/__test__/useDetailedAccountsCore.test.d.ts.map +1 -0
- package/lib-es/modularDrawer/hooks/__test__/useDetailedAccountsCore.test.js.map +1 -0
- package/lib-es/modularDrawer/modules/__test__/createAssetConfiguration.test.d.ts +19 -0
- package/lib-es/modularDrawer/modules/__test__/createAssetConfiguration.test.d.ts.map +1 -0
- package/lib-es/modularDrawer/modules/__test__/createAssetConfiguration.test.js +202 -0
- package/lib-es/modularDrawer/modules/__test__/createAssetConfiguration.test.js.map +1 -0
- package/lib-es/modularDrawer/modules/__test__/createNetworkConfiguration.test.js +5 -23
- package/lib-es/modularDrawer/modules/__test__/createNetworkConfiguration.test.js.map +1 -1
- package/package.json +53 -53
- package/src/e2e/speculosCI.ts +2 -1
- package/src/featureFlags/defaultFeatures.ts +10 -0
- package/src/modularDrawer/hooks/__test__/useAssetAccountCounts.test.ts +40 -0
- package/src/modularDrawer/hooks/__test__/useCurrenciesUnderFeatureFlag.test.ts +59 -0
- package/src/modularDrawer/modules/__test__/createAssetConfiguration.test.tsx +250 -0
- package/src/modularDrawer/modules/__test__/createNetworkConfiguration.test.ts +2 -36
- package/lib/modularDrawer/hooks/__tests__/useDetailedAccountsCore.test.d.ts.map +0 -1
- package/lib/modularDrawer/hooks/__tests__/useDetailedAccountsCore.test.js.map +0 -1
- package/lib-es/modularDrawer/hooks/__tests__/useDetailedAccountsCore.test.d.ts.map +0 -1
- package/lib-es/modularDrawer/hooks/__tests__/useDetailedAccountsCore.test.js.map +0 -1
- /package/lib/modularDrawer/hooks/{__tests__ → __test__}/useDetailedAccountsCore.test.d.ts +0 -0
- /package/lib/modularDrawer/hooks/{__tests__ → __test__}/useDetailedAccountsCore.test.js +0 -0
- /package/lib-es/modularDrawer/hooks/{__tests__ → __test__}/useDetailedAccountsCore.test.d.ts +0 -0
- /package/lib-es/modularDrawer/hooks/{__tests__ → __test__}/useDetailedAccountsCore.test.js +0 -0
- /package/src/modularDrawer/hooks/{__tests__ → __test__}/useDetailedAccountsCore.test.ts +0 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/live-common",
|
|
3
3
|
"description": "Common ground for the Ledger Live apps",
|
|
4
|
-
"version": "34.51.0-nightly.
|
|
4
|
+
"version": "34.51.0-nightly.8",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/LedgerHQ/ledger-live.git"
|
|
@@ -108,17 +108,17 @@
|
|
|
108
108
|
"@dfinity/principal": "^0.15.6",
|
|
109
109
|
"@ledgerhq/device-management-kit": "0.9.1",
|
|
110
110
|
"@ledgerhq/live-app-sdk": "^0.8.1",
|
|
111
|
-
"@ledgerhq/wallet-api-client": "^1.12.
|
|
112
|
-
"@ledgerhq/wallet-api-core": "^1.
|
|
113
|
-
"@ledgerhq/wallet-api-server": "^1.13.
|
|
111
|
+
"@ledgerhq/wallet-api-client": "^1.12.3",
|
|
112
|
+
"@ledgerhq/wallet-api-core": "^1.25.0",
|
|
113
|
+
"@ledgerhq/wallet-api-server": "^1.13.3",
|
|
114
114
|
"@noble/curves": "^1.9.7",
|
|
115
115
|
"@noble/hashes": "1.8.0",
|
|
116
116
|
"@reduxjs/toolkit": "2.8.2",
|
|
117
117
|
"@stellar/stellar-sdk": "^14.0.0",
|
|
118
118
|
"@stricahq/typhonjs": "^3.0.0",
|
|
119
119
|
"@taquito/ledger-signer": "^23.0.0-RC.0",
|
|
120
|
-
"@ton-community/ton-ledger": "^7.
|
|
121
|
-
"@ton/core": "^0.
|
|
120
|
+
"@ton-community/ton-ledger": "^7.3.0",
|
|
121
|
+
"@ton/core": "^0.62.0",
|
|
122
122
|
"@ton/crypto": "^3.3.0",
|
|
123
123
|
"@types/bchaddrjs": "^0.4.0",
|
|
124
124
|
"@types/pako": "^2.0.0",
|
|
@@ -166,79 +166,79 @@
|
|
|
166
166
|
"xstate": "^5.19.2",
|
|
167
167
|
"yargs": "^17.0.0",
|
|
168
168
|
"zod": "^3.22.4",
|
|
169
|
-
"@ledgerhq/coin-algorand": "^0.11.0-nightly.
|
|
170
|
-
"@ledgerhq/coin-aptos": "^3.4.0-nightly.
|
|
171
|
-
"@ledgerhq/coin-bitcoin": "^0.23.0-nightly.
|
|
172
|
-
"@ledgerhq/coin-canton": "^0.8.0-nightly.
|
|
173
|
-
"@ledgerhq/coin-cardano": "^0.13.0-nightly.
|
|
174
|
-
"@ledgerhq/coin-casper": "^2.2.0-nightly.
|
|
175
|
-
"@ledgerhq/coin-celo": "^1.6.0-nightly.
|
|
176
|
-
"@ledgerhq/coin-cosmos": "^0.18.0-nightly.
|
|
177
|
-
"@ledgerhq/coin-evm": "^2.33.0-nightly.
|
|
178
|
-
"@ledgerhq/coin-filecoin": "^1.13.0-nightly.
|
|
179
|
-
"@ledgerhq/coin-framework": "^6.7.0-nightly.
|
|
180
|
-
"@ledgerhq/coin-hedera": "^1.12.0-nightly.
|
|
181
|
-
"@ledgerhq/coin-icon": "^0.13.0-nightly.
|
|
182
|
-
"@ledgerhq/coin-internet_computer": "^1.9.0-nightly.
|
|
183
|
-
"@ledgerhq/coin-kaspa": "^1.3.0-nightly.
|
|
184
|
-
"@ledgerhq/coin-mina": "^1.3.0-nightly.
|
|
185
|
-
"@ledgerhq/coin-multiversx": "^0.6.0-nightly.
|
|
186
|
-
"@ledgerhq/coin-near": "^0.14.0-nightly.
|
|
187
|
-
"@ledgerhq/coin-polkadot": "^6.11.0-nightly.
|
|
188
|
-
"@ledgerhq/coin-solana": "^0.35.0-nightly.
|
|
189
|
-
"@ledgerhq/coin-stacks": "^0.10.0-nightly.
|
|
190
|
-
"@ledgerhq/coin-stellar": "^6.5.0-nightly.
|
|
191
|
-
"@ledgerhq/coin-
|
|
192
|
-
"@ledgerhq/coin-
|
|
193
|
-
"@ledgerhq/coin-
|
|
194
|
-
"@ledgerhq/coin-
|
|
195
|
-
"@ledgerhq/coin-
|
|
196
|
-
"@ledgerhq/coin-xrp": "^7.6.0-nightly.
|
|
197
|
-
"@ledgerhq/crypto-icons-ui": "^1.21.0-nightly.
|
|
198
|
-
"@ledgerhq/cryptoassets": "^13.31.0-nightly.
|
|
199
|
-
"@ledgerhq/device-core": "^0.6.6-nightly.
|
|
169
|
+
"@ledgerhq/coin-algorand": "^0.11.0-nightly.6",
|
|
170
|
+
"@ledgerhq/coin-aptos": "^3.4.0-nightly.6",
|
|
171
|
+
"@ledgerhq/coin-bitcoin": "^0.23.0-nightly.6",
|
|
172
|
+
"@ledgerhq/coin-canton": "^0.8.0-nightly.6",
|
|
173
|
+
"@ledgerhq/coin-cardano": "^0.13.0-nightly.6",
|
|
174
|
+
"@ledgerhq/coin-casper": "^2.2.0-nightly.6",
|
|
175
|
+
"@ledgerhq/coin-celo": "^1.6.0-nightly.6",
|
|
176
|
+
"@ledgerhq/coin-cosmos": "^0.18.0-nightly.6",
|
|
177
|
+
"@ledgerhq/coin-evm": "^2.33.0-nightly.6",
|
|
178
|
+
"@ledgerhq/coin-filecoin": "^1.13.0-nightly.6",
|
|
179
|
+
"@ledgerhq/coin-framework": "^6.7.0-nightly.6",
|
|
180
|
+
"@ledgerhq/coin-hedera": "^1.12.0-nightly.6",
|
|
181
|
+
"@ledgerhq/coin-icon": "^0.13.0-nightly.6",
|
|
182
|
+
"@ledgerhq/coin-internet_computer": "^1.9.0-nightly.6",
|
|
183
|
+
"@ledgerhq/coin-kaspa": "^1.3.0-nightly.6",
|
|
184
|
+
"@ledgerhq/coin-mina": "^1.3.0-nightly.6",
|
|
185
|
+
"@ledgerhq/coin-multiversx": "^0.6.0-nightly.6",
|
|
186
|
+
"@ledgerhq/coin-near": "^0.14.0-nightly.6",
|
|
187
|
+
"@ledgerhq/coin-polkadot": "^6.11.0-nightly.6",
|
|
188
|
+
"@ledgerhq/coin-solana": "^0.35.0-nightly.6",
|
|
189
|
+
"@ledgerhq/coin-stacks": "^0.10.0-nightly.6",
|
|
190
|
+
"@ledgerhq/coin-stellar": "^6.5.0-nightly.6",
|
|
191
|
+
"@ledgerhq/coin-sui": "^0.16.0-nightly.7",
|
|
192
|
+
"@ledgerhq/coin-tezos": "^6.7.0-nightly.6",
|
|
193
|
+
"@ledgerhq/coin-ton": "^0.15.0-nightly.6",
|
|
194
|
+
"@ledgerhq/coin-tron": "^5.5.0-nightly.6",
|
|
195
|
+
"@ledgerhq/coin-vechain": "^2.11.0-nightly.6",
|
|
196
|
+
"@ledgerhq/coin-xrp": "^7.6.0-nightly.6",
|
|
197
|
+
"@ledgerhq/crypto-icons-ui": "^1.21.0-nightly.2",
|
|
198
|
+
"@ledgerhq/cryptoassets": "^13.31.0-nightly.6",
|
|
199
|
+
"@ledgerhq/device-core": "^0.6.6-nightly.5",
|
|
200
200
|
"@ledgerhq/devices": "8.6.2-nightly.0",
|
|
201
201
|
"@ledgerhq/errors": "^6.27.0-nightly.0",
|
|
202
202
|
"@ledgerhq/hw-app-algorand": "^6.31.9-nightly.0",
|
|
203
203
|
"@ledgerhq/hw-app-aptos": "^6.34.9-nightly.0",
|
|
204
204
|
"@ledgerhq/hw-app-btc": "^10.11.3-nightly.0",
|
|
205
|
-
"@ledgerhq/hw-app-celo": "^6.35.1-nightly.
|
|
205
|
+
"@ledgerhq/hw-app-celo": "^6.35.1-nightly.5",
|
|
206
206
|
"@ledgerhq/hw-app-cosmos": "^6.32.9-nightly.0",
|
|
207
|
+
"@ledgerhq/hw-app-eth": "^6.46.1-nightly.5",
|
|
208
|
+
"@ledgerhq/hw-app-exchange": "^0.15.1-nightly.1",
|
|
207
209
|
"@ledgerhq/hw-app-hedera": "^1.2.9-nightly.0",
|
|
208
|
-
"@ledgerhq/hw-app-eth": "^6.46.1-nightly.4",
|
|
209
210
|
"@ledgerhq/hw-app-icon": "^1.3.9-nightly.0",
|
|
210
|
-
"@ledgerhq/hw-app-exchange": "^0.15.1-nightly.1",
|
|
211
211
|
"@ledgerhq/hw-app-kaspa": "^1.3.2-nightly.0",
|
|
212
212
|
"@ledgerhq/hw-app-multiversx": "^6.25.4-nightly.0",
|
|
213
|
-
"@ledgerhq/hw-app-polkadot": "^6.34.9-nightly.0",
|
|
214
213
|
"@ledgerhq/hw-app-near": "^6.31.9-nightly.0",
|
|
214
|
+
"@ledgerhq/hw-app-polkadot": "^6.34.9-nightly.0",
|
|
215
215
|
"@ledgerhq/hw-app-str": "^7.2.9-nightly.0",
|
|
216
|
-
"@ledgerhq/hw-app-tezos": "^6.31.9-nightly.0",
|
|
217
216
|
"@ledgerhq/hw-app-sui": "^1.4.0",
|
|
217
|
+
"@ledgerhq/hw-app-tezos": "^6.31.9-nightly.0",
|
|
218
218
|
"@ledgerhq/hw-app-trx": "^6.31.9-nightly.0",
|
|
219
219
|
"@ledgerhq/hw-app-vet": "^0.7.0-nightly.4",
|
|
220
220
|
"@ledgerhq/hw-app-xrp": "^6.32.7-nightly.0",
|
|
221
221
|
"@ledgerhq/hw-bolos": "^6.32.9-nightly.0",
|
|
222
|
+
"@ledgerhq/hw-transport": "6.31.13-nightly.0",
|
|
222
223
|
"@ledgerhq/hw-transport-mocker": "^6.29.13-nightly.0",
|
|
223
224
|
"@ledgerhq/ledger-cal-service": "^1.7.0-nightly.2",
|
|
224
225
|
"@ledgerhq/ledger-trust-service": "^0.3.15-nightly.2",
|
|
225
226
|
"@ledgerhq/live-config": "^3.2.0",
|
|
226
|
-
"@ledgerhq/live-countervalues": "^0.8.0-nightly.
|
|
227
|
-
"@ledgerhq/live-countervalues-react": "^0.7.0-nightly.
|
|
227
|
+
"@ledgerhq/live-countervalues": "^0.8.0-nightly.6",
|
|
228
|
+
"@ledgerhq/live-countervalues-react": "^0.7.0-nightly.6",
|
|
228
229
|
"@ledgerhq/live-dmk-shared": "^0.14.0-nightly.2",
|
|
229
230
|
"@ledgerhq/live-env": "^2.19.0-nightly.1",
|
|
230
231
|
"@ledgerhq/live-hooks": "0.2.0-nightly.0",
|
|
231
232
|
"@ledgerhq/live-network": "^2.0.20-nightly.2",
|
|
232
233
|
"@ledgerhq/live-promise": "^0.1.1",
|
|
233
|
-
"@ledgerhq/live-signer-canton": "^0.4.2-nightly.
|
|
234
|
-
"@ledgerhq/live-signer-evm": "^0.8.2-nightly.
|
|
235
|
-
"@ledgerhq/live-signer-solana": "^0.6.0-nightly.
|
|
236
|
-
"@ledgerhq/live-wallet": "^0.14.3-nightly.
|
|
234
|
+
"@ledgerhq/live-signer-canton": "^0.4.2-nightly.6",
|
|
235
|
+
"@ledgerhq/live-signer-evm": "^0.8.2-nightly.6",
|
|
236
|
+
"@ledgerhq/live-signer-solana": "^0.6.0-nightly.6",
|
|
237
|
+
"@ledgerhq/live-wallet": "^0.14.3-nightly.6",
|
|
237
238
|
"@ledgerhq/logs": "^6.13.0",
|
|
238
239
|
"@ledgerhq/speculos-transport": "^0.2.13-nightly.2",
|
|
239
|
-
"@ledgerhq/wallet-api-acre-module": "^0.8.0-nightly.
|
|
240
|
-
"@ledgerhq/wallet-api-exchange-module": "^0.17.0-nightly.
|
|
241
|
-
"@ledgerhq/hw-transport": "6.31.13-nightly.0"
|
|
240
|
+
"@ledgerhq/wallet-api-acre-module": "^0.8.0-nightly.3",
|
|
241
|
+
"@ledgerhq/wallet-api-exchange-module": "^0.17.0-nightly.3"
|
|
242
242
|
},
|
|
243
243
|
"devDependencies": {
|
|
244
244
|
"@solana/web3.js": "1.95.4",
|
|
@@ -286,10 +286,10 @@
|
|
|
286
286
|
"undici": "6.19.2",
|
|
287
287
|
"uuid": "^8.3.2",
|
|
288
288
|
"ws": "7",
|
|
289
|
-
"@ledgerhq/device-react": "^0.3.0-nightly.
|
|
289
|
+
"@ledgerhq/device-react": "^0.3.0-nightly.5",
|
|
290
290
|
"@ledgerhq/types-cryptoassets": "^7.29.0-nightly.0",
|
|
291
291
|
"@ledgerhq/types-devices": "^6.27.0",
|
|
292
|
-
"@ledgerhq/types-live": "^6.87.0-nightly.
|
|
292
|
+
"@ledgerhq/types-live": "^6.87.0-nightly.4"
|
|
293
293
|
},
|
|
294
294
|
"scripts": {
|
|
295
295
|
"build": "zx ./scripts/build-ts.mjs",
|
package/src/e2e/speculosCI.ts
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
import { SpeculosDevice } from "./speculos";
|
|
8
8
|
import https from "https";
|
|
9
9
|
|
|
10
|
-
const { SEED, GITHUB_TOKEN, AWS_ROLE, CLUSTER } = process.env;
|
|
10
|
+
const { SEED, GITHUB_TOKEN, AWS_ROLE, CLUSTER, SPECULOS_IMAGE_TAG } = process.env;
|
|
11
11
|
const GIT_API_URL = "https://api.github.com/repos/LedgerHQ/actions/actions/";
|
|
12
12
|
const START_WORKFLOW_ID = "workflows/161487603/dispatches";
|
|
13
13
|
const STOP_WORKFLOW_ID = "workflows/161487604/dispatches";
|
|
@@ -147,6 +147,7 @@ function createStartPayload(deviceParams: DeviceParams, runId: string) {
|
|
|
147
147
|
return {
|
|
148
148
|
ref: GITHUB_REF,
|
|
149
149
|
inputs: {
|
|
150
|
+
speculos_version: SPECULOS_IMAGE_TAG?.split(":")[1] || "master",
|
|
150
151
|
coin_app: appName,
|
|
151
152
|
coin_app_version: appVersion,
|
|
152
153
|
device: reverseModelMap[model],
|
|
@@ -129,6 +129,10 @@ export const DEFAULT_FEATURES: Features = {
|
|
|
129
129
|
receiveStakingFlowConfigDesktop: initFeature(),
|
|
130
130
|
brazePushNotifications: initFeature(),
|
|
131
131
|
stakeAccountBanner: initFeature(),
|
|
132
|
+
mixpanelAnalytics: initFeature({
|
|
133
|
+
enabled: false,
|
|
134
|
+
params: { record_sessions_percent: 100 },
|
|
135
|
+
}),
|
|
132
136
|
|
|
133
137
|
ptxSwapDetailedView: initFeature({
|
|
134
138
|
enabled: false,
|
|
@@ -688,6 +692,12 @@ export const DEFAULT_FEATURES: Features = {
|
|
|
688
692
|
supportDeviceApex: DEFAULT_FEATURE,
|
|
689
693
|
llmSyncOnboardingIncr1: DEFAULT_FEATURE,
|
|
690
694
|
noah: DEFAULT_FEATURE,
|
|
695
|
+
lldSessionReplay: {
|
|
696
|
+
...DEFAULT_FEATURE,
|
|
697
|
+
params: {
|
|
698
|
+
sampling: 100,
|
|
699
|
+
},
|
|
700
|
+
},
|
|
691
701
|
};
|
|
692
702
|
|
|
693
703
|
// Firebase SDK treat JSON values as strings
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { genAccount } from "@ledgerhq/coin-framework/lib/mocks/account";
|
|
2
|
+
import { useAssetAccountCounts } from "../useAssetAccountCounts";
|
|
3
|
+
import { createFixtureCryptoCurrency } from "../../../mock/fixtures/cryptoCurrencies";
|
|
4
|
+
|
|
5
|
+
const ethereumCurrency = createFixtureCryptoCurrency("ethereum");
|
|
6
|
+
const ethereumAccountHigh = genAccount("ethereum-account-high", {
|
|
7
|
+
currency: ethereumCurrency,
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
describe("useAssetAccountCounts", () => {
|
|
11
|
+
it("should return the count for one account", () => {
|
|
12
|
+
const assetAccountCounts = useAssetAccountCounts({
|
|
13
|
+
assets: [ethereumCurrency],
|
|
14
|
+
nestedAccounts: [ethereumAccountHigh],
|
|
15
|
+
accountIds: new Map([[ethereumAccountHigh.id, true]]),
|
|
16
|
+
formatLabel: (count: number) => `${count}`,
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
expect(assetAccountCounts[0].count).toBe(1);
|
|
20
|
+
expect(assetAccountCounts[0].label).toBe("1");
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it("should return the count for two accounts on ethereum", () => {
|
|
24
|
+
const ethereumAccountLow = genAccount("ethereum-account-low", {
|
|
25
|
+
currency: ethereumCurrency,
|
|
26
|
+
});
|
|
27
|
+
const assetAccountCounts = useAssetAccountCounts({
|
|
28
|
+
assets: [ethereumCurrency],
|
|
29
|
+
nestedAccounts: [ethereumAccountHigh, ethereumAccountLow],
|
|
30
|
+
accountIds: new Map([
|
|
31
|
+
[ethereumAccountHigh.id, true],
|
|
32
|
+
[ethereumAccountLow.id, true],
|
|
33
|
+
]),
|
|
34
|
+
formatLabel: (count: number) => `${count}`,
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
expect(assetAccountCounts[0].count).toBe(2);
|
|
38
|
+
expect(assetAccountCounts[0].label).toBe("2");
|
|
39
|
+
});
|
|
40
|
+
});
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @jest-environment jsdom
|
|
3
|
+
*/
|
|
4
|
+
import { renderHook } from "@testing-library/react";
|
|
5
|
+
import { useCurrenciesUnderFeatureFlag } from "../useCurrenciesUnderFeatureFlag";
|
|
6
|
+
import { useFeature } from "../../../featureFlags";
|
|
7
|
+
import useEnv from "../../../hooks/useEnv";
|
|
8
|
+
|
|
9
|
+
jest.mock("../../../featureFlags", () => ({ useFeature: jest.fn() }));
|
|
10
|
+
jest.mock("../../../hooks/useEnv", () => jest.fn());
|
|
11
|
+
|
|
12
|
+
const mockUseFeature = jest.mocked(useFeature);
|
|
13
|
+
const mockedEnvironment = jest.mocked(useEnv);
|
|
14
|
+
|
|
15
|
+
describe("useCurrenciesUnderFeatureFlag", () => {
|
|
16
|
+
beforeEach(() => {
|
|
17
|
+
jest.clearAllMocks();
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it("should return empty deactivatedCurrencyIds when all features are enabled", () => {
|
|
21
|
+
mockedEnvironment.mockReturnValue(false);
|
|
22
|
+
mockUseFeature.mockReturnValue({ enabled: true });
|
|
23
|
+
|
|
24
|
+
const { result } = renderHook(() => useCurrenciesUnderFeatureFlag());
|
|
25
|
+
|
|
26
|
+
expect(result.current.deactivatedCurrencyIds.size).toEqual(0);
|
|
27
|
+
expect(result.current.featureFlaggedCurrencies).toBeDefined();
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it("should include disabled currencies in deactivatedCurrencyIds", () => {
|
|
31
|
+
mockedEnvironment.mockReturnValue(false);
|
|
32
|
+
mockUseFeature.mockReturnValue({ enabled: false });
|
|
33
|
+
|
|
34
|
+
const { result } = renderHook(() => useCurrenciesUnderFeatureFlag());
|
|
35
|
+
|
|
36
|
+
expect(result.current.deactivatedCurrencyIds.size).toBeGreaterThan(0);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it("should return empty deactivatedCurrencyIds when MOCK is true", () => {
|
|
40
|
+
mockedEnvironment.mockReturnValue(true);
|
|
41
|
+
mockUseFeature.mockReturnValue({ enabled: false });
|
|
42
|
+
|
|
43
|
+
const { result } = renderHook(() => useCurrenciesUnderFeatureFlag());
|
|
44
|
+
|
|
45
|
+
expect(result.current.deactivatedCurrencyIds.size).toBe(0);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it("should contain currency mappings", () => {
|
|
49
|
+
mockedEnvironment.mockReturnValue(false);
|
|
50
|
+
mockUseFeature.mockReturnValue({ enabled: true });
|
|
51
|
+
|
|
52
|
+
const { result } = renderHook(() => useCurrenciesUnderFeatureFlag());
|
|
53
|
+
|
|
54
|
+
const currencies = result.current.featureFlaggedCurrencies;
|
|
55
|
+
expect(currencies).toHaveProperty("aptos");
|
|
56
|
+
expect(currencies).toHaveProperty("stacks");
|
|
57
|
+
expect(currencies).toHaveProperty("optimism");
|
|
58
|
+
});
|
|
59
|
+
});
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @jest-environment jsdom
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import React from "react";
|
|
6
|
+
import { renderHook } from "@testing-library/react";
|
|
7
|
+
import { mockEthCryptoCurrency } from "../../__mocks__/currencies.mock";
|
|
8
|
+
import { groupCurrenciesByProvider } from "../../utils";
|
|
9
|
+
import createAssetConfigurationHook from "../createAssetConfiguration";
|
|
10
|
+
import { BigNumber } from "bignumber.js";
|
|
11
|
+
import { genAccount, genTokenAccount } from "@ledgerhq/coin-framework/lib/mocks/account";
|
|
12
|
+
import { createFixtureCryptoCurrency } from "../../../mock/fixtures/cryptoCurrencies";
|
|
13
|
+
import { CounterValuesState } from "@ledgerhq/live-countervalues/lib/types";
|
|
14
|
+
import { CryptoCurrency, FiatCurrency, TokenCurrency } from "@ledgerhq/types-cryptoassets";
|
|
15
|
+
import { Provider } from "react-redux";
|
|
16
|
+
import { configureStore } from "@reduxjs/toolkit";
|
|
17
|
+
|
|
18
|
+
export const makeUsdcToken = (
|
|
19
|
+
parentCurrency: CryptoCurrency,
|
|
20
|
+
contractAddress: string,
|
|
21
|
+
tokenType: string = "erc20",
|
|
22
|
+
name: string = "USD Coin",
|
|
23
|
+
explicitId?: string,
|
|
24
|
+
) => {
|
|
25
|
+
const id = explicitId ?? `${parentCurrency.id}/${tokenType}/usdc`;
|
|
26
|
+
return {
|
|
27
|
+
type: "TokenCurrency" as const,
|
|
28
|
+
parentCurrency,
|
|
29
|
+
tokenType,
|
|
30
|
+
id,
|
|
31
|
+
contractAddress,
|
|
32
|
+
ticker: "USDC",
|
|
33
|
+
name,
|
|
34
|
+
units: [
|
|
35
|
+
{
|
|
36
|
+
name: "USD Coin",
|
|
37
|
+
code: "USDC",
|
|
38
|
+
magnitude: 6,
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const ApyIndicator = () => null;
|
|
45
|
+
const MarketPercentIndicator = () => null;
|
|
46
|
+
const MarketPriceIndicator = jest.fn(() => null);
|
|
47
|
+
|
|
48
|
+
const ethereumCurrencyMagnitude = 18;
|
|
49
|
+
const fiatCurrencyMagnitude = 2;
|
|
50
|
+
const fiatConversion = 4589;
|
|
51
|
+
|
|
52
|
+
const ethereumCurrency = createFixtureCryptoCurrency("ethereum");
|
|
53
|
+
ethereumCurrency.id = "ethereum";
|
|
54
|
+
ethereumCurrency.units[0].magnitude = ethereumCurrencyMagnitude;
|
|
55
|
+
const ethereumAccountHigh = genAccount("ethereum-account-high", {
|
|
56
|
+
currency: ethereumCurrency,
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
ethereumAccountHigh.balance = new BigNumber("1000000000000000000000");
|
|
60
|
+
ethereumAccountHigh.spendableBalance = ethereumAccountHigh.balance;
|
|
61
|
+
|
|
62
|
+
const ethereumUsdcToken: TokenCurrency = makeUsdcToken(ethereumCurrency, "erc20", "USD Coin");
|
|
63
|
+
const ethereumUsdcTokenAccount = genTokenAccount(0, ethereumAccountHigh, ethereumUsdcToken);
|
|
64
|
+
ethereumUsdcTokenAccount.balance = new BigNumber("1000000000");
|
|
65
|
+
ethereumAccountHigh.subAccounts = [ethereumUsdcTokenAccount];
|
|
66
|
+
|
|
67
|
+
const mockFiatCurrency: FiatCurrency = {
|
|
68
|
+
type: "FiatCurrency",
|
|
69
|
+
ticker: "USD",
|
|
70
|
+
name: "US Dollar",
|
|
71
|
+
symbol: "$",
|
|
72
|
+
units: [
|
|
73
|
+
{
|
|
74
|
+
code: "$",
|
|
75
|
+
name: "US Dollar",
|
|
76
|
+
magnitude: fiatCurrencyMagnitude,
|
|
77
|
+
showAllDigits: true,
|
|
78
|
+
prefixCode: true,
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
const useBalanceDeps = () => {
|
|
84
|
+
const mockCounterValuesState: CounterValuesState = {
|
|
85
|
+
cache: {
|
|
86
|
+
"USD ethereum": {
|
|
87
|
+
map: new Map([["latest", fiatConversion]]),
|
|
88
|
+
stats: {
|
|
89
|
+
oldest: "2024-09-12",
|
|
90
|
+
earliest: "2025-10-02T13",
|
|
91
|
+
oldestDate: new Date(),
|
|
92
|
+
earliestDate: new Date(),
|
|
93
|
+
earliestStableDate: new Date(),
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
data: {},
|
|
98
|
+
status: {},
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
return {
|
|
102
|
+
counterValueCurrency: mockFiatCurrency,
|
|
103
|
+
flattenedAccounts: [ethereumAccountHigh],
|
|
104
|
+
state: mockCounterValuesState,
|
|
105
|
+
locale: "en-US",
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
const balanceItem = jest.fn(() => null);
|
|
110
|
+
|
|
111
|
+
const assetConfigurationDeps = {
|
|
112
|
+
useBalanceDeps,
|
|
113
|
+
balanceItem,
|
|
114
|
+
ApyIndicator,
|
|
115
|
+
MarketPercentIndicator,
|
|
116
|
+
MarketPriceIndicator,
|
|
117
|
+
assetsMap: groupCurrenciesByProvider([
|
|
118
|
+
{
|
|
119
|
+
asset: {
|
|
120
|
+
id: "ethereum",
|
|
121
|
+
ticker: "ETH",
|
|
122
|
+
name: "Ethereum",
|
|
123
|
+
assetsIds: {
|
|
124
|
+
ethereum: "ethereum",
|
|
125
|
+
arbitrum: "arbitrum",
|
|
126
|
+
},
|
|
127
|
+
metaCurrencyId: "ethereum",
|
|
128
|
+
},
|
|
129
|
+
networks: [mockEthCryptoCurrency],
|
|
130
|
+
},
|
|
131
|
+
]),
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
describe("createAssetConfiguration", () => {
|
|
135
|
+
it("should call balanceItem with correct BalanceUI objects for each asset", () => {
|
|
136
|
+
renderHook(() =>
|
|
137
|
+
createAssetConfigurationHook(assetConfigurationDeps)({
|
|
138
|
+
assetsConfiguration: { rightElement: "balance" },
|
|
139
|
+
})([ethereumCurrency]),
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
expect(balanceItem).toHaveBeenCalledTimes(1);
|
|
143
|
+
expect(balanceItem).toHaveBeenNthCalledWith(1, {
|
|
144
|
+
currency: ethereumCurrency,
|
|
145
|
+
balance: ethereumAccountHigh.balance,
|
|
146
|
+
fiatValue: ethereumAccountHigh.balance
|
|
147
|
+
.shiftedBy(fiatCurrencyMagnitude - ethereumCurrencyMagnitude)
|
|
148
|
+
.multipliedBy(fiatConversion)
|
|
149
|
+
.toNumber(),
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
const store = configureStore({
|
|
154
|
+
reducer: {
|
|
155
|
+
assetsDataApi: (state = {}, _action) => state,
|
|
156
|
+
},
|
|
157
|
+
preloadedState: {
|
|
158
|
+
assetsDataApi: {
|
|
159
|
+
queries: {
|
|
160
|
+
mockMarketsQuery: {
|
|
161
|
+
data: {
|
|
162
|
+
pages: [
|
|
163
|
+
{
|
|
164
|
+
markets: {
|
|
165
|
+
ethereum: {
|
|
166
|
+
price: 2500.5,
|
|
167
|
+
priceChangePercentage24h: 5.25,
|
|
168
|
+
marketCap: 300000000000,
|
|
169
|
+
ticker: "ETH",
|
|
170
|
+
name: "Ethereum",
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
interestRates: {
|
|
174
|
+
ethereum: {
|
|
175
|
+
currencyId: "ethereum",
|
|
176
|
+
rate: 0.045,
|
|
177
|
+
type: "APY",
|
|
178
|
+
fetchAt: "2024-10-13T10:00:00Z",
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
],
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
it("should generate market trend right element with correct market trend data", () => {
|
|
191
|
+
const {
|
|
192
|
+
result: { current },
|
|
193
|
+
} = renderHook(
|
|
194
|
+
() =>
|
|
195
|
+
createAssetConfigurationHook(assetConfigurationDeps)({
|
|
196
|
+
assetsConfiguration: { rightElement: "marketTrend" },
|
|
197
|
+
})([ethereumCurrency]),
|
|
198
|
+
{
|
|
199
|
+
wrapper: ({ children }) => <Provider store={store}>{children}</Provider>,
|
|
200
|
+
},
|
|
201
|
+
);
|
|
202
|
+
|
|
203
|
+
const rightElement = current[0]?.rightElement;
|
|
204
|
+
expect(rightElement).toBeDefined();
|
|
205
|
+
expect(React.isValidElement(rightElement)).toBe(true);
|
|
206
|
+
if (React.isValidElement(rightElement)) {
|
|
207
|
+
expect(rightElement.props).toEqual({
|
|
208
|
+
percent: 5.25,
|
|
209
|
+
price: "$2,500.50",
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
it("should generate apy left element when leftElement is 'apy'", () => {
|
|
215
|
+
const {
|
|
216
|
+
result: { current },
|
|
217
|
+
} = renderHook(
|
|
218
|
+
() =>
|
|
219
|
+
createAssetConfigurationHook(assetConfigurationDeps)({
|
|
220
|
+
assetsConfiguration: { leftElement: "apy" },
|
|
221
|
+
})([ethereumCurrency]),
|
|
222
|
+
{
|
|
223
|
+
wrapper: ({ children }) => <Provider store={store}>{children}</Provider>,
|
|
224
|
+
},
|
|
225
|
+
);
|
|
226
|
+
|
|
227
|
+
expect((current[0]?.leftElement as React.ReactElement).props).toEqual({
|
|
228
|
+
value: 4.5,
|
|
229
|
+
type: "APY",
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
|
|
233
|
+
it("should generate market trend left element when leftElement is 'marketTrend'", () => {
|
|
234
|
+
const {
|
|
235
|
+
result: { current },
|
|
236
|
+
} = renderHook(
|
|
237
|
+
() =>
|
|
238
|
+
createAssetConfigurationHook(assetConfigurationDeps)({
|
|
239
|
+
assetsConfiguration: { leftElement: "marketTrend" },
|
|
240
|
+
})([ethereumCurrency]),
|
|
241
|
+
{
|
|
242
|
+
wrapper: ({ children }) => <Provider store={store}>{children}</Provider>,
|
|
243
|
+
},
|
|
244
|
+
);
|
|
245
|
+
|
|
246
|
+
expect((current[0]?.leftElement as React.ReactElement).props).toEqual({
|
|
247
|
+
percent: 5.25,
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
});
|
|
@@ -9,34 +9,7 @@ import { createNetworkConfigurationHook } from "../createNetworkConfiguration";
|
|
|
9
9
|
import { renderHook } from "@testing-library/react";
|
|
10
10
|
import { CounterValuesState } from "@ledgerhq/live-countervalues/lib/types";
|
|
11
11
|
import { FiatCurrency, TokenCurrency, CryptoCurrency } from "@ledgerhq/types-cryptoassets";
|
|
12
|
-
|
|
13
|
-
const makeUsdcToken = (
|
|
14
|
-
parentCurrency: CryptoCurrency,
|
|
15
|
-
contractAddress: string,
|
|
16
|
-
tokenType: string = "erc20",
|
|
17
|
-
magnitude: number = 6,
|
|
18
|
-
name: string = "USD Coin",
|
|
19
|
-
unitName: string = "USD Coin",
|
|
20
|
-
explicitId?: string,
|
|
21
|
-
) => {
|
|
22
|
-
const id = explicitId ?? `${parentCurrency.id}/${tokenType}/usdc`;
|
|
23
|
-
return {
|
|
24
|
-
type: "TokenCurrency" as const,
|
|
25
|
-
parentCurrency,
|
|
26
|
-
tokenType,
|
|
27
|
-
id,
|
|
28
|
-
contractAddress,
|
|
29
|
-
ticker: "USDC",
|
|
30
|
-
name,
|
|
31
|
-
units: [
|
|
32
|
-
{
|
|
33
|
-
name: unitName,
|
|
34
|
-
code: "USDC",
|
|
35
|
-
magnitude,
|
|
36
|
-
},
|
|
37
|
-
],
|
|
38
|
-
};
|
|
39
|
-
};
|
|
12
|
+
import { makeUsdcToken } from "./createAssetConfiguration.test";
|
|
40
13
|
|
|
41
14
|
const bscCurrency = createFixtureCryptoCurrency("bsc");
|
|
42
15
|
const bscAccount = genAccount("bsc-account", { currency: bscCurrency });
|
|
@@ -44,9 +17,7 @@ const bscUsdcToken: TokenCurrency = makeUsdcToken(
|
|
|
44
17
|
bscCurrency,
|
|
45
18
|
"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d",
|
|
46
19
|
"bep20",
|
|
47
|
-
18,
|
|
48
20
|
"USD Coin",
|
|
49
|
-
"Binance-Peg USD Coin",
|
|
50
21
|
"bsc/erc20/usdc",
|
|
51
22
|
);
|
|
52
23
|
const bscUsdcTokenAccount = genTokenAccount(0, bscAccount, bscUsdcToken);
|
|
@@ -58,8 +29,6 @@ const baseUsdcToken: TokenCurrency = makeUsdcToken(
|
|
|
58
29
|
baseCurrency,
|
|
59
30
|
"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
|
|
60
31
|
"erc20",
|
|
61
|
-
6,
|
|
62
|
-
"USD Coin",
|
|
63
32
|
"USD Coin",
|
|
64
33
|
"base/erc20/usd_coin",
|
|
65
34
|
);
|
|
@@ -78,8 +47,7 @@ const ethereumUsdcToken: TokenCurrency = makeUsdcToken(
|
|
|
78
47
|
ethereumCurrency,
|
|
79
48
|
"0xA0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
|
|
80
49
|
"erc20",
|
|
81
|
-
|
|
82
|
-
"USD Coin",
|
|
50
|
+
|
|
83
51
|
"USD Coin",
|
|
84
52
|
);
|
|
85
53
|
const ethereumUsdcTokenAccount = genTokenAccount(0, ethereumAccountHigh, ethereumUsdcToken);
|
|
@@ -108,8 +76,6 @@ const polygonUsdcToken: TokenCurrency = makeUsdcToken(
|
|
|
108
76
|
polygonCurrency,
|
|
109
77
|
"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
|
|
110
78
|
"erc20",
|
|
111
|
-
6,
|
|
112
|
-
"USD Coin",
|
|
113
79
|
"USD Coin",
|
|
114
80
|
);
|
|
115
81
|
const polygonUsdcTokenAccount = genTokenAccount(0, polygonAccountMedium, polygonUsdcToken);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useDetailedAccountsCore.test.d.ts","sourceRoot":"","sources":["../../../../src/modularDrawer/hooks/__tests__/useDetailedAccountsCore.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useDetailedAccountsCore.test.js","sourceRoot":"","sources":["../../../../src/modularDrawer/hooks/__tests__/useDetailedAccountsCore.test.ts"],"names":[],"mappings":"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"}
|