@ledgerhq/live-common 34.33.0-nightly.5 → 34.33.1-hotfix.0
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/DataModel.d.ts.map +1 -1
- package/lib/DataModel.js +0 -8
- package/lib/DataModel.js.map +1 -1
- package/lib/DataModel.test.js +0 -46
- package/lib/DataModel.test.js.map +1 -1
- package/lib/families/evm/config.d.ts.map +1 -1
- package/lib/families/evm/config.js +0 -63
- package/lib/families/evm/config.js.map +1 -1
- package/lib/families/solana/banner.test.js +0 -1
- package/lib/families/solana/banner.test.js.map +1 -1
- package/lib/wallet-api/Exchange/server.d.ts +1 -6
- package/lib/wallet-api/Exchange/server.d.ts.map +1 -1
- package/lib/wallet-api/Exchange/server.js +1 -11
- package/lib/wallet-api/Exchange/server.js.map +1 -1
- package/lib/wallet-api/Exchange/server.test.js +0 -2
- package/lib/wallet-api/Exchange/server.test.js.map +1 -1
- package/lib/wallet-api/constants.d.ts +1 -1
- package/lib-es/DataModel.d.ts.map +1 -1
- package/lib-es/DataModel.js +0 -8
- package/lib-es/DataModel.js.map +1 -1
- package/lib-es/DataModel.test.js +0 -46
- package/lib-es/DataModel.test.js.map +1 -1
- package/lib-es/families/evm/config.d.ts.map +1 -1
- package/lib-es/families/evm/config.js +0 -63
- package/lib-es/families/evm/config.js.map +1 -1
- package/lib-es/families/solana/banner.test.js +0 -1
- package/lib-es/families/solana/banner.test.js.map +1 -1
- package/lib-es/wallet-api/Exchange/server.d.ts +1 -6
- package/lib-es/wallet-api/Exchange/server.d.ts.map +1 -1
- package/lib-es/wallet-api/Exchange/server.js +1 -11
- package/lib-es/wallet-api/Exchange/server.js.map +1 -1
- package/lib-es/wallet-api/Exchange/server.test.js +0 -2
- package/lib-es/wallet-api/Exchange/server.test.js.map +1 -1
- package/lib-es/wallet-api/constants.d.ts +1 -1
- package/package.json +50 -50
- package/src/DataModel.test.ts +0 -51
- package/src/DataModel.ts +2 -8
- package/src/families/evm/config.ts +0 -63
- package/src/families/solana/banner.test.ts +0 -1
- package/src/wallet-api/Exchange/server.test.ts +0 -2
- package/src/wallet-api/Exchange/server.ts +0 -15
- package/lib/domain/getTokensWithFunds.d.ts +0 -3
- package/lib/domain/getTokensWithFunds.d.ts.map +0 -1
- package/lib/domain/getTokensWithFunds.js +0 -36
- package/lib/domain/getTokensWithFunds.js.map +0 -1
- package/lib/domain/getTokensWithFunds.test.d.ts +0 -2
- package/lib/domain/getTokensWithFunds.test.d.ts.map +0 -1
- package/lib/domain/getTokensWithFunds.test.js +0 -71
- package/lib/domain/getTokensWithFunds.test.js.map +0 -1
- package/lib/market/hooks/useLargeMoverDataProvider.d.ts +0 -17
- package/lib/market/hooks/useLargeMoverDataProvider.d.ts.map +0 -1
- package/lib/market/hooks/useLargeMoverDataProvider.js +0 -48
- package/lib/market/hooks/useLargeMoverDataProvider.js.map +0 -1
- package/lib-es/domain/getTokensWithFunds.d.ts +0 -3
- package/lib-es/domain/getTokensWithFunds.d.ts.map +0 -1
- package/lib-es/domain/getTokensWithFunds.js +0 -32
- package/lib-es/domain/getTokensWithFunds.js.map +0 -1
- package/lib-es/domain/getTokensWithFunds.test.d.ts +0 -2
- package/lib-es/domain/getTokensWithFunds.test.d.ts.map +0 -1
- package/lib-es/domain/getTokensWithFunds.test.js +0 -66
- package/lib-es/domain/getTokensWithFunds.test.js.map +0 -1
- package/lib-es/market/hooks/useLargeMoverDataProvider.d.ts +0 -17
- package/lib-es/market/hooks/useLargeMoverDataProvider.d.ts.map +0 -1
- package/lib-es/market/hooks/useLargeMoverDataProvider.js +0 -44
- package/lib-es/market/hooks/useLargeMoverDataProvider.js.map +0 -1
- package/src/domain/getTokensWithFunds.test.ts +0 -94
- package/src/domain/getTokensWithFunds.ts +0 -36
- package/src/market/hooks/useLargeMoverDataProvider.ts +0 -70
@@ -1,17 +0,0 @@
|
|
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
|
@@ -1 +0,0 @@
|
|
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"}
|
@@ -1,48 +0,0 @@
|
|
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
|
@@ -1 +0,0 @@
|
|
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"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"getTokensWithFunds.d.ts","sourceRoot":"","sources":["../../src/domain/getTokensWithFunds.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,eAAO,MAAM,kBAAkB,aAAc,OAAO,EAAE,KAAG,MAAM,EAgC9D,CAAC"}
|
@@ -1,32 +0,0 @@
|
|
1
|
-
import { getParentAccount } from "@ledgerhq/coin-framework/account/helpers";
|
2
|
-
export const getTokensWithFunds = (accounts) => {
|
3
|
-
if (!accounts?.length)
|
4
|
-
return [];
|
5
|
-
const tokensMap = new Map();
|
6
|
-
for (const account of accounts) {
|
7
|
-
const { balance, currency } = account || {};
|
8
|
-
if (!balance?.gt(0) || !currency)
|
9
|
-
continue;
|
10
|
-
const parentAccount = getParentAccount(account, accounts);
|
11
|
-
const networkName = parentAccount?.currency?.name;
|
12
|
-
if (!networkName)
|
13
|
-
continue;
|
14
|
-
const mainKey = `${currency.ticker}:${networkName}`;
|
15
|
-
tokensMap.set(mainKey, {
|
16
|
-
ticker: currency.ticker,
|
17
|
-
networkName,
|
18
|
-
});
|
19
|
-
account.subAccounts?.forEach(subAccount => {
|
20
|
-
const { balance, token } = subAccount || {};
|
21
|
-
if (!balance?.gt(0) || !token)
|
22
|
-
return;
|
23
|
-
const subKey = `${token.ticker}:${networkName}`;
|
24
|
-
tokensMap.set(subKey, {
|
25
|
-
ticker: token.ticker,
|
26
|
-
networkName,
|
27
|
-
});
|
28
|
-
});
|
29
|
-
}
|
30
|
-
return Array.from(tokensMap.values(), ({ ticker, networkName }) => `${ticker} on ${networkName}`);
|
31
|
-
};
|
32
|
-
//# sourceMappingURL=getTokensWithFunds.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"getTokensWithFunds.js","sourceRoot":"","sources":["../../src/domain/getTokensWithFunds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAG5E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,QAAmB,EAAY,EAAE;IAClE,IAAI,CAAC,QAAQ,EAAE,MAAM;QAAE,OAAO,EAAE,CAAC;IAEjC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAmD,CAAC;IAE7E,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC9B,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ;YAAE,SAAS;QAE3C,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC;QAClD,IAAI,CAAC,WAAW;YAAE,SAAS;QAE3B,MAAM,OAAO,GAAG,GAAG,QAAQ,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;QACpD,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE;YACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,WAAW;SACZ,CAAC,CAAC;QAEH,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE;YACxC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,UAAU,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO;YAEtC,MAAM,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;YAChD,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE;gBACpB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,WAAW;aACZ,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;KACJ;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,OAAO,WAAW,EAAE,CAAC,CAAC;AACpG,CAAC,CAAC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"getTokensWithFunds.test.d.ts","sourceRoot":"","sources":["../../src/domain/getTokensWithFunds.test.ts"],"names":[],"mappings":""}
|
@@ -1,66 +0,0 @@
|
|
1
|
-
import { genAccount } from "@ledgerhq/coin-framework/lib/mocks/account";
|
2
|
-
import { getCryptoCurrencyById } from "@ledgerhq/live-common/currencies/index";
|
3
|
-
import BigNumber from "bignumber.js";
|
4
|
-
import { getTokensWithFunds } from "./getTokensWithFunds";
|
5
|
-
const ETH = getCryptoCurrencyById("ethereum");
|
6
|
-
const mockedAccounts = [
|
7
|
-
genAccount("mocked-account-2", {
|
8
|
-
currency: ETH,
|
9
|
-
}),
|
10
|
-
];
|
11
|
-
describe("getTokensWithFunds", () => {
|
12
|
-
it("should return empty array if no accounts", () => {
|
13
|
-
const result = getTokensWithFunds([]);
|
14
|
-
expect(result).toEqual([]);
|
15
|
-
});
|
16
|
-
it("should return array with accounts with funds", () => {
|
17
|
-
const account = mockedAccounts[0];
|
18
|
-
const result = getTokensWithFunds(mockedAccounts);
|
19
|
-
expect(account.balance).toBeTruthy();
|
20
|
-
expect(account.balance instanceof BigNumber).toBe(true);
|
21
|
-
expect(account.balance.gt(0)).toBe(true);
|
22
|
-
expect(account.subAccounts).toBeDefined();
|
23
|
-
expect(account.subAccounts?.length).toBe(2);
|
24
|
-
const [zrxAccount, repAccount] = account.subAccounts || [];
|
25
|
-
expect(zrxAccount.balance).toBeTruthy();
|
26
|
-
expect(zrxAccount.balance instanceof BigNumber).toBe(true);
|
27
|
-
expect(zrxAccount.balance.gt(0)).toBe(true);
|
28
|
-
expect(repAccount.balance).toBeTruthy();
|
29
|
-
expect(repAccount.balance instanceof BigNumber).toBe(true);
|
30
|
-
expect(repAccount.balance.gt(0)).toBe(true);
|
31
|
-
expect(result).toEqual(["ETH on Ethereum", "ZRX on Ethereum", "REP on Ethereum"]);
|
32
|
-
});
|
33
|
-
it("should return array with accounts with funds", () => {
|
34
|
-
const account = mockedAccounts[0];
|
35
|
-
expect(account.balance).toBeTruthy();
|
36
|
-
expect(account.balance instanceof BigNumber).toBe(true);
|
37
|
-
expect(account.balance.gt(0)).toBe(true);
|
38
|
-
expect(account.subAccounts).toBeDefined();
|
39
|
-
expect(account.subAccounts?.length).toBe(2);
|
40
|
-
const [zrxAccount, repAccount] = account.subAccounts || [];
|
41
|
-
const emptyRepAccount = { ...repAccount, balance: new BigNumber(0) };
|
42
|
-
expect(zrxAccount.balance).toBeTruthy();
|
43
|
-
expect(zrxAccount.balance instanceof BigNumber).toBe(true);
|
44
|
-
expect(zrxAccount.balance.gt(0)).toBe(true);
|
45
|
-
expect(emptyRepAccount.balance).toBeTruthy();
|
46
|
-
expect(emptyRepAccount.balance instanceof BigNumber).toBe(true);
|
47
|
-
expect(emptyRepAccount.balance.gt(0)).toBe(false);
|
48
|
-
const accounts = { ...account, subAccounts: [zrxAccount, emptyRepAccount] };
|
49
|
-
const result = getTokensWithFunds([accounts]);
|
50
|
-
expect(result).toEqual(["ETH on Ethereum", "ZRX on Ethereum"]);
|
51
|
-
});
|
52
|
-
it("should return array with accounts with funds without duplication", () => {
|
53
|
-
const account = mockedAccounts[0];
|
54
|
-
expect(account.balance).toBeTruthy();
|
55
|
-
expect(account.balance instanceof BigNumber).toBe(true);
|
56
|
-
expect(account.balance.gt(0)).toBe(true);
|
57
|
-
expect(account.subAccounts).toBeDefined();
|
58
|
-
expect(account.subAccounts?.length).toBe(2);
|
59
|
-
const [zrxAccount, repAccount] = account.subAccounts || [];
|
60
|
-
const accounts = { ...account, subAccounts: [zrxAccount, repAccount, repAccount] };
|
61
|
-
expect(accounts.subAccounts.length).toBe(3);
|
62
|
-
const result = getTokensWithFunds([accounts]);
|
63
|
-
expect(result).toEqual(["ETH on Ethereum", "ZRX on Ethereum", "REP on Ethereum"]);
|
64
|
-
});
|
65
|
-
});
|
66
|
-
//# sourceMappingURL=getTokensWithFunds.test.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"getTokensWithFunds.test.js","sourceRoot":"","sources":["../../src/domain/getTokensWithFunds.test.ts"],"names":[],"mappings":"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"}
|
@@ -1,17 +0,0 @@
|
|
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
|
@@ -1 +0,0 @@
|
|
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"}
|
@@ -1,44 +0,0 @@
|
|
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
|
@@ -1 +0,0 @@
|
|
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"}
|
@@ -1,94 +0,0 @@
|
|
1
|
-
import { genAccount } from "@ledgerhq/coin-framework/lib/mocks/account";
|
2
|
-
import { getCryptoCurrencyById } from "@ledgerhq/live-common/currencies/index";
|
3
|
-
import { Account } from "@ledgerhq/types-live";
|
4
|
-
import BigNumber from "bignumber.js";
|
5
|
-
import { getTokensWithFunds } from "./getTokensWithFunds";
|
6
|
-
|
7
|
-
const ETH = getCryptoCurrencyById("ethereum");
|
8
|
-
|
9
|
-
const mockedAccounts: Account[] = [
|
10
|
-
genAccount("mocked-account-2", {
|
11
|
-
currency: ETH,
|
12
|
-
}),
|
13
|
-
];
|
14
|
-
|
15
|
-
describe("getTokensWithFunds", () => {
|
16
|
-
it("should return empty array if no accounts", () => {
|
17
|
-
const result = getTokensWithFunds([]);
|
18
|
-
expect(result).toEqual([]);
|
19
|
-
});
|
20
|
-
|
21
|
-
it("should return array with accounts with funds", () => {
|
22
|
-
const account = mockedAccounts[0];
|
23
|
-
const result = getTokensWithFunds(mockedAccounts);
|
24
|
-
|
25
|
-
expect(account.balance).toBeTruthy();
|
26
|
-
expect(account.balance instanceof BigNumber).toBe(true);
|
27
|
-
expect(account.balance.gt(0)).toBe(true);
|
28
|
-
|
29
|
-
expect(account.subAccounts).toBeDefined();
|
30
|
-
expect(account.subAccounts?.length).toBe(2);
|
31
|
-
|
32
|
-
const [zrxAccount, repAccount] = account.subAccounts || [];
|
33
|
-
|
34
|
-
expect(zrxAccount.balance).toBeTruthy();
|
35
|
-
expect(zrxAccount.balance instanceof BigNumber).toBe(true);
|
36
|
-
expect(zrxAccount.balance.gt(0)).toBe(true);
|
37
|
-
|
38
|
-
expect(repAccount.balance).toBeTruthy();
|
39
|
-
expect(repAccount.balance instanceof BigNumber).toBe(true);
|
40
|
-
expect(repAccount.balance.gt(0)).toBe(true);
|
41
|
-
|
42
|
-
expect(result).toEqual(["ETH on Ethereum", "ZRX on Ethereum", "REP on Ethereum"]);
|
43
|
-
});
|
44
|
-
|
45
|
-
it("should return array with accounts with funds", () => {
|
46
|
-
const account = mockedAccounts[0];
|
47
|
-
|
48
|
-
expect(account.balance).toBeTruthy();
|
49
|
-
expect(account.balance instanceof BigNumber).toBe(true);
|
50
|
-
expect(account.balance.gt(0)).toBe(true);
|
51
|
-
|
52
|
-
expect(account.subAccounts).toBeDefined();
|
53
|
-
expect(account.subAccounts?.length).toBe(2);
|
54
|
-
|
55
|
-
const [zrxAccount, repAccount] = account.subAccounts || [];
|
56
|
-
|
57
|
-
const emptyRepAccount = { ...repAccount, balance: new BigNumber(0) };
|
58
|
-
|
59
|
-
expect(zrxAccount.balance).toBeTruthy();
|
60
|
-
expect(zrxAccount.balance instanceof BigNumber).toBe(true);
|
61
|
-
expect(zrxAccount.balance.gt(0)).toBe(true);
|
62
|
-
|
63
|
-
expect(emptyRepAccount.balance).toBeTruthy();
|
64
|
-
expect(emptyRepAccount.balance instanceof BigNumber).toBe(true);
|
65
|
-
expect(emptyRepAccount.balance.gt(0)).toBe(false);
|
66
|
-
|
67
|
-
const accounts = { ...account, subAccounts: [zrxAccount, emptyRepAccount] };
|
68
|
-
|
69
|
-
const result = getTokensWithFunds([accounts]);
|
70
|
-
|
71
|
-
expect(result).toEqual(["ETH on Ethereum", "ZRX on Ethereum"]);
|
72
|
-
});
|
73
|
-
|
74
|
-
it("should return array with accounts with funds without duplication", () => {
|
75
|
-
const account = mockedAccounts[0];
|
76
|
-
|
77
|
-
expect(account.balance).toBeTruthy();
|
78
|
-
expect(account.balance instanceof BigNumber).toBe(true);
|
79
|
-
expect(account.balance.gt(0)).toBe(true);
|
80
|
-
|
81
|
-
expect(account.subAccounts).toBeDefined();
|
82
|
-
expect(account.subAccounts?.length).toBe(2);
|
83
|
-
|
84
|
-
const [zrxAccount, repAccount] = account.subAccounts || [];
|
85
|
-
|
86
|
-
const accounts = { ...account, subAccounts: [zrxAccount, repAccount, repAccount] };
|
87
|
-
|
88
|
-
expect(accounts.subAccounts.length).toBe(3);
|
89
|
-
|
90
|
-
const result = getTokensWithFunds([accounts]);
|
91
|
-
|
92
|
-
expect(result).toEqual(["ETH on Ethereum", "ZRX on Ethereum", "REP on Ethereum"]);
|
93
|
-
});
|
94
|
-
});
|
@@ -1,36 +0,0 @@
|
|
1
|
-
import { getParentAccount } from "@ledgerhq/coin-framework/account/helpers";
|
2
|
-
import { Account } from "@ledgerhq/types-live";
|
3
|
-
|
4
|
-
export const getTokensWithFunds = (accounts: Account[]): string[] => {
|
5
|
-
if (!accounts?.length) return [];
|
6
|
-
|
7
|
-
const tokensMap = new Map<string, { ticker: string; networkName: string }>();
|
8
|
-
|
9
|
-
for (const account of accounts) {
|
10
|
-
const { balance, currency } = account || {};
|
11
|
-
if (!balance?.gt(0) || !currency) continue;
|
12
|
-
|
13
|
-
const parentAccount = getParentAccount(account, accounts);
|
14
|
-
const networkName = parentAccount?.currency?.name;
|
15
|
-
if (!networkName) continue;
|
16
|
-
|
17
|
-
const mainKey = `${currency.ticker}:${networkName}`;
|
18
|
-
tokensMap.set(mainKey, {
|
19
|
-
ticker: currency.ticker,
|
20
|
-
networkName,
|
21
|
-
});
|
22
|
-
|
23
|
-
account.subAccounts?.forEach(subAccount => {
|
24
|
-
const { balance, token } = subAccount || {};
|
25
|
-
if (!balance?.gt(0) || !token) return;
|
26
|
-
|
27
|
-
const subKey = `${token.ticker}:${networkName}`;
|
28
|
-
tokensMap.set(subKey, {
|
29
|
-
ticker: token.ticker,
|
30
|
-
networkName,
|
31
|
-
});
|
32
|
-
});
|
33
|
-
}
|
34
|
-
|
35
|
-
return Array.from(tokensMap.values(), ({ ticker, networkName }) => `${ticker} on ${networkName}`);
|
36
|
-
};
|
@@ -1,70 +0,0 @@
|
|
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
|
-
};
|