@talismn/balances-react 0.1.19 → 0.2.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @talismn/balances-react
2
2
 
3
+ ## 0.2.1
4
+
5
+ ### Patch Changes
6
+
7
+ - @talismn/balances@0.2.1
8
+
9
+ ## 0.2.0
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies [bff217a1]
14
+ - Updated dependencies [bff217a1]
15
+ - @talismn/chain-connector-evm@0.2.0
16
+ - @talismn/balances@0.2.0
17
+
3
18
  ## 0.1.19
4
19
 
5
20
  ### Patch Changes
@@ -1,12 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { Balances, balances as balancesFn, } from "@talismn/balances";
11
2
  import { db } from "@talismn/balances";
12
3
  import { ChainConnector } from "@talismn/chain-connector";
@@ -33,28 +24,26 @@ balanceModules, chaindataProvider, addressesByToken) {
33
24
  const evmNetworks = useEvmNetworks(chaindataProvider);
34
25
  const tokens = useTokens(chaindataProvider);
35
26
  const tokenRates = useTokenRates(tokens);
36
- const balances = useLiveQuery(() => __awaiter(this, void 0, void 0, function* () {
37
- return new Balances(yield db.balances
38
- .filter((balance) => {
39
- // check that this balance is included in our queried balance modules
40
- if (!balanceModules.map(({ type }) => type).includes(balance.source))
41
- return false;
42
- // check that our query includes some tokens and addresses
43
- if (!addressesByToken)
44
- return false;
45
- // check that this balance is included in our queried tokens
46
- if (!Object.keys(addressesByToken).includes(balance.tokenId))
47
- return false;
48
- // check that this balance is included in our queried addresses for this token
49
- if (!addressesByToken[balance.tokenId].includes(balance.address))
50
- return false;
51
- // keep this balance
52
- return true;
53
- })
54
- .toArray(),
55
- // hydrate balance chains, evmNetworks, tokens and tokenRates
56
- { chains, evmNetworks, tokens, tokenRates });
57
- }), [balanceModules, addressesByToken, chains, evmNetworks, tokens, tokenRates]);
27
+ const balances = useLiveQuery(async () => new Balances(await db.balances
28
+ .filter((balance) => {
29
+ // check that this balance is included in our queried balance modules
30
+ if (!balanceModules.map(({ type }) => type).includes(balance.source))
31
+ return false;
32
+ // check that our query includes some tokens and addresses
33
+ if (!addressesByToken)
34
+ return false;
35
+ // check that this balance is included in our queried tokens
36
+ if (!Object.keys(addressesByToken).includes(balance.tokenId))
37
+ return false;
38
+ // check that this balance is included in our queried addresses for this token
39
+ if (!addressesByToken[balance.tokenId].includes(balance.address))
40
+ return false;
41
+ // keep this balance
42
+ return true;
43
+ })
44
+ .toArray(),
45
+ // hydrate balance chains, evmNetworks, tokens and tokenRates
46
+ { chains, evmNetworks, tokens, tokenRates }), [balanceModules, addressesByToken, chains, evmNetworks, tokens, tokenRates]);
58
47
  // debounce every 100ms to prevent hammering UI with updates
59
48
  const [debouncedBalances, setDebouncedBalances] = useState(balances);
60
49
  useDebounce(() => balances && setDebouncedBalances(balances), 100, [balances]);
@@ -72,10 +61,9 @@ balanceModules, chaindataProvider, addressesByToken) {
72
61
  // Record<string, { unsub: Promise<() => void>; refcount: number; generation: number }>
73
62
  // >({})
74
63
  const addSubscription = (key, balanceModule, chainConnectors, chaindataProvider, addressesByToken) => {
75
- var _a;
76
64
  // create subscription if it doesn't already exist
77
65
  if (!subscriptions[key] || subscriptions[key].refcount === 0) {
78
- const generation = ((((_a = subscriptions[key]) === null || _a === void 0 ? void 0 : _a.generation) || 0) + 1) % Number.MAX_SAFE_INTEGER;
66
+ const generation = ((subscriptions[key]?.generation || 0) + 1) % Number.MAX_SAFE_INTEGER;
79
67
  const unsub = balancesFn(balanceModule, chainConnectors, chaindataProvider, addressesByToken, (error, balances) => {
80
68
  if (error)
81
69
  return log.error(`Failed to fetch ${balanceModule.type} balances`, error);
@@ -84,8 +72,11 @@ balanceModules, chaindataProvider, addressesByToken) {
84
72
  // ignore balances from old subscriptions which are still in the process of unsubscribing
85
73
  if (subscriptions[key].generation !== generation)
86
74
  return;
87
- const putBalances = Object.entries(balances.toJSON()).map(([id, balance]) => (Object.assign({ id }, balance)));
88
- db.transaction("rw", db.balances, () => __awaiter(this, void 0, void 0, function* () { return yield db.balances.bulkPut(putBalances); }));
75
+ const putBalances = Object.entries(balances.toJSON()).map(([id, balance]) => ({
76
+ id,
77
+ ...balance,
78
+ }));
79
+ db.transaction("rw", db.balances, async () => await db.balances.bulkPut(putBalances));
89
80
  });
90
81
  subscriptions[key] = { unsub, refcount: 0, generation };
91
82
  }
@@ -104,19 +95,17 @@ balanceModules, chaindataProvider, addressesByToken) {
104
95
  subscriptions[key].unsub.then((unsub) => unsub());
105
96
  delete subscriptions[key];
106
97
  // set this subscription's balances in the store to status: cache
107
- db.transaction("rw", db.balances, () => __awaiter(this, void 0, void 0, function* () {
108
- return yield db.balances
109
- .filter((balance) => {
110
- if (balance.source !== balanceModule.type)
111
- return false;
112
- if (!Object.keys(addressesByToken).includes(balance.tokenId))
113
- return false;
114
- if (!addressesByToken[balance.tokenId].includes(balance.address))
115
- return false;
116
- return true;
117
- })
118
- .modify({ status: "cache" });
119
- }));
98
+ db.transaction("rw", db.balances, async () => await db.balances
99
+ .filter((balance) => {
100
+ if (balance.source !== balanceModule.type)
101
+ return false;
102
+ if (!Object.keys(addressesByToken).includes(balance.tokenId))
103
+ return false;
104
+ if (!addressesByToken[balance.tokenId].includes(balance.address))
105
+ return false;
106
+ return true;
107
+ })
108
+ .modify({ status: "cache" }));
120
109
  }
121
110
  };
122
111
  const chainConnector = useChainConnector(chaindataProvider);
@@ -1,12 +1,3 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
1
  import { ChaindataProviderExtension } from "@talismn/chaindata-provider-extension";
11
2
  import { useEffect, useState } from "react";
12
3
  import log from "../log";
@@ -18,22 +9,22 @@ export function useChaindata() {
18
9
  useEffect(() => {
19
10
  const chaindataProvider = new ChaindataProviderExtension();
20
11
  let shouldHydrate = true;
21
- const timer = 300000; // 300_000ms = 300s = 5 minutes
22
- const hydrate = () => __awaiter(this, void 0, void 0, function* () {
12
+ const timer = 300_000; // 300_000ms = 300s = 5 minutes
13
+ const hydrate = async () => {
23
14
  if (!shouldHydrate)
24
15
  return;
25
16
  try {
26
- const updated = yield chaindataProvider.hydrate();
17
+ const updated = await chaindataProvider.hydrate();
27
18
  if (updated)
28
19
  setGeneration((generation) => (generation + 1) % Number.MAX_SAFE_INTEGER);
29
20
  setTimeout(hydrate, timer);
30
21
  }
31
22
  catch (error) {
32
- const retryTimeout = 5000; // 5_000ms = 5 seconds
23
+ const retryTimeout = 5_000; // 5_000ms = 5 seconds
33
24
  log.error(`Failed to fetch chaindata, retrying in ${Math.round(retryTimeout / 1000)} seconds`, error);
34
25
  setTimeout(hydrate, retryTimeout);
35
26
  }
36
- });
27
+ };
37
28
  setChaindataProvider(chaindataProvider);
38
29
  hydrate();
39
30
  return () => {
@@ -55,7 +46,7 @@ export function useChains(chaindata) {
55
46
  return;
56
47
  setChains(chains);
57
48
  });
58
- }, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
49
+ }, [chaindata?.generation]);
59
50
  return chains || {};
60
51
  }
61
52
  export function useChain(chaindata, chainId) {
@@ -66,7 +57,7 @@ export function useChain(chaindata, chainId) {
66
57
  if (!chainId)
67
58
  return;
68
59
  chaindata.getChain(chainId).then(setChain);
69
- }, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
60
+ }, [chaindata?.generation]);
70
61
  return chain;
71
62
  }
72
63
  export function useEvmNetworks(chaindata) {
@@ -80,7 +71,7 @@ export function useEvmNetworks(chaindata) {
80
71
  return;
81
72
  setEvmNetworks(evmNetworks);
82
73
  });
83
- }, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
74
+ }, [chaindata?.generation]);
84
75
  return evmNetworks || {};
85
76
  }
86
77
  export function useEvmNetwork(chaindata, evmNetworkId) {
@@ -91,7 +82,7 @@ export function useEvmNetwork(chaindata, evmNetworkId) {
91
82
  if (!evmNetworkId)
92
83
  return;
93
84
  chaindata.getEvmNetwork(evmNetworkId).then(setEvmNetwork);
94
- }, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
85
+ }, [chaindata?.generation]);
95
86
  return evmNetwork;
96
87
  }
97
88
  export function useTokens(chaindata) {
@@ -105,7 +96,7 @@ export function useTokens(chaindata) {
105
96
  return;
106
97
  setTokens(tokens);
107
98
  });
108
- }, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
99
+ }, [chaindata?.generation]);
109
100
  return tokens || {};
110
101
  }
111
102
  export function useToken(chaindata, tokenId) {
@@ -116,6 +107,6 @@ export function useToken(chaindata, tokenId) {
116
107
  if (!tokenId)
117
108
  return;
118
109
  chaindata.getToken(tokenId).then(setToken);
119
- }, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
110
+ }, [chaindata?.generation]);
120
111
  return token;
121
112
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@talismn/balances-react",
3
- "version": "0.1.19",
3
+ "version": "0.2.1",
4
4
  "author": "Talisman",
5
5
  "homepage": "https://talisman.xyz",
6
6
  "license": "UNLICENSED",
@@ -30,9 +30,9 @@
30
30
  "clean": "rm -rf dist && rm -rf .turbo rm -rf node_modules"
31
31
  },
32
32
  "dependencies": {
33
- "@talismn/balances": "^0.1.19",
33
+ "@talismn/balances": "^0.2.1",
34
34
  "@talismn/chain-connector": "^0.1.10",
35
- "@talismn/chain-connector-evm": "^0.1.10",
35
+ "@talismn/chain-connector-evm": "^0.2.0",
36
36
  "@talismn/chaindata-provider": "^0.1.10",
37
37
  "@talismn/chaindata-provider-extension": "^0.1.10",
38
38
  "@talismn/token-rates": "^0.1.10",