@ledgerhq/live-common 34.33.0-nightly.1 → 34.33.0-nightly.2

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.
@@ -0,0 +1,17 @@
1
+ import { CurrencyData, MarketCoinDataChart } from "../utils/types";
2
+ type UseLargeMoverDataProviderParams = {
3
+ ids: string[];
4
+ counterCurrency: string;
5
+ range: string;
6
+ };
7
+ export declare const useLargeMoverDataProvider: ({ ids, counterCurrency, range, }: UseLargeMoverDataProviderParams) => {
8
+ currencies: {
9
+ id: string;
10
+ data?: CurrencyData;
11
+ chartData?: MarketCoinDataChart;
12
+ isLoading: boolean;
13
+ isError: boolean;
14
+ }[];
15
+ };
16
+ export {};
17
+ //# sourceMappingURL=useLargeMoverDataProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLargeMoverDataProvider.d.ts","sourceRoot":"","sources":["../../../src/market/hooks/useLargeMoverDataProvider.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAsB,MAAM,gBAAgB,CAAC;AAMvF,KAAK,+BAA+B,GAAG;IACrC,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAMF,eAAO,MAAM,yBAAyB,qCAInC,+BAA+B;gBACpB;QACV,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,YAAY,CAAC;QACpB,SAAS,CAAC,EAAE,mBAAmB,CAAC;QAChC,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;KAClB,EAAE;CAsCJ,CAAC"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useLargeMoverDataProvider = void 0;
4
+ const react_query_1 = require("@tanstack/react-query");
5
+ const api_1 = require("../api");
6
+ const queryKeys_1 = require("../utils/queryKeys");
7
+ const timers_1 = require("../utils/timers");
8
+ const currencyFormatter_1 = require("../utils/currencyFormatter");
9
+ const currencies_1 = require("@ledgerhq/cryptoassets/currencies");
10
+ const cryptoCurrenciesList = [...(0, currencies_1.listCryptoCurrencies)()];
11
+ function mapIdsToQueries(ids, queries) {
12
+ return Object.fromEntries(ids.map((id, index) => [id, queries[index]]));
13
+ }
14
+ const useLargeMoverDataProvider = ({ ids, counterCurrency, range, }) => {
15
+ const currencyQueries = (0, react_query_1.useQueries)({
16
+ queries: ids.map(id => ({
17
+ queryKey: [queryKeys_1.QUERY_KEY.CurrencyDataRaw, id, counterCurrency],
18
+ queryFn: () => (0, api_1.fetchCurrency)({ id, counterCurrency }),
19
+ refetchInterval: timers_1.REFETCH_TIME_ONE_MINUTE * timers_1.BASIC_REFETCH,
20
+ staleTime: timers_1.REFETCH_TIME_ONE_MINUTE * timers_1.BASIC_REFETCH,
21
+ select: (data) => (0, currencyFormatter_1.format)(data, cryptoCurrenciesList),
22
+ })),
23
+ });
24
+ const chartQueries = (0, react_query_1.useQueries)({
25
+ queries: ids.map(id => ({
26
+ queryKey: [queryKeys_1.QUERY_KEY.CurrencyChartData, id, counterCurrency, range],
27
+ queryFn: () => (0, api_1.fetchCurrencyChartData)({ id, counterCurrency, range }),
28
+ refetchInterval: timers_1.REFETCH_TIME_ONE_MINUTE * timers_1.BASIC_REFETCH,
29
+ staleTime: timers_1.REFETCH_TIME_ONE_MINUTE * timers_1.BASIC_REFETCH,
30
+ })),
31
+ });
32
+ const currencyQueryMap = mapIdsToQueries(ids, currencyQueries);
33
+ const chartQueryMap = mapIdsToQueries(ids, chartQueries);
34
+ const currencies = ids.map(id => {
35
+ const currencyQuery = currencyQueryMap[id];
36
+ const chartQuery = chartQueryMap[id];
37
+ return {
38
+ id,
39
+ data: currencyQuery?.data,
40
+ chartData: chartQuery?.data,
41
+ isLoading: currencyQuery?.isLoading || chartQuery?.isLoading || false,
42
+ isError: currencyQuery?.isError || chartQuery?.isError || false,
43
+ };
44
+ });
45
+ return { currencies };
46
+ };
47
+ exports.useLargeMoverDataProvider = useLargeMoverDataProvider;
48
+ //# sourceMappingURL=useLargeMoverDataProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLargeMoverDataProvider.js","sourceRoot":"","sources":["../../../src/market/hooks/useLargeMoverDataProvider.ts"],"names":[],"mappings":";;;AAAA,uDAAmD;AACnD,gCAA+D;AAC/D,kDAA+C;AAC/C,4CAAyE;AAEzE,kEAAoD;AACpD,kEAAyE;AAEzE,MAAM,oBAAoB,GAAG,CAAC,GAAG,IAAA,iCAAoB,GAAE,CAAC,CAAC;AAQzD,SAAS,eAAe,CAAI,GAAa,EAAE,OAAY;IACrD,OAAO,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AAEM,MAAM,yBAAyB,GAAG,CAAC,EACxC,GAAG,EACH,eAAe,EACf,KAAK,GAC2B,EAQhC,EAAE;IACF,MAAM,eAAe,GAAG,IAAA,wBAAU,EAAC;QACjC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACtB,QAAQ,EAAE,CAAC,qBAAS,CAAC,eAAe,EAAE,EAAE,EAAE,eAAe,CAAC;YAC1D,OAAO,EAAE,GAAG,EAAE,CAAC,IAAA,mBAAa,EAAC,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC;YACrD,eAAe,EAAE,gCAAuB,GAAG,sBAAa;YACxD,SAAS,EAAE,gCAAuB,GAAG,sBAAa;YAClD,MAAM,EAAE,CAAC,IAAwB,EAAE,EAAE,CAAC,IAAA,0BAAM,EAAC,IAAI,EAAE,oBAAoB,CAAC;SACzE,CAAC,CAAC;KACJ,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,IAAA,wBAAU,EAAC;QAC9B,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACtB,QAAQ,EAAE,CAAC,qBAAS,CAAC,iBAAiB,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,CAAC;YACnE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAA,4BAAsB,EAAC,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;YACrE,eAAe,EAAE,gCAAuB,GAAG,sBAAa;YACxD,SAAS,EAAE,gCAAuB,GAAG,sBAAa;SACnD,CAAC,CAAC;KACJ,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,eAAe,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAC/D,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAEzD,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAC9B,MAAM,aAAa,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;QAErC,OAAO;YACL,EAAE;YACF,IAAI,EAAE,aAAa,EAAE,IAAI;YACzB,SAAS,EAAE,UAAU,EAAE,IAAI;YAC3B,SAAS,EAAE,aAAa,EAAE,SAAS,IAAI,UAAU,EAAE,SAAS,IAAI,KAAK;YACrE,OAAO,EAAE,aAAa,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,IAAI,KAAK;SAChE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,UAAU,EAAE,CAAC;AACxB,CAAC,CAAC;AAjDW,QAAA,yBAAyB,6BAiDpC"}
@@ -0,0 +1,17 @@
1
+ import { CurrencyData, MarketCoinDataChart } from "../utils/types";
2
+ type UseLargeMoverDataProviderParams = {
3
+ ids: string[];
4
+ counterCurrency: string;
5
+ range: string;
6
+ };
7
+ export declare const useLargeMoverDataProvider: ({ ids, counterCurrency, range, }: UseLargeMoverDataProviderParams) => {
8
+ currencies: {
9
+ id: string;
10
+ data?: CurrencyData;
11
+ chartData?: MarketCoinDataChart;
12
+ isLoading: boolean;
13
+ isError: boolean;
14
+ }[];
15
+ };
16
+ export {};
17
+ //# sourceMappingURL=useLargeMoverDataProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLargeMoverDataProvider.d.ts","sourceRoot":"","sources":["../../../src/market/hooks/useLargeMoverDataProvider.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAsB,MAAM,gBAAgB,CAAC;AAMvF,KAAK,+BAA+B,GAAG;IACrC,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAMF,eAAO,MAAM,yBAAyB,qCAInC,+BAA+B;gBACpB;QACV,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,YAAY,CAAC;QACpB,SAAS,CAAC,EAAE,mBAAmB,CAAC;QAChC,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;KAClB,EAAE;CAsCJ,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { useQueries } from "@tanstack/react-query";
2
+ import { fetchCurrency, fetchCurrencyChartData } from "../api";
3
+ import { QUERY_KEY } from "../utils/queryKeys";
4
+ import { REFETCH_TIME_ONE_MINUTE, BASIC_REFETCH } from "../utils/timers";
5
+ import { format } from "../utils/currencyFormatter";
6
+ import { listCryptoCurrencies } from "@ledgerhq/cryptoassets/currencies";
7
+ const cryptoCurrenciesList = [...listCryptoCurrencies()];
8
+ function mapIdsToQueries(ids, queries) {
9
+ return Object.fromEntries(ids.map((id, index) => [id, queries[index]]));
10
+ }
11
+ export const useLargeMoverDataProvider = ({ ids, counterCurrency, range, }) => {
12
+ const currencyQueries = useQueries({
13
+ queries: ids.map(id => ({
14
+ queryKey: [QUERY_KEY.CurrencyDataRaw, id, counterCurrency],
15
+ queryFn: () => fetchCurrency({ id, counterCurrency }),
16
+ refetchInterval: REFETCH_TIME_ONE_MINUTE * BASIC_REFETCH,
17
+ staleTime: REFETCH_TIME_ONE_MINUTE * BASIC_REFETCH,
18
+ select: (data) => format(data, cryptoCurrenciesList),
19
+ })),
20
+ });
21
+ const chartQueries = useQueries({
22
+ queries: ids.map(id => ({
23
+ queryKey: [QUERY_KEY.CurrencyChartData, id, counterCurrency, range],
24
+ queryFn: () => fetchCurrencyChartData({ id, counterCurrency, range }),
25
+ refetchInterval: REFETCH_TIME_ONE_MINUTE * BASIC_REFETCH,
26
+ staleTime: REFETCH_TIME_ONE_MINUTE * BASIC_REFETCH,
27
+ })),
28
+ });
29
+ const currencyQueryMap = mapIdsToQueries(ids, currencyQueries);
30
+ const chartQueryMap = mapIdsToQueries(ids, chartQueries);
31
+ const currencies = ids.map(id => {
32
+ const currencyQuery = currencyQueryMap[id];
33
+ const chartQuery = chartQueryMap[id];
34
+ return {
35
+ id,
36
+ data: currencyQuery?.data,
37
+ chartData: chartQuery?.data,
38
+ isLoading: currencyQuery?.isLoading || chartQuery?.isLoading || false,
39
+ isError: currencyQuery?.isError || chartQuery?.isError || false,
40
+ };
41
+ });
42
+ return { currencies };
43
+ };
44
+ //# sourceMappingURL=useLargeMoverDataProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLargeMoverDataProvider.js","sourceRoot":"","sources":["../../../src/market/hooks/useLargeMoverDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEzE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEzE,MAAM,oBAAoB,GAAG,CAAC,GAAG,oBAAoB,EAAE,CAAC,CAAC;AAQzD,SAAS,eAAe,CAAI,GAAa,EAAE,OAAY;IACrD,OAAO,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,EACxC,GAAG,EACH,eAAe,EACf,KAAK,GAC2B,EAQhC,EAAE;IACF,MAAM,eAAe,GAAG,UAAU,CAAC;QACjC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACtB,QAAQ,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,EAAE,eAAe,CAAC;YAC1D,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC;YACrD,eAAe,EAAE,uBAAuB,GAAG,aAAa;YACxD,SAAS,EAAE,uBAAuB,GAAG,aAAa;YAClD,MAAM,EAAE,CAAC,IAAwB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,oBAAoB,CAAC;SACzE,CAAC,CAAC;KACJ,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,UAAU,CAAC;QAC9B,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACtB,QAAQ,EAAE,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,CAAC;YACnE,OAAO,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC;YACrE,eAAe,EAAE,uBAAuB,GAAG,aAAa;YACxD,SAAS,EAAE,uBAAuB,GAAG,aAAa;SACnD,CAAC,CAAC;KACJ,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,eAAe,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAC/D,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAEzD,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAC9B,MAAM,aAAa,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;QAErC,OAAO;YACL,EAAE;YACF,IAAI,EAAE,aAAa,EAAE,IAAI;YACzB,SAAS,EAAE,UAAU,EAAE,IAAI;YAC3B,SAAS,EAAE,aAAa,EAAE,SAAS,IAAI,UAAU,EAAE,SAAS,IAAI,KAAK;YACrE,OAAO,EAAE,aAAa,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,IAAI,KAAK;SAChE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,UAAU,EAAE,CAAC;AACxB,CAAC,CAAC"}
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.33.0-nightly.1",
4
+ "version": "34.33.0-nightly.2",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/LedgerHQ/ledger-live.git"
@@ -162,21 +162,19 @@
162
162
  "xstate": "4.38.3",
163
163
  "yargs": "^17.0.0",
164
164
  "zod": "^3.22.4",
165
- "@ledgerhq/coin-algorand": "^0.9.5-nightly.0",
166
- "@ledgerhq/coin-aptos": "^1.9.5-nightly.0",
167
165
  "@ledgerhq/coin-bitcoin": "^0.15.5-nightly.0",
168
166
  "@ledgerhq/coin-cardano": "^0.8.5-nightly.0",
167
+ "@ledgerhq/coin-algorand": "^0.9.5-nightly.0",
168
+ "@ledgerhq/coin-aptos": "^1.9.5-nightly.0",
169
169
  "@ledgerhq/coin-casper": "^1.6.5-nightly.0",
170
170
  "@ledgerhq/coin-celo": "^1.1.3-nightly.0",
171
171
  "@ledgerhq/coin-cosmos": "^0.14.1-nightly.0",
172
172
  "@ledgerhq/coin-evm": "^2.21.0-nightly.0",
173
- "@ledgerhq/coin-filecoin": "^1.9.5-nightly.0",
174
173
  "@ledgerhq/coin-framework": "^5.0.1-nightly.0",
174
+ "@ledgerhq/coin-filecoin": "^1.9.5-nightly.0",
175
175
  "@ledgerhq/coin-hedera": "^1.6.5-nightly.0",
176
176
  "@ledgerhq/coin-icon": "^0.10.5-nightly.0",
177
177
  "@ledgerhq/coin-internet_computer": "^1.7.5-nightly.0",
178
- "@ledgerhq/coin-mina": "^1.1.4-nightly.0",
179
- "@ledgerhq/coin-multiversx": "^0.4.5-nightly.0",
180
178
  "@ledgerhq/coin-near": "^0.11.5-nightly.0",
181
179
  "@ledgerhq/coin-polkadot": "^6.0.1-nightly.1",
182
180
  "@ledgerhq/coin-solana": "^0.22.0-nightly.1",
@@ -190,12 +188,13 @@
190
188
  "@ledgerhq/coin-xrp": "^6.0.1-nightly.0",
191
189
  "@ledgerhq/crypto-icons-ui": "^1.13.0",
192
190
  "@ledgerhq/cryptoassets": "^13.16.0",
191
+ "@ledgerhq/coin-mina": "^1.1.4-nightly.0",
193
192
  "@ledgerhq/device-core": "^0.4.24-nightly.0",
194
- "@ledgerhq/devices": "8.4.5-nightly.0",
195
193
  "@ledgerhq/errors": "^6.20.0-nightly.0",
196
194
  "@ledgerhq/hw-app-algorand": "^6.31.0",
197
195
  "@ledgerhq/hw-app-aptos": "^6.34.0",
198
196
  "@ledgerhq/hw-app-btc": "^10.9.0",
197
+ "@ledgerhq/devices": "8.4.5-nightly.0",
199
198
  "@ledgerhq/hw-app-celo": "^6.33.2-nightly.0",
200
199
  "@ledgerhq/hw-app-cosmos": "^6.32.0",
201
200
  "@ledgerhq/hw-app-eth": "^6.45.4-nightly.0",
@@ -211,10 +210,9 @@
211
210
  "@ledgerhq/hw-app-tezos": "^6.31.0",
212
211
  "@ledgerhq/hw-app-trx": "^6.31.0",
213
212
  "@ledgerhq/hw-app-vet": "^0.5.2",
214
- "@ledgerhq/hw-app-xrp": "^6.31.0",
215
213
  "@ledgerhq/hw-bolos": "6.32.1-nightly.0",
216
214
  "@ledgerhq/hw-transport": "^6.31.5-nightly.0",
217
- "@ledgerhq/hw-transport-mocker": "^6.29.5-nightly.0",
215
+ "@ledgerhq/coin-multiversx": "^0.4.5-nightly.0",
218
216
  "@ledgerhq/ledger-cal-service": "^0.4.2",
219
217
  "@ledgerhq/ledger-trust-service": "0.3.2",
220
218
  "@ledgerhq/live-config": "^3.1.0",
@@ -227,10 +225,12 @@
227
225
  "@ledgerhq/live-promise": "^0.1.0",
228
226
  "@ledgerhq/live-signer-evm": "^0.4.0-nightly.0",
229
227
  "@ledgerhq/live-wallet": "^0.10.8-nightly.0",
228
+ "@ledgerhq/hw-app-xrp": "^6.31.0",
230
229
  "@ledgerhq/logs": "^6.12.0",
231
230
  "@ledgerhq/speculos-transport": "^0.2.0",
232
231
  "@ledgerhq/wallet-api-acre-module": "^0.5.0-nightly.1",
233
- "@ledgerhq/wallet-api-exchange-module": "^0.13.0-nightly.1"
232
+ "@ledgerhq/wallet-api-exchange-module": "^0.13.0-nightly.1",
233
+ "@ledgerhq/hw-transport-mocker": "^6.29.5-nightly.0"
234
234
  },
235
235
  "devDependencies": {
236
236
  "@solana/web3.js": "1.95.4",
@@ -0,0 +1,70 @@
1
+ import { useQueries } from "@tanstack/react-query";
2
+ import { fetchCurrency, fetchCurrencyChartData } from "../api";
3
+ import { QUERY_KEY } from "../utils/queryKeys";
4
+ import { REFETCH_TIME_ONE_MINUTE, BASIC_REFETCH } from "../utils/timers";
5
+ import { CurrencyData, MarketCoinDataChart, MarketItemResponse } from "../utils/types";
6
+ import { format } from "../utils/currencyFormatter";
7
+ import { listCryptoCurrencies } from "@ledgerhq/cryptoassets/currencies";
8
+
9
+ const cryptoCurrenciesList = [...listCryptoCurrencies()];
10
+
11
+ type UseLargeMoverDataProviderParams = {
12
+ ids: string[];
13
+ counterCurrency: string;
14
+ range: string;
15
+ };
16
+
17
+ function mapIdsToQueries<T>(ids: string[], queries: T[]): Record<string, T> {
18
+ return Object.fromEntries(ids.map((id, index) => [id, queries[index]]));
19
+ }
20
+
21
+ export const useLargeMoverDataProvider = ({
22
+ ids,
23
+ counterCurrency,
24
+ range,
25
+ }: UseLargeMoverDataProviderParams): {
26
+ currencies: {
27
+ id: string;
28
+ data?: CurrencyData;
29
+ chartData?: MarketCoinDataChart;
30
+ isLoading: boolean;
31
+ isError: boolean;
32
+ }[];
33
+ } => {
34
+ const currencyQueries = useQueries({
35
+ queries: ids.map(id => ({
36
+ queryKey: [QUERY_KEY.CurrencyDataRaw, id, counterCurrency],
37
+ queryFn: () => fetchCurrency({ id, counterCurrency }),
38
+ refetchInterval: REFETCH_TIME_ONE_MINUTE * BASIC_REFETCH,
39
+ staleTime: REFETCH_TIME_ONE_MINUTE * BASIC_REFETCH,
40
+ select: (data: MarketItemResponse) => format(data, cryptoCurrenciesList),
41
+ })),
42
+ });
43
+
44
+ const chartQueries = useQueries({
45
+ queries: ids.map(id => ({
46
+ queryKey: [QUERY_KEY.CurrencyChartData, id, counterCurrency, range],
47
+ queryFn: () => fetchCurrencyChartData({ id, counterCurrency, range }),
48
+ refetchInterval: REFETCH_TIME_ONE_MINUTE * BASIC_REFETCH,
49
+ staleTime: REFETCH_TIME_ONE_MINUTE * BASIC_REFETCH,
50
+ })),
51
+ });
52
+
53
+ const currencyQueryMap = mapIdsToQueries(ids, currencyQueries);
54
+ const chartQueryMap = mapIdsToQueries(ids, chartQueries);
55
+
56
+ const currencies = ids.map(id => {
57
+ const currencyQuery = currencyQueryMap[id];
58
+ const chartQuery = chartQueryMap[id];
59
+
60
+ return {
61
+ id,
62
+ data: currencyQuery?.data,
63
+ chartData: chartQuery?.data,
64
+ isLoading: currencyQuery?.isLoading || chartQuery?.isLoading || false,
65
+ isError: currencyQuery?.isError || chartQuery?.isError || false,
66
+ };
67
+ });
68
+
69
+ return { currencies };
70
+ };