@talismn/balances-react 0.9.0 → 0.9.1
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.
@@ -1,11 +1,12 @@
|
|
1
1
|
import { AnyBalanceModule, Hydrate } from "@talismn/balances";
|
2
|
+
import { CoinsApiConfig } from "@talismn/token-rates";
|
2
3
|
export declare const balanceModuleCreatorsAtom: import("jotai").PrimitiveAtom<((hydrate: Hydrate) => AnyBalanceModule)[]> & {
|
3
4
|
init: ((hydrate: Hydrate) => AnyBalanceModule)[];
|
4
5
|
};
|
5
6
|
export declare const onfinalityApiKeyAtom: import("jotai").PrimitiveAtom<string | undefined> & {
|
6
7
|
init: string | undefined;
|
7
8
|
};
|
8
|
-
export declare const
|
9
|
+
export declare const coinsApiConfigAtom: import("jotai").WritableAtom<CoinsApiConfig, [Partial<CoinsApiConfig>], void>;
|
9
10
|
export declare const enableTestnetsAtom: import("jotai").PrimitiveAtom<boolean> & {
|
10
11
|
init: boolean;
|
11
12
|
};
|
@@ -23,9 +23,7 @@ export type BalancesConfig = {
|
|
23
23
|
* This key will be used in place of any public onfinality RPCs
|
24
24
|
*/
|
25
25
|
onfinalityApiKey?: string;
|
26
|
-
|
27
|
-
coingeckoApiKeyName?: string;
|
28
|
-
coingeckoApiKeyValue?: string;
|
26
|
+
coinsApiUrl?: string;
|
29
27
|
/** Enables balances fetching for tokens on testnet chains. */
|
30
28
|
withTestnets?: boolean;
|
31
29
|
/**
|
@@ -77,4 +75,4 @@ export type BalancesConfig = {
|
|
77
75
|
enabledTokens?: string[];
|
78
76
|
children?: ReactNode;
|
79
77
|
};
|
80
|
-
export declare const BalancesProvider: ({ balanceModules, onfinalityApiKey,
|
78
|
+
export declare const BalancesProvider: ({ balanceModules, onfinalityApiKey, coinsApiUrl, withTestnets, enabledChains, enabledTokens, children, }: BalancesConfig) => import("react/jsx-runtime").JSX.Element;
|
@@ -26,17 +26,10 @@ var isEqual__default = /*#__PURE__*/_interopDefault(isEqual);
|
|
26
26
|
|
27
27
|
const balanceModuleCreatorsAtom = jotai.atom(balances.defaultBalanceModules);
|
28
28
|
const onfinalityApiKeyAtom = jotai.atom(undefined);
|
29
|
-
const
|
30
|
-
const
|
31
|
-
|
32
|
-
|
33
|
-
const apiKeyValue = options.apiKeyValue ?? tokenRates.DEFAULT_COINGECKO_CONFIG.apiKeyValue;
|
34
|
-
set(innerCoingeckoConfigAtom, {
|
35
|
-
apiUrl,
|
36
|
-
apiKeyName,
|
37
|
-
apiKeyValue
|
38
|
-
});
|
39
|
-
});
|
29
|
+
const innerCoinsApiConfigAtom = jotai.atom(tokenRates.DEFAULT_COINSAPI_CONFIG);
|
30
|
+
const coinsApiConfigAtom = jotai.atom(get => get(innerCoinsApiConfigAtom), (_get, set, options) => set(innerCoinsApiConfigAtom, {
|
31
|
+
apiUrl: options.apiUrl ?? tokenRates.DEFAULT_COINSAPI_CONFIG.apiUrl
|
32
|
+
}));
|
40
33
|
const enableTestnetsAtom = jotai.atom(false);
|
41
34
|
const enabledChainsAtom = jotai.atom(undefined);
|
42
35
|
const enabledTokensAtom = jotai.atom(undefined);
|
@@ -249,7 +242,7 @@ const tokenRatesFetcherAtomEffect = jotaiEffect.atomEffect(get => {
|
|
249
242
|
const abort = new AbortController();
|
250
243
|
|
251
244
|
// we have to get these synchronously so that jotai knows to restart our timer when they change
|
252
|
-
const
|
245
|
+
const coinsApiConfig = get(coinsApiConfigAtom);
|
253
246
|
const tokensByIdPromise = get(tokensByIdAtom);
|
254
247
|
(async () => {
|
255
248
|
const tokensById = await tokensByIdPromise;
|
@@ -260,7 +253,7 @@ const tokenRatesFetcherAtomEffect = jotaiEffect.atomEffect(get => {
|
|
260
253
|
const hydrate = async () => {
|
261
254
|
try {
|
262
255
|
if (abort.signal.aborted) return; // don't fetch if aborted
|
263
|
-
const tokenRates$1 = await tokenRates.fetchTokenRates(tokensById,
|
256
|
+
const tokenRates$1 = await tokenRates.fetchTokenRates(tokensById, tokenRates.ALL_CURRENCY_IDS, coinsApiConfig);
|
264
257
|
const putTokenRates = Object.entries(tokenRates$1).map(([tokenId, rates]) => ({
|
265
258
|
tokenId,
|
266
259
|
rates
|
@@ -576,9 +569,7 @@ const useTokenRate = tokenId => useTokenRates()[tokenId ?? ""] ?? undefined;
|
|
576
569
|
const BalancesProvider = ({
|
577
570
|
balanceModules,
|
578
571
|
onfinalityApiKey,
|
579
|
-
|
580
|
-
coingeckoApiKeyName,
|
581
|
-
coingeckoApiKeyValue,
|
572
|
+
coinsApiUrl,
|
582
573
|
withTestnets,
|
583
574
|
enabledChains,
|
584
575
|
enabledTokens,
|
@@ -592,14 +583,12 @@ const BalancesProvider = ({
|
|
592
583
|
react.useEffect(() => {
|
593
584
|
setOnfinalityApiKey(onfinalityApiKey);
|
594
585
|
}, [onfinalityApiKey, setOnfinalityApiKey]);
|
595
|
-
const
|
586
|
+
const setCoinsApiConfig = jotai.useSetAtom(coinsApiConfigAtom);
|
596
587
|
react.useEffect(() => {
|
597
|
-
|
598
|
-
apiUrl:
|
599
|
-
apiKeyName: coingeckoApiKeyName,
|
600
|
-
apiKeyValue: coingeckoApiKeyValue
|
588
|
+
setCoinsApiConfig({
|
589
|
+
apiUrl: coinsApiUrl
|
601
590
|
});
|
602
|
-
}, [
|
591
|
+
}, [coinsApiUrl, setCoinsApiConfig]);
|
603
592
|
const setEnableTestnets = jotai.useSetAtom(enableTestnetsAtom);
|
604
593
|
react.useEffect(() => {
|
605
594
|
setEnableTestnets(withTestnets ?? false);
|
@@ -657,7 +646,7 @@ exports.chaindataProviderAtom = chaindataProviderAtom;
|
|
657
646
|
exports.chainsAtom = chainsAtom;
|
658
647
|
exports.chainsByGenesisHashAtom = chainsByGenesisHashAtom;
|
659
648
|
exports.chainsByIdAtom = chainsByIdAtom;
|
660
|
-
exports.
|
649
|
+
exports.coinsApiConfigAtom = coinsApiConfigAtom;
|
661
650
|
exports.cryptoWaitReadyAtom = cryptoWaitReadyAtom;
|
662
651
|
exports.enableTestnetsAtom = enableTestnetsAtom;
|
663
652
|
exports.enabledChainsAtom = enabledChainsAtom;
|
@@ -26,17 +26,10 @@ var isEqual__default = /*#__PURE__*/_interopDefault(isEqual);
|
|
26
26
|
|
27
27
|
const balanceModuleCreatorsAtom = jotai.atom(balances.defaultBalanceModules);
|
28
28
|
const onfinalityApiKeyAtom = jotai.atom(undefined);
|
29
|
-
const
|
30
|
-
const
|
31
|
-
|
32
|
-
|
33
|
-
const apiKeyValue = options.apiKeyValue ?? tokenRates.DEFAULT_COINGECKO_CONFIG.apiKeyValue;
|
34
|
-
set(innerCoingeckoConfigAtom, {
|
35
|
-
apiUrl,
|
36
|
-
apiKeyName,
|
37
|
-
apiKeyValue
|
38
|
-
});
|
39
|
-
});
|
29
|
+
const innerCoinsApiConfigAtom = jotai.atom(tokenRates.DEFAULT_COINSAPI_CONFIG);
|
30
|
+
const coinsApiConfigAtom = jotai.atom(get => get(innerCoinsApiConfigAtom), (_get, set, options) => set(innerCoinsApiConfigAtom, {
|
31
|
+
apiUrl: options.apiUrl ?? tokenRates.DEFAULT_COINSAPI_CONFIG.apiUrl
|
32
|
+
}));
|
40
33
|
const enableTestnetsAtom = jotai.atom(false);
|
41
34
|
const enabledChainsAtom = jotai.atom(undefined);
|
42
35
|
const enabledTokensAtom = jotai.atom(undefined);
|
@@ -249,7 +242,7 @@ const tokenRatesFetcherAtomEffect = jotaiEffect.atomEffect(get => {
|
|
249
242
|
const abort = new AbortController();
|
250
243
|
|
251
244
|
// we have to get these synchronously so that jotai knows to restart our timer when they change
|
252
|
-
const
|
245
|
+
const coinsApiConfig = get(coinsApiConfigAtom);
|
253
246
|
const tokensByIdPromise = get(tokensByIdAtom);
|
254
247
|
(async () => {
|
255
248
|
const tokensById = await tokensByIdPromise;
|
@@ -260,7 +253,7 @@ const tokenRatesFetcherAtomEffect = jotaiEffect.atomEffect(get => {
|
|
260
253
|
const hydrate = async () => {
|
261
254
|
try {
|
262
255
|
if (abort.signal.aborted) return; // don't fetch if aborted
|
263
|
-
const tokenRates$1 = await tokenRates.fetchTokenRates(tokensById,
|
256
|
+
const tokenRates$1 = await tokenRates.fetchTokenRates(tokensById, tokenRates.ALL_CURRENCY_IDS, coinsApiConfig);
|
264
257
|
const putTokenRates = Object.entries(tokenRates$1).map(([tokenId, rates]) => ({
|
265
258
|
tokenId,
|
266
259
|
rates
|
@@ -576,9 +569,7 @@ const useTokenRate = tokenId => useTokenRates()[tokenId ?? ""] ?? undefined;
|
|
576
569
|
const BalancesProvider = ({
|
577
570
|
balanceModules,
|
578
571
|
onfinalityApiKey,
|
579
|
-
|
580
|
-
coingeckoApiKeyName,
|
581
|
-
coingeckoApiKeyValue,
|
572
|
+
coinsApiUrl,
|
582
573
|
withTestnets,
|
583
574
|
enabledChains,
|
584
575
|
enabledTokens,
|
@@ -592,14 +583,12 @@ const BalancesProvider = ({
|
|
592
583
|
react.useEffect(() => {
|
593
584
|
setOnfinalityApiKey(onfinalityApiKey);
|
594
585
|
}, [onfinalityApiKey, setOnfinalityApiKey]);
|
595
|
-
const
|
586
|
+
const setCoinsApiConfig = jotai.useSetAtom(coinsApiConfigAtom);
|
596
587
|
react.useEffect(() => {
|
597
|
-
|
598
|
-
apiUrl:
|
599
|
-
apiKeyName: coingeckoApiKeyName,
|
600
|
-
apiKeyValue: coingeckoApiKeyValue
|
588
|
+
setCoinsApiConfig({
|
589
|
+
apiUrl: coinsApiUrl
|
601
590
|
});
|
602
|
-
}, [
|
591
|
+
}, [coinsApiUrl, setCoinsApiConfig]);
|
603
592
|
const setEnableTestnets = jotai.useSetAtom(enableTestnetsAtom);
|
604
593
|
react.useEffect(() => {
|
605
594
|
setEnableTestnets(withTestnets ?? false);
|
@@ -657,7 +646,7 @@ exports.chaindataProviderAtom = chaindataProviderAtom;
|
|
657
646
|
exports.chainsAtom = chainsAtom;
|
658
647
|
exports.chainsByGenesisHashAtom = chainsByGenesisHashAtom;
|
659
648
|
exports.chainsByIdAtom = chainsByIdAtom;
|
660
|
-
exports.
|
649
|
+
exports.coinsApiConfigAtom = coinsApiConfigAtom;
|
661
650
|
exports.cryptoWaitReadyAtom = cryptoWaitReadyAtom;
|
662
651
|
exports.enableTestnetsAtom = enableTestnetsAtom;
|
663
652
|
exports.enabledChainsAtom = enabledChainsAtom;
|
@@ -2,7 +2,7 @@ import { atom, useSetAtom, useAtom, useAtomValue } from 'jotai';
|
|
2
2
|
import { useMemo, useEffect } from 'react';
|
3
3
|
import { defaultBalanceModules, configureStore, decompress, compress, MiniMetadataUpdater, EvmTokenFetcher, hydrateChaindataAndMiniMetadata, updateCustomMiniMetadata, updateEvmTokens, db, Balances, getBalanceId, balances } from '@talismn/balances';
|
4
4
|
export { evmErc20TokenId, evmNativeTokenId, subAssetTokenId, subEquilibriumTokenId, subNativeTokenId, subPsp22TokenId, subTokensTokenId } from '@talismn/balances';
|
5
|
-
import {
|
5
|
+
import { DEFAULT_COINSAPI_CONFIG, db as db$1, fetchTokenRates, ALL_CURRENCY_IDS } from '@talismn/token-rates';
|
6
6
|
import { jsx, Fragment } from 'react/jsx-runtime';
|
7
7
|
import { firstThenDebounce, isTruthy, isEthereumAddress } from '@talismn/util';
|
8
8
|
import { atomEffect } from 'jotai-effect';
|
@@ -20,17 +20,10 @@ import isEqual from 'lodash/isEqual';
|
|
20
20
|
|
21
21
|
const balanceModuleCreatorsAtom = atom(defaultBalanceModules);
|
22
22
|
const onfinalityApiKeyAtom = atom(undefined);
|
23
|
-
const
|
24
|
-
const
|
25
|
-
|
26
|
-
|
27
|
-
const apiKeyValue = options.apiKeyValue ?? DEFAULT_COINGECKO_CONFIG.apiKeyValue;
|
28
|
-
set(innerCoingeckoConfigAtom, {
|
29
|
-
apiUrl,
|
30
|
-
apiKeyName,
|
31
|
-
apiKeyValue
|
32
|
-
});
|
33
|
-
});
|
23
|
+
const innerCoinsApiConfigAtom = atom(DEFAULT_COINSAPI_CONFIG);
|
24
|
+
const coinsApiConfigAtom = atom(get => get(innerCoinsApiConfigAtom), (_get, set, options) => set(innerCoinsApiConfigAtom, {
|
25
|
+
apiUrl: options.apiUrl ?? DEFAULT_COINSAPI_CONFIG.apiUrl
|
26
|
+
}));
|
34
27
|
const enableTestnetsAtom = atom(false);
|
35
28
|
const enabledChainsAtom = atom(undefined);
|
36
29
|
const enabledTokensAtom = atom(undefined);
|
@@ -243,7 +236,7 @@ const tokenRatesFetcherAtomEffect = atomEffect(get => {
|
|
243
236
|
const abort = new AbortController();
|
244
237
|
|
245
238
|
// we have to get these synchronously so that jotai knows to restart our timer when they change
|
246
|
-
const
|
239
|
+
const coinsApiConfig = get(coinsApiConfigAtom);
|
247
240
|
const tokensByIdPromise = get(tokensByIdAtom);
|
248
241
|
(async () => {
|
249
242
|
const tokensById = await tokensByIdPromise;
|
@@ -254,7 +247,7 @@ const tokenRatesFetcherAtomEffect = atomEffect(get => {
|
|
254
247
|
const hydrate = async () => {
|
255
248
|
try {
|
256
249
|
if (abort.signal.aborted) return; // don't fetch if aborted
|
257
|
-
const tokenRates = await fetchTokenRates(tokensById,
|
250
|
+
const tokenRates = await fetchTokenRates(tokensById, ALL_CURRENCY_IDS, coinsApiConfig);
|
258
251
|
const putTokenRates = Object.entries(tokenRates).map(([tokenId, rates]) => ({
|
259
252
|
tokenId,
|
260
253
|
rates
|
@@ -570,9 +563,7 @@ const useTokenRate = tokenId => useTokenRates()[tokenId ?? ""] ?? undefined;
|
|
570
563
|
const BalancesProvider = ({
|
571
564
|
balanceModules,
|
572
565
|
onfinalityApiKey,
|
573
|
-
|
574
|
-
coingeckoApiKeyName,
|
575
|
-
coingeckoApiKeyValue,
|
566
|
+
coinsApiUrl,
|
576
567
|
withTestnets,
|
577
568
|
enabledChains,
|
578
569
|
enabledTokens,
|
@@ -586,14 +577,12 @@ const BalancesProvider = ({
|
|
586
577
|
useEffect(() => {
|
587
578
|
setOnfinalityApiKey(onfinalityApiKey);
|
588
579
|
}, [onfinalityApiKey, setOnfinalityApiKey]);
|
589
|
-
const
|
580
|
+
const setCoinsApiConfig = useSetAtom(coinsApiConfigAtom);
|
590
581
|
useEffect(() => {
|
591
|
-
|
592
|
-
apiUrl:
|
593
|
-
apiKeyName: coingeckoApiKeyName,
|
594
|
-
apiKeyValue: coingeckoApiKeyValue
|
582
|
+
setCoinsApiConfig({
|
583
|
+
apiUrl: coinsApiUrl
|
595
584
|
});
|
596
|
-
}, [
|
585
|
+
}, [coinsApiUrl, setCoinsApiConfig]);
|
597
586
|
const setEnableTestnets = useSetAtom(enableTestnetsAtom);
|
598
587
|
useEffect(() => {
|
599
588
|
setEnableTestnets(withTestnets ?? false);
|
@@ -611,4 +600,4 @@ const BalancesProvider = ({
|
|
611
600
|
});
|
612
601
|
};
|
613
602
|
|
614
|
-
export { BalancesProvider, allAddressesAtom, allBalancesAtom, balanceModuleCreatorsAtom, balanceModulesAtom, balancesPersistBackendAtom, chainConnectorsAtom, chaindataAtom, chaindataProviderAtom, chainsAtom, chainsByGenesisHashAtom, chainsByIdAtom,
|
603
|
+
export { BalancesProvider, allAddressesAtom, allBalancesAtom, balanceModuleCreatorsAtom, balanceModulesAtom, balancesPersistBackendAtom, chainConnectorsAtom, chaindataAtom, chaindataProviderAtom, chainsAtom, chainsByGenesisHashAtom, chainsByIdAtom, coinsApiConfigAtom, cryptoWaitReadyAtom, enableTestnetsAtom, enabledChainsAtom, enabledTokensAtom, evmNetworksAtom, evmNetworksByIdAtom, getStaleChains, miniMetadataHydratedAtom, miniMetadatasAtom, onfinalityApiKeyAtom, tokenRatesAtom, tokensAtom, tokensByIdAtom, useBalances, useBalancesStatus, useChain, useChainConnectors, useChaindata, useChaindataProvider, useChains, useChainsByGenesisHash, useEvmNetwork, useEvmNetworks, useMiniMetadatas, useSetBalancesAddresses, useToken, useTokenRate, useTokenRates, useTokens };
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@talismn/balances-react",
|
3
|
-
"version": "0.9.
|
3
|
+
"version": "0.9.1",
|
4
4
|
"author": "Talisman",
|
5
5
|
"homepage": "https://talisman.xyz",
|
6
6
|
"license": "GPL-3.0-or-later",
|
@@ -30,14 +30,14 @@
|
|
30
30
|
"lodash": "4.17.21",
|
31
31
|
"react-use": "^17.5.1",
|
32
32
|
"rxjs": "^7.8.1",
|
33
|
-
"@talismn/balances": "0.9.
|
34
|
-
"@talismn/chain-connector": "0.
|
35
|
-
"@talismn/chaindata-provider": "0.
|
36
|
-
"@talismn/
|
37
|
-
"@talismn/connection-meta": "0.2.5",
|
33
|
+
"@talismn/balances": "0.9.1",
|
34
|
+
"@talismn/chain-connector": "0.10.0",
|
35
|
+
"@talismn/chaindata-provider": "0.10.0",
|
36
|
+
"@talismn/connection-meta": "0.2.6",
|
38
37
|
"@talismn/scale": "0.1.1",
|
39
|
-
"@talismn/
|
40
|
-
"@talismn/
|
38
|
+
"@talismn/chain-connector-evm": "0.10.0",
|
39
|
+
"@talismn/token-rates": "2.0.1",
|
40
|
+
"@talismn/util": "0.4.0"
|
41
41
|
},
|
42
42
|
"devDependencies": {
|
43
43
|
"@types/jest": "^29.5.14",
|