@talismn/balances-react 0.0.0-pr610-20230310075120 → 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-pr610-20230310075120
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-pr610-20230310075120
16
- - @talismn/balances@0.0.0-pr610-20230310075120
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-pr610-20230310075120",
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, chainConnectors, chaindataProvider, balanceModules);
446
- }, [allAddresses, balanceModules, chainConnectors, chaindataProvider, tokens]);
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, chainConnectors, provider, balanceModules) => {
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) return log.error(`Failed to fetch ${balanceModule.type} balances`, 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.transaction("rw", balances.db.balances, async () => await balances.db.balances.filter(balance => {
543
- if (balance.source !== balanceModule.type) return false;
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-pr610-20230310075120",
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, chainConnectors, chaindataProvider, balanceModules);
446
- }, [allAddresses, balanceModules, chainConnectors, chaindataProvider, tokens]);
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, chainConnectors, provider, balanceModules) => {
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) return log.error(`Failed to fetch ${balanceModule.type} balances`, 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.transaction("rw", balances.db.balances, async () => await balances.db.balances.filter(balance => {
543
- if (balance.source !== balanceModule.type) return false;
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-pr610-20230310075120",
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, chainConnectors, chaindataProvider, balanceModules);
437
- }, [allAddresses, balanceModules, chainConnectors, chaindataProvider, tokens]);
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, chainConnectors, provider, balanceModules) => {
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) return log.error(`Failed to fetch ${balanceModule.type} balances`, 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.transaction("rw", db$1.balances, async () => await db$1.balances.filter(balance => {
534
- if (balance.source !== balanceModule.type) return false;
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-pr610-20230310075120",
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-pr610-20230310075120",
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/token-rates": "^0.0.0-pr610-20230310075120",
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",