@talismn/balances-react 0.0.0-pr610-20230310082812 → 0.0.0-pr611-20230313203313
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/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @talismn/balances-react
|
|
2
2
|
|
|
3
|
-
## 0.0.0-
|
|
3
|
+
## 0.0.0-pr611-20230313203313
|
|
4
4
|
|
|
5
5
|
### Minor Changes
|
|
6
6
|
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
- 6643a4e: fix: ported useDbCache related perf fixes to @talismn/balances-react
|
|
13
13
|
- Updated dependencies [6643a4e]
|
|
14
14
|
- Updated dependencies [6643a4e]
|
|
15
|
-
- @talismn/token-rates@0.0.0-
|
|
16
|
-
- @talismn/balances@0.0.0-
|
|
15
|
+
- @talismn/token-rates@0.0.0-pr611-20230313203313
|
|
16
|
+
- @talismn/balances@0.0.0-pr611-20230313203313
|
|
17
17
|
|
|
18
18
|
## 0.3.3
|
|
19
19
|
|
|
@@ -6,6 +6,7 @@ var react = require('react');
|
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
var chainConnector = require('@talismn/chain-connector');
|
|
8
8
|
var chainConnectorEvm = require('@talismn/chain-connector-evm');
|
|
9
|
+
var connectionMeta = require('@talismn/connection-meta');
|
|
9
10
|
var chaindataProviderExtension = require('@talismn/chaindata-provider-extension');
|
|
10
11
|
var balances = require('@talismn/balances');
|
|
11
12
|
var tokenRates = require('@talismn/token-rates');
|
|
@@ -73,7 +74,7 @@ function useChainConnectorsProvider(options) {
|
|
|
73
74
|
const chaindata = useChaindata();
|
|
74
75
|
|
|
75
76
|
// substrate connector
|
|
76
|
-
const substrate = react.useMemo(() => new chainConnector.ChainConnector(chaindata), [chaindata]);
|
|
77
|
+
const substrate = react.useMemo(() => new chainConnector.ChainConnector(chaindata, connectionMeta.connectionMetaDb), [chaindata]);
|
|
77
78
|
|
|
78
79
|
// evm connector
|
|
79
80
|
const evm = react.useMemo(() => new chainConnectorEvm.ChainConnectorEvm(chaindata, {
|
|
@@ -199,7 +200,7 @@ const [DbCacheProvider, useDbCache] = provideContext(useDbCacheProvider);
|
|
|
199
200
|
|
|
200
201
|
var packageJson = {
|
|
201
202
|
name: "@talismn/balances-react",
|
|
202
|
-
version: "0.0.0-
|
|
203
|
+
version: "0.0.0-pr611-20230313203313",
|
|
203
204
|
author: "Talisman",
|
|
204
205
|
homepage: "https://talisman.xyz",
|
|
205
206
|
license: "UNLICENSED",
|
|
@@ -230,6 +231,7 @@ var packageJson = {
|
|
|
230
231
|
"@talismn/chain-connector-evm": "workspace:^",
|
|
231
232
|
"@talismn/chaindata-provider": "workspace:^",
|
|
232
233
|
"@talismn/chaindata-provider-extension": "workspace:^",
|
|
234
|
+
"@talismn/connection-meta": "workspace:^",
|
|
233
235
|
"@talismn/token-rates": "workspace:^",
|
|
234
236
|
anylogger: "^1.0.11",
|
|
235
237
|
"blueimp-md5": "2.19.0",
|
|
@@ -442,8 +444,8 @@ function useDbCacheBalancesSubscription() {
|
|
|
442
444
|
}, [allAddresses, balanceModules, chainConnectors, chaindataProvider, tokens]);
|
|
443
445
|
const subscription = react.useCallback(() => {
|
|
444
446
|
if (!Object.values(tokens ?? {}).length || !allAddresses.length) return () => {};
|
|
445
|
-
return subscribeBalances(tokens ?? {}, allAddresses,
|
|
446
|
-
}, [allAddresses, balanceModules,
|
|
447
|
+
return subscribeBalances(tokens ?? {}, allAddresses, balanceModules);
|
|
448
|
+
}, [allAddresses, balanceModules, tokens]);
|
|
447
449
|
useSharedSubscription(subscriptionKey, subscription);
|
|
448
450
|
}
|
|
449
451
|
const subscribeChainDataHydrate = (provider, type) => {
|
|
@@ -501,7 +503,7 @@ const subscribeTokenRates = tokens => {
|
|
|
501
503
|
if (timeout) clearTimeout(timeout);
|
|
502
504
|
};
|
|
503
505
|
};
|
|
504
|
-
const subscribeBalances = (tokens, addresses,
|
|
506
|
+
const subscribeBalances = (tokens, addresses, balanceModules) => {
|
|
505
507
|
const tokenIds = Object.values(tokens).map(({
|
|
506
508
|
id
|
|
507
509
|
}) => id);
|
|
@@ -525,28 +527,41 @@ const subscribeBalances = (tokens, addresses, chainConnectors, provider, balance
|
|
|
525
527
|
id
|
|
526
528
|
}) => id);
|
|
527
529
|
const addressesByModuleToken = Object.fromEntries(Object.entries(addressesByToken).filter(([tokenId]) => moduleTokenIds.includes(tokenId)));
|
|
528
|
-
const unsub = balances.balances(balanceModule, addressesByModuleToken, (error, balances) => {
|
|
530
|
+
const unsub = balances.balances(balanceModule, addressesByModuleToken, (error, balances$1) => {
|
|
529
531
|
// log errors
|
|
530
|
-
if (error)
|
|
532
|
+
if (error) {
|
|
533
|
+
if ((error === null || error === void 0 ? void 0 : error.type) === "STALE_RPC_ERROR") return balances.db.balances.where({
|
|
534
|
+
source: balanceModule.type,
|
|
535
|
+
chainId: error.chainId
|
|
536
|
+
}).filter(balance => {
|
|
537
|
+
if (!Object.keys(addressesByModuleToken).includes(balance.tokenId)) return false;
|
|
538
|
+
if (!addressesByModuleToken[balance.tokenId].includes(balance.address)) return false;
|
|
539
|
+
return true;
|
|
540
|
+
}).modify({
|
|
541
|
+
status: "stale"
|
|
542
|
+
});
|
|
543
|
+
return log.error(`Failed to fetch ${balanceModule.type} balances`, error);
|
|
544
|
+
}
|
|
531
545
|
// ignore empty balance responses
|
|
532
|
-
if (!balances) return;
|
|
546
|
+
if (!balances$1) return;
|
|
533
547
|
// ignore balances from old subscriptions which are still in the process of unsubscribing
|
|
534
548
|
if (unsubscribed) return;
|
|
535
|
-
updateDb(balances);
|
|
549
|
+
updateDb(balances$1);
|
|
536
550
|
});
|
|
537
551
|
return () => {
|
|
538
552
|
// wait 2 seconds before actually unsubscribing, allowing for websocket to be reused
|
|
539
553
|
unsub.then(unsubscribe => {
|
|
540
554
|
setTimeout(unsubscribe, 2_000);
|
|
541
555
|
});
|
|
542
|
-
balances.db.
|
|
543
|
-
|
|
556
|
+
balances.db.balances.where({
|
|
557
|
+
source: balanceModule.type
|
|
558
|
+
}).filter(balance => {
|
|
544
559
|
if (!Object.keys(addressesByModuleToken).includes(balance.tokenId)) return false;
|
|
545
560
|
if (!addressesByModuleToken[balance.tokenId].includes(balance.address)) return false;
|
|
546
561
|
return true;
|
|
547
562
|
}).modify({
|
|
548
563
|
status: "cache"
|
|
549
|
-
})
|
|
564
|
+
});
|
|
550
565
|
};
|
|
551
566
|
});
|
|
552
567
|
const unsubscribeAll = () => {
|
|
@@ -6,6 +6,7 @@ var react = require('react');
|
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
var chainConnector = require('@talismn/chain-connector');
|
|
8
8
|
var chainConnectorEvm = require('@talismn/chain-connector-evm');
|
|
9
|
+
var connectionMeta = require('@talismn/connection-meta');
|
|
9
10
|
var chaindataProviderExtension = require('@talismn/chaindata-provider-extension');
|
|
10
11
|
var balances = require('@talismn/balances');
|
|
11
12
|
var tokenRates = require('@talismn/token-rates');
|
|
@@ -73,7 +74,7 @@ function useChainConnectorsProvider(options) {
|
|
|
73
74
|
const chaindata = useChaindata();
|
|
74
75
|
|
|
75
76
|
// substrate connector
|
|
76
|
-
const substrate = react.useMemo(() => new chainConnector.ChainConnector(chaindata), [chaindata]);
|
|
77
|
+
const substrate = react.useMemo(() => new chainConnector.ChainConnector(chaindata, connectionMeta.connectionMetaDb), [chaindata]);
|
|
77
78
|
|
|
78
79
|
// evm connector
|
|
79
80
|
const evm = react.useMemo(() => new chainConnectorEvm.ChainConnectorEvm(chaindata, {
|
|
@@ -199,7 +200,7 @@ const [DbCacheProvider, useDbCache] = provideContext(useDbCacheProvider);
|
|
|
199
200
|
|
|
200
201
|
var packageJson = {
|
|
201
202
|
name: "@talismn/balances-react",
|
|
202
|
-
version: "0.0.0-
|
|
203
|
+
version: "0.0.0-pr611-20230313203313",
|
|
203
204
|
author: "Talisman",
|
|
204
205
|
homepage: "https://talisman.xyz",
|
|
205
206
|
license: "UNLICENSED",
|
|
@@ -230,6 +231,7 @@ var packageJson = {
|
|
|
230
231
|
"@talismn/chain-connector-evm": "workspace:^",
|
|
231
232
|
"@talismn/chaindata-provider": "workspace:^",
|
|
232
233
|
"@talismn/chaindata-provider-extension": "workspace:^",
|
|
234
|
+
"@talismn/connection-meta": "workspace:^",
|
|
233
235
|
"@talismn/token-rates": "workspace:^",
|
|
234
236
|
anylogger: "^1.0.11",
|
|
235
237
|
"blueimp-md5": "2.19.0",
|
|
@@ -442,8 +444,8 @@ function useDbCacheBalancesSubscription() {
|
|
|
442
444
|
}, [allAddresses, balanceModules, chainConnectors, chaindataProvider, tokens]);
|
|
443
445
|
const subscription = react.useCallback(() => {
|
|
444
446
|
if (!Object.values(tokens ?? {}).length || !allAddresses.length) return () => {};
|
|
445
|
-
return subscribeBalances(tokens ?? {}, allAddresses,
|
|
446
|
-
}, [allAddresses, balanceModules,
|
|
447
|
+
return subscribeBalances(tokens ?? {}, allAddresses, balanceModules);
|
|
448
|
+
}, [allAddresses, balanceModules, tokens]);
|
|
447
449
|
useSharedSubscription(subscriptionKey, subscription);
|
|
448
450
|
}
|
|
449
451
|
const subscribeChainDataHydrate = (provider, type) => {
|
|
@@ -501,7 +503,7 @@ const subscribeTokenRates = tokens => {
|
|
|
501
503
|
if (timeout) clearTimeout(timeout);
|
|
502
504
|
};
|
|
503
505
|
};
|
|
504
|
-
const subscribeBalances = (tokens, addresses,
|
|
506
|
+
const subscribeBalances = (tokens, addresses, balanceModules) => {
|
|
505
507
|
const tokenIds = Object.values(tokens).map(({
|
|
506
508
|
id
|
|
507
509
|
}) => id);
|
|
@@ -525,28 +527,41 @@ const subscribeBalances = (tokens, addresses, chainConnectors, provider, balance
|
|
|
525
527
|
id
|
|
526
528
|
}) => id);
|
|
527
529
|
const addressesByModuleToken = Object.fromEntries(Object.entries(addressesByToken).filter(([tokenId]) => moduleTokenIds.includes(tokenId)));
|
|
528
|
-
const unsub = balances.balances(balanceModule, addressesByModuleToken, (error, balances) => {
|
|
530
|
+
const unsub = balances.balances(balanceModule, addressesByModuleToken, (error, balances$1) => {
|
|
529
531
|
// log errors
|
|
530
|
-
if (error)
|
|
532
|
+
if (error) {
|
|
533
|
+
if ((error === null || error === void 0 ? void 0 : error.type) === "STALE_RPC_ERROR") return balances.db.balances.where({
|
|
534
|
+
source: balanceModule.type,
|
|
535
|
+
chainId: error.chainId
|
|
536
|
+
}).filter(balance => {
|
|
537
|
+
if (!Object.keys(addressesByModuleToken).includes(balance.tokenId)) return false;
|
|
538
|
+
if (!addressesByModuleToken[balance.tokenId].includes(balance.address)) return false;
|
|
539
|
+
return true;
|
|
540
|
+
}).modify({
|
|
541
|
+
status: "stale"
|
|
542
|
+
});
|
|
543
|
+
return log.error(`Failed to fetch ${balanceModule.type} balances`, error);
|
|
544
|
+
}
|
|
531
545
|
// ignore empty balance responses
|
|
532
|
-
if (!balances) return;
|
|
546
|
+
if (!balances$1) return;
|
|
533
547
|
// ignore balances from old subscriptions which are still in the process of unsubscribing
|
|
534
548
|
if (unsubscribed) return;
|
|
535
|
-
updateDb(balances);
|
|
549
|
+
updateDb(balances$1);
|
|
536
550
|
});
|
|
537
551
|
return () => {
|
|
538
552
|
// wait 2 seconds before actually unsubscribing, allowing for websocket to be reused
|
|
539
553
|
unsub.then(unsubscribe => {
|
|
540
554
|
setTimeout(unsubscribe, 2_000);
|
|
541
555
|
});
|
|
542
|
-
balances.db.
|
|
543
|
-
|
|
556
|
+
balances.db.balances.where({
|
|
557
|
+
source: balanceModule.type
|
|
558
|
+
}).filter(balance => {
|
|
544
559
|
if (!Object.keys(addressesByModuleToken).includes(balance.tokenId)) return false;
|
|
545
560
|
if (!addressesByModuleToken[balance.tokenId].includes(balance.address)) return false;
|
|
546
561
|
return true;
|
|
547
562
|
}).modify({
|
|
548
563
|
status: "cache"
|
|
549
|
-
})
|
|
564
|
+
});
|
|
550
565
|
};
|
|
551
566
|
});
|
|
552
567
|
const unsubscribeAll = () => {
|
|
@@ -2,6 +2,7 @@ import { useContext, createContext, useState, useEffect, useMemo, useRef, useCal
|
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
3
|
import { ChainConnector } from '@talismn/chain-connector';
|
|
4
4
|
import { ChainConnectorEvm } from '@talismn/chain-connector-evm';
|
|
5
|
+
import { connectionMetaDb } from '@talismn/connection-meta';
|
|
5
6
|
import { ChaindataProviderExtension } from '@talismn/chaindata-provider-extension';
|
|
6
7
|
import { db as db$1, balances, Balances } from '@talismn/balances';
|
|
7
8
|
import { db, fetchTokenRates } from '@talismn/token-rates';
|
|
@@ -64,7 +65,7 @@ function useChainConnectorsProvider(options) {
|
|
|
64
65
|
const chaindata = useChaindata();
|
|
65
66
|
|
|
66
67
|
// substrate connector
|
|
67
|
-
const substrate = useMemo(() => new ChainConnector(chaindata), [chaindata]);
|
|
68
|
+
const substrate = useMemo(() => new ChainConnector(chaindata, connectionMetaDb), [chaindata]);
|
|
68
69
|
|
|
69
70
|
// evm connector
|
|
70
71
|
const evm = useMemo(() => new ChainConnectorEvm(chaindata, {
|
|
@@ -190,7 +191,7 @@ const [DbCacheProvider, useDbCache] = provideContext(useDbCacheProvider);
|
|
|
190
191
|
|
|
191
192
|
var packageJson = {
|
|
192
193
|
name: "@talismn/balances-react",
|
|
193
|
-
version: "0.0.0-
|
|
194
|
+
version: "0.0.0-pr611-20230313203313",
|
|
194
195
|
author: "Talisman",
|
|
195
196
|
homepage: "https://talisman.xyz",
|
|
196
197
|
license: "UNLICENSED",
|
|
@@ -221,6 +222,7 @@ var packageJson = {
|
|
|
221
222
|
"@talismn/chain-connector-evm": "workspace:^",
|
|
222
223
|
"@talismn/chaindata-provider": "workspace:^",
|
|
223
224
|
"@talismn/chaindata-provider-extension": "workspace:^",
|
|
225
|
+
"@talismn/connection-meta": "workspace:^",
|
|
224
226
|
"@talismn/token-rates": "workspace:^",
|
|
225
227
|
anylogger: "^1.0.11",
|
|
226
228
|
"blueimp-md5": "2.19.0",
|
|
@@ -433,8 +435,8 @@ function useDbCacheBalancesSubscription() {
|
|
|
433
435
|
}, [allAddresses, balanceModules, chainConnectors, chaindataProvider, tokens]);
|
|
434
436
|
const subscription = useCallback(() => {
|
|
435
437
|
if (!Object.values(tokens ?? {}).length || !allAddresses.length) return () => {};
|
|
436
|
-
return subscribeBalances(tokens ?? {}, allAddresses,
|
|
437
|
-
}, [allAddresses, balanceModules,
|
|
438
|
+
return subscribeBalances(tokens ?? {}, allAddresses, balanceModules);
|
|
439
|
+
}, [allAddresses, balanceModules, tokens]);
|
|
438
440
|
useSharedSubscription(subscriptionKey, subscription);
|
|
439
441
|
}
|
|
440
442
|
const subscribeChainDataHydrate = (provider, type) => {
|
|
@@ -492,7 +494,7 @@ const subscribeTokenRates = tokens => {
|
|
|
492
494
|
if (timeout) clearTimeout(timeout);
|
|
493
495
|
};
|
|
494
496
|
};
|
|
495
|
-
const subscribeBalances = (tokens, addresses,
|
|
497
|
+
const subscribeBalances = (tokens, addresses, balanceModules) => {
|
|
496
498
|
const tokenIds = Object.values(tokens).map(({
|
|
497
499
|
id
|
|
498
500
|
}) => id);
|
|
@@ -518,7 +520,19 @@ const subscribeBalances = (tokens, addresses, chainConnectors, provider, balance
|
|
|
518
520
|
const addressesByModuleToken = Object.fromEntries(Object.entries(addressesByToken).filter(([tokenId]) => moduleTokenIds.includes(tokenId)));
|
|
519
521
|
const unsub = balances(balanceModule, addressesByModuleToken, (error, balances) => {
|
|
520
522
|
// log errors
|
|
521
|
-
if (error)
|
|
523
|
+
if (error) {
|
|
524
|
+
if ((error === null || error === void 0 ? void 0 : error.type) === "STALE_RPC_ERROR") return db$1.balances.where({
|
|
525
|
+
source: balanceModule.type,
|
|
526
|
+
chainId: error.chainId
|
|
527
|
+
}).filter(balance => {
|
|
528
|
+
if (!Object.keys(addressesByModuleToken).includes(balance.tokenId)) return false;
|
|
529
|
+
if (!addressesByModuleToken[balance.tokenId].includes(balance.address)) return false;
|
|
530
|
+
return true;
|
|
531
|
+
}).modify({
|
|
532
|
+
status: "stale"
|
|
533
|
+
});
|
|
534
|
+
return log.error(`Failed to fetch ${balanceModule.type} balances`, error);
|
|
535
|
+
}
|
|
522
536
|
// ignore empty balance responses
|
|
523
537
|
if (!balances) return;
|
|
524
538
|
// ignore balances from old subscriptions which are still in the process of unsubscribing
|
|
@@ -530,14 +544,15 @@ const subscribeBalances = (tokens, addresses, chainConnectors, provider, balance
|
|
|
530
544
|
unsub.then(unsubscribe => {
|
|
531
545
|
setTimeout(unsubscribe, 2_000);
|
|
532
546
|
});
|
|
533
|
-
db$1.
|
|
534
|
-
|
|
547
|
+
db$1.balances.where({
|
|
548
|
+
source: balanceModule.type
|
|
549
|
+
}).filter(balance => {
|
|
535
550
|
if (!Object.keys(addressesByModuleToken).includes(balance.tokenId)) return false;
|
|
536
551
|
if (!addressesByModuleToken[balance.tokenId].includes(balance.address)) return false;
|
|
537
552
|
return true;
|
|
538
553
|
}).modify({
|
|
539
554
|
status: "cache"
|
|
540
|
-
})
|
|
555
|
+
});
|
|
541
556
|
};
|
|
542
557
|
});
|
|
543
558
|
const unsubscribeAll = () => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@talismn/balances-react",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-pr611-20230313203313",
|
|
4
4
|
"author": "Talisman",
|
|
5
5
|
"homepage": "https://talisman.xyz",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -26,12 +26,13 @@
|
|
|
26
26
|
"clean": "rm -rf dist && rm -rf .turbo rm -rf node_modules"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@talismn/balances": "^0.0.0-
|
|
29
|
+
"@talismn/balances": "^0.0.0-pr611-20230313203313",
|
|
30
30
|
"@talismn/chain-connector": "^0.4.2",
|
|
31
31
|
"@talismn/chain-connector-evm": "^0.4.2",
|
|
32
32
|
"@talismn/chaindata-provider": "^0.4.2",
|
|
33
33
|
"@talismn/chaindata-provider-extension": "^0.4.2",
|
|
34
|
-
"@talismn/
|
|
34
|
+
"@talismn/connection-meta": "^0.0.1",
|
|
35
|
+
"@talismn/token-rates": "^0.0.0-pr611-20230313203313",
|
|
35
36
|
"anylogger": "^1.0.11",
|
|
36
37
|
"blueimp-md5": "2.19.0",
|
|
37
38
|
"dexie": "^3.2.3",
|