@talismn/balances-react 0.0.0-pr548-20230213142852 → 0.0.0-pr555-20230215161728
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 +23 -10
- package/dist/declarations/src/hooks/useBalances.d.ts +4 -1
- package/dist/declarations/src/hooks/useChaindata.d.ts +4 -1
- package/dist/talismn-balances-react.cjs.dev.js +22 -19
- package/dist/talismn-balances-react.cjs.prod.js +22 -19
- package/dist/talismn-balances-react.esm.js +22 -19
- package/package.json +9 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,18 +1,31 @@
|
|
|
1
1
|
# @talismn/balances-react
|
|
2
2
|
|
|
3
|
-
## 0.0.0-
|
|
3
|
+
## 0.0.0-pr555-20230215161728
|
|
4
4
|
|
|
5
5
|
### Patch Changes
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
- @talismn/
|
|
15
|
-
|
|
7
|
+
- @talismn/balances@0.0.0-pr555-20230215161728
|
|
8
|
+
|
|
9
|
+
## 0.3.2
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 62d7a783: fix: allow @talismn/balances-react users to specify onfinality api key
|
|
14
|
+
- @talismn/balances@0.3.2
|
|
15
|
+
|
|
16
|
+
## 0.3.1
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- 8adc7f06: feat: switched build tool to preconstruct
|
|
21
|
+
- Updated dependencies [8adc7f06]
|
|
22
|
+
- Updated dependencies [cfe8d276]
|
|
23
|
+
- @talismn/chaindata-provider-extension@0.4.1
|
|
24
|
+
- @talismn/chain-connector-evm@0.4.1
|
|
25
|
+
- @talismn/chaindata-provider@0.4.1
|
|
26
|
+
- @talismn/chain-connector@0.4.1
|
|
27
|
+
- @talismn/token-rates@0.1.13
|
|
28
|
+
- @talismn/balances@0.3.1
|
|
16
29
|
|
|
17
30
|
## 0.3.0
|
|
18
31
|
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import { AddressesByToken, BalanceModule, Balances } from "@talismn/balances";
|
|
2
2
|
import { ChaindataProvider, Token } from "@talismn/chaindata-provider";
|
|
3
|
-
export
|
|
3
|
+
export type Options = {
|
|
4
|
+
onfinalityApiKey?: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function useBalances(balanceModules: Array<BalanceModule<any, any, any, any>>, chaindataProvider: ChaindataProvider | null, addressesByToken: AddressesByToken<Token> | null, options?: Options): Balances | undefined;
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { Chain, ChainId, ChainList, ChaindataProvider, EvmNetwork, EvmNetworkId, EvmNetworkList, Token, TokenId, TokenList } from "@talismn/chaindata-provider";
|
|
2
|
-
export
|
|
2
|
+
export type Options = {
|
|
3
|
+
onfinalityApiKey?: string;
|
|
4
|
+
};
|
|
5
|
+
export declare function useChaindata(options?: Options): (ChaindataProvider & {
|
|
3
6
|
generation?: number | undefined;
|
|
4
7
|
}) | null;
|
|
5
8
|
export declare function useChains(chaindata: (ChaindataProvider & {
|
|
@@ -18,7 +18,7 @@ var anylogger__default = /*#__PURE__*/_interopDefault(anylogger);
|
|
|
18
18
|
|
|
19
19
|
var packageJson = {
|
|
20
20
|
name: "@talismn/balances-react",
|
|
21
|
-
version: "0.0.0-
|
|
21
|
+
version: "0.0.0-pr555-20230215161728",
|
|
22
22
|
author: "Talisman",
|
|
23
23
|
homepage: "https://talisman.xyz",
|
|
24
24
|
license: "UNLICENSED",
|
|
@@ -81,14 +81,15 @@ var packageJson = {
|
|
|
81
81
|
var log = anylogger__default["default"](packageJson.name);
|
|
82
82
|
|
|
83
83
|
// TODO: Allow user to call useChaindata from multiple places
|
|
84
|
-
|
|
85
|
-
function useChaindata() {
|
|
84
|
+
function useChaindata(options = {}) {
|
|
86
85
|
const [chaindataProvider, setChaindataProvider] = react.useState(null);
|
|
87
86
|
|
|
88
87
|
// this number is incremented each time the chaindataProvider has fetched new data
|
|
89
88
|
const [generation, setGeneration] = react.useState(0);
|
|
90
89
|
react.useEffect(() => {
|
|
91
|
-
const chaindataProvider = new chaindataProviderExtension.ChaindataProviderExtension(
|
|
90
|
+
const chaindataProvider = new chaindataProviderExtension.ChaindataProviderExtension({
|
|
91
|
+
onfinalityApiKey: options.onfinalityApiKey
|
|
92
|
+
});
|
|
92
93
|
let shouldHydrate = true;
|
|
93
94
|
const timer = 300_000; // 300_000ms = 300s = 5 minutes
|
|
94
95
|
const hydrate = async () => {
|
|
@@ -108,7 +109,7 @@ function useChaindata() {
|
|
|
108
109
|
return () => {
|
|
109
110
|
shouldHydrate = false;
|
|
110
111
|
};
|
|
111
|
-
}, []);
|
|
112
|
+
}, [options.onfinalityApiKey]);
|
|
112
113
|
if (chaindataProvider) chaindataProvider.generation = generation;
|
|
113
114
|
return chaindataProvider;
|
|
114
115
|
}
|
|
@@ -121,7 +122,7 @@ function useChains(chaindata) {
|
|
|
121
122
|
if (thisGeneration !== chaindata.generation) return;
|
|
122
123
|
setChains(chains);
|
|
123
124
|
});
|
|
124
|
-
}, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
125
|
+
}, [chaindata, chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
125
126
|
return chains || {};
|
|
126
127
|
}
|
|
127
128
|
function useChain(chaindata, chainId) {
|
|
@@ -130,7 +131,7 @@ function useChain(chaindata, chainId) {
|
|
|
130
131
|
if (chaindata === null) return;
|
|
131
132
|
if (!chainId) return;
|
|
132
133
|
chaindata.getChain(chainId).then(setChain);
|
|
133
|
-
}, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
134
|
+
}, [chainId, chaindata, chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
134
135
|
return chain;
|
|
135
136
|
}
|
|
136
137
|
function useEvmNetworks(chaindata) {
|
|
@@ -142,7 +143,7 @@ function useEvmNetworks(chaindata) {
|
|
|
142
143
|
if (thisGeneration !== chaindata.generation) return;
|
|
143
144
|
setEvmNetworks(evmNetworks);
|
|
144
145
|
});
|
|
145
|
-
}, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
146
|
+
}, [chaindata, chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
146
147
|
return evmNetworks || {};
|
|
147
148
|
}
|
|
148
149
|
function useEvmNetwork(chaindata, evmNetworkId) {
|
|
@@ -151,7 +152,7 @@ function useEvmNetwork(chaindata, evmNetworkId) {
|
|
|
151
152
|
if (chaindata === null) return;
|
|
152
153
|
if (!evmNetworkId) return;
|
|
153
154
|
chaindata.getEvmNetwork(evmNetworkId).then(setEvmNetwork);
|
|
154
|
-
}, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
155
|
+
}, [chaindata, chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation, evmNetworkId]);
|
|
155
156
|
return evmNetwork;
|
|
156
157
|
}
|
|
157
158
|
function useTokens(chaindata) {
|
|
@@ -163,7 +164,7 @@ function useTokens(chaindata) {
|
|
|
163
164
|
if (thisGeneration !== chaindata.generation) return;
|
|
164
165
|
setTokens(tokens);
|
|
165
166
|
});
|
|
166
|
-
}, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
167
|
+
}, [chaindata, chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
167
168
|
return tokens || {};
|
|
168
169
|
}
|
|
169
170
|
function useToken(chaindata, tokenId) {
|
|
@@ -172,7 +173,7 @@ function useToken(chaindata, tokenId) {
|
|
|
172
173
|
if (chaindata === null) return;
|
|
173
174
|
if (!tokenId) return;
|
|
174
175
|
chaindata.getToken(tokenId).then(setToken);
|
|
175
|
-
}, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
176
|
+
}, [chaindata, chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation, tokenId]);
|
|
176
177
|
return token;
|
|
177
178
|
}
|
|
178
179
|
|
|
@@ -205,8 +206,8 @@ function useTokenRates(tokens) {
|
|
|
205
206
|
// the caller of useChains/useTokens/etc has provided.
|
|
206
207
|
function useBalances(
|
|
207
208
|
// TODO: Make this array of BalanceModules more type-safe
|
|
208
|
-
balanceModules, chaindataProvider, addressesByToken) {
|
|
209
|
-
useBalancesSubscriptions(balanceModules, chaindataProvider, addressesByToken);
|
|
209
|
+
balanceModules, chaindataProvider, addressesByToken, options = {}) {
|
|
210
|
+
useBalancesSubscriptions(balanceModules, chaindataProvider, addressesByToken, options);
|
|
210
211
|
const chains = useChains(chaindataProvider);
|
|
211
212
|
const evmNetworks = useEvmNetworks(chaindataProvider);
|
|
212
213
|
const tokens = useTokens(chaindataProvider);
|
|
@@ -251,7 +252,7 @@ const subscriptions = {};
|
|
|
251
252
|
// balance subscriptions
|
|
252
253
|
function useBalancesSubscriptions(
|
|
253
254
|
// TODO: Make this array of BalanceModules more type-safe
|
|
254
|
-
balanceModules, chaindataProvider, addressesByToken) {
|
|
255
|
+
balanceModules, chaindataProvider, addressesByToken, options = {}) {
|
|
255
256
|
// const subscriptions = useRef<
|
|
256
257
|
// Record<string, { unsub: Promise<() => void>; refcount: number; generation: number }>
|
|
257
258
|
// >({})
|
|
@@ -308,7 +309,7 @@ balanceModules, chaindataProvider, addressesByToken) {
|
|
|
308
309
|
}
|
|
309
310
|
};
|
|
310
311
|
const chainConnector = useChainConnector(chaindataProvider);
|
|
311
|
-
const chainConnectorEvm = useChainConnectorEvm(chaindataProvider);
|
|
312
|
+
const chainConnectorEvm = useChainConnectorEvm(chaindataProvider, options);
|
|
312
313
|
const tokens = useTokens(chaindataProvider);
|
|
313
314
|
react.useEffect(() => {
|
|
314
315
|
if (chainConnector === null) return;
|
|
@@ -337,7 +338,7 @@ balanceModules, chaindataProvider, addressesByToken) {
|
|
|
337
338
|
});
|
|
338
339
|
const unsubAll = () => unsubs.forEach(unsub => unsub());
|
|
339
340
|
return unsubAll;
|
|
340
|
-
}, [addressesByToken, chainConnector, chainConnectorEvm, chaindataProvider, tokens]);
|
|
341
|
+
}, [addressesByToken, balanceModules, chainConnector, chainConnectorEvm, chaindataProvider, tokens]);
|
|
341
342
|
}
|
|
342
343
|
|
|
343
344
|
// TODO: Allow advanced users of this library to provide their own chain connector
|
|
@@ -350,12 +351,14 @@ function useChainConnector(chaindataProvider) {
|
|
|
350
351
|
return chainConnector$1;
|
|
351
352
|
}
|
|
352
353
|
// TODO: Allow advanced users of this library to provide their own chain connector
|
|
353
|
-
function useChainConnectorEvm(chaindataProvider) {
|
|
354
|
+
function useChainConnectorEvm(chaindataProvider, options = {}) {
|
|
354
355
|
const [chainConnectorEvm$1, setChainConnectorEvm] = react.useState(null);
|
|
355
356
|
react.useEffect(() => {
|
|
356
357
|
if (chaindataProvider === null) return;
|
|
357
|
-
setChainConnectorEvm(new chainConnectorEvm.ChainConnectorEvm(chaindataProvider
|
|
358
|
-
|
|
358
|
+
setChainConnectorEvm(new chainConnectorEvm.ChainConnectorEvm(chaindataProvider, {
|
|
359
|
+
onfinalityApiKey: options.onfinalityApiKey
|
|
360
|
+
}));
|
|
361
|
+
}, [chaindataProvider, options.onfinalityApiKey]);
|
|
359
362
|
return chainConnectorEvm$1;
|
|
360
363
|
}
|
|
361
364
|
|
|
@@ -18,7 +18,7 @@ var anylogger__default = /*#__PURE__*/_interopDefault(anylogger);
|
|
|
18
18
|
|
|
19
19
|
var packageJson = {
|
|
20
20
|
name: "@talismn/balances-react",
|
|
21
|
-
version: "0.0.0-
|
|
21
|
+
version: "0.0.0-pr555-20230215161728",
|
|
22
22
|
author: "Talisman",
|
|
23
23
|
homepage: "https://talisman.xyz",
|
|
24
24
|
license: "UNLICENSED",
|
|
@@ -81,14 +81,15 @@ var packageJson = {
|
|
|
81
81
|
var log = anylogger__default["default"](packageJson.name);
|
|
82
82
|
|
|
83
83
|
// TODO: Allow user to call useChaindata from multiple places
|
|
84
|
-
|
|
85
|
-
function useChaindata() {
|
|
84
|
+
function useChaindata(options = {}) {
|
|
86
85
|
const [chaindataProvider, setChaindataProvider] = react.useState(null);
|
|
87
86
|
|
|
88
87
|
// this number is incremented each time the chaindataProvider has fetched new data
|
|
89
88
|
const [generation, setGeneration] = react.useState(0);
|
|
90
89
|
react.useEffect(() => {
|
|
91
|
-
const chaindataProvider = new chaindataProviderExtension.ChaindataProviderExtension(
|
|
90
|
+
const chaindataProvider = new chaindataProviderExtension.ChaindataProviderExtension({
|
|
91
|
+
onfinalityApiKey: options.onfinalityApiKey
|
|
92
|
+
});
|
|
92
93
|
let shouldHydrate = true;
|
|
93
94
|
const timer = 300_000; // 300_000ms = 300s = 5 minutes
|
|
94
95
|
const hydrate = async () => {
|
|
@@ -108,7 +109,7 @@ function useChaindata() {
|
|
|
108
109
|
return () => {
|
|
109
110
|
shouldHydrate = false;
|
|
110
111
|
};
|
|
111
|
-
}, []);
|
|
112
|
+
}, [options.onfinalityApiKey]);
|
|
112
113
|
if (chaindataProvider) chaindataProvider.generation = generation;
|
|
113
114
|
return chaindataProvider;
|
|
114
115
|
}
|
|
@@ -121,7 +122,7 @@ function useChains(chaindata) {
|
|
|
121
122
|
if (thisGeneration !== chaindata.generation) return;
|
|
122
123
|
setChains(chains);
|
|
123
124
|
});
|
|
124
|
-
}, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
125
|
+
}, [chaindata, chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
125
126
|
return chains || {};
|
|
126
127
|
}
|
|
127
128
|
function useChain(chaindata, chainId) {
|
|
@@ -130,7 +131,7 @@ function useChain(chaindata, chainId) {
|
|
|
130
131
|
if (chaindata === null) return;
|
|
131
132
|
if (!chainId) return;
|
|
132
133
|
chaindata.getChain(chainId).then(setChain);
|
|
133
|
-
}, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
134
|
+
}, [chainId, chaindata, chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
134
135
|
return chain;
|
|
135
136
|
}
|
|
136
137
|
function useEvmNetworks(chaindata) {
|
|
@@ -142,7 +143,7 @@ function useEvmNetworks(chaindata) {
|
|
|
142
143
|
if (thisGeneration !== chaindata.generation) return;
|
|
143
144
|
setEvmNetworks(evmNetworks);
|
|
144
145
|
});
|
|
145
|
-
}, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
146
|
+
}, [chaindata, chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
146
147
|
return evmNetworks || {};
|
|
147
148
|
}
|
|
148
149
|
function useEvmNetwork(chaindata, evmNetworkId) {
|
|
@@ -151,7 +152,7 @@ function useEvmNetwork(chaindata, evmNetworkId) {
|
|
|
151
152
|
if (chaindata === null) return;
|
|
152
153
|
if (!evmNetworkId) return;
|
|
153
154
|
chaindata.getEvmNetwork(evmNetworkId).then(setEvmNetwork);
|
|
154
|
-
}, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
155
|
+
}, [chaindata, chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation, evmNetworkId]);
|
|
155
156
|
return evmNetwork;
|
|
156
157
|
}
|
|
157
158
|
function useTokens(chaindata) {
|
|
@@ -163,7 +164,7 @@ function useTokens(chaindata) {
|
|
|
163
164
|
if (thisGeneration !== chaindata.generation) return;
|
|
164
165
|
setTokens(tokens);
|
|
165
166
|
});
|
|
166
|
-
}, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
167
|
+
}, [chaindata, chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
167
168
|
return tokens || {};
|
|
168
169
|
}
|
|
169
170
|
function useToken(chaindata, tokenId) {
|
|
@@ -172,7 +173,7 @@ function useToken(chaindata, tokenId) {
|
|
|
172
173
|
if (chaindata === null) return;
|
|
173
174
|
if (!tokenId) return;
|
|
174
175
|
chaindata.getToken(tokenId).then(setToken);
|
|
175
|
-
}, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
176
|
+
}, [chaindata, chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation, tokenId]);
|
|
176
177
|
return token;
|
|
177
178
|
}
|
|
178
179
|
|
|
@@ -205,8 +206,8 @@ function useTokenRates(tokens) {
|
|
|
205
206
|
// the caller of useChains/useTokens/etc has provided.
|
|
206
207
|
function useBalances(
|
|
207
208
|
// TODO: Make this array of BalanceModules more type-safe
|
|
208
|
-
balanceModules, chaindataProvider, addressesByToken) {
|
|
209
|
-
useBalancesSubscriptions(balanceModules, chaindataProvider, addressesByToken);
|
|
209
|
+
balanceModules, chaindataProvider, addressesByToken, options = {}) {
|
|
210
|
+
useBalancesSubscriptions(balanceModules, chaindataProvider, addressesByToken, options);
|
|
210
211
|
const chains = useChains(chaindataProvider);
|
|
211
212
|
const evmNetworks = useEvmNetworks(chaindataProvider);
|
|
212
213
|
const tokens = useTokens(chaindataProvider);
|
|
@@ -251,7 +252,7 @@ const subscriptions = {};
|
|
|
251
252
|
// balance subscriptions
|
|
252
253
|
function useBalancesSubscriptions(
|
|
253
254
|
// TODO: Make this array of BalanceModules more type-safe
|
|
254
|
-
balanceModules, chaindataProvider, addressesByToken) {
|
|
255
|
+
balanceModules, chaindataProvider, addressesByToken, options = {}) {
|
|
255
256
|
// const subscriptions = useRef<
|
|
256
257
|
// Record<string, { unsub: Promise<() => void>; refcount: number; generation: number }>
|
|
257
258
|
// >({})
|
|
@@ -308,7 +309,7 @@ balanceModules, chaindataProvider, addressesByToken) {
|
|
|
308
309
|
}
|
|
309
310
|
};
|
|
310
311
|
const chainConnector = useChainConnector(chaindataProvider);
|
|
311
|
-
const chainConnectorEvm = useChainConnectorEvm(chaindataProvider);
|
|
312
|
+
const chainConnectorEvm = useChainConnectorEvm(chaindataProvider, options);
|
|
312
313
|
const tokens = useTokens(chaindataProvider);
|
|
313
314
|
react.useEffect(() => {
|
|
314
315
|
if (chainConnector === null) return;
|
|
@@ -337,7 +338,7 @@ balanceModules, chaindataProvider, addressesByToken) {
|
|
|
337
338
|
});
|
|
338
339
|
const unsubAll = () => unsubs.forEach(unsub => unsub());
|
|
339
340
|
return unsubAll;
|
|
340
|
-
}, [addressesByToken, chainConnector, chainConnectorEvm, chaindataProvider, tokens]);
|
|
341
|
+
}, [addressesByToken, balanceModules, chainConnector, chainConnectorEvm, chaindataProvider, tokens]);
|
|
341
342
|
}
|
|
342
343
|
|
|
343
344
|
// TODO: Allow advanced users of this library to provide their own chain connector
|
|
@@ -350,12 +351,14 @@ function useChainConnector(chaindataProvider) {
|
|
|
350
351
|
return chainConnector$1;
|
|
351
352
|
}
|
|
352
353
|
// TODO: Allow advanced users of this library to provide their own chain connector
|
|
353
|
-
function useChainConnectorEvm(chaindataProvider) {
|
|
354
|
+
function useChainConnectorEvm(chaindataProvider, options = {}) {
|
|
354
355
|
const [chainConnectorEvm$1, setChainConnectorEvm] = react.useState(null);
|
|
355
356
|
react.useEffect(() => {
|
|
356
357
|
if (chaindataProvider === null) return;
|
|
357
|
-
setChainConnectorEvm(new chainConnectorEvm.ChainConnectorEvm(chaindataProvider
|
|
358
|
-
|
|
358
|
+
setChainConnectorEvm(new chainConnectorEvm.ChainConnectorEvm(chaindataProvider, {
|
|
359
|
+
onfinalityApiKey: options.onfinalityApiKey
|
|
360
|
+
}));
|
|
361
|
+
}, [chaindataProvider, options.onfinalityApiKey]);
|
|
359
362
|
return chainConnectorEvm$1;
|
|
360
363
|
}
|
|
361
364
|
|
|
@@ -10,7 +10,7 @@ import { fetchTokenRates } from '@talismn/token-rates';
|
|
|
10
10
|
|
|
11
11
|
var packageJson = {
|
|
12
12
|
name: "@talismn/balances-react",
|
|
13
|
-
version: "0.0.0-
|
|
13
|
+
version: "0.0.0-pr555-20230215161728",
|
|
14
14
|
author: "Talisman",
|
|
15
15
|
homepage: "https://talisman.xyz",
|
|
16
16
|
license: "UNLICENSED",
|
|
@@ -73,14 +73,15 @@ var packageJson = {
|
|
|
73
73
|
var log = anylogger(packageJson.name);
|
|
74
74
|
|
|
75
75
|
// TODO: Allow user to call useChaindata from multiple places
|
|
76
|
-
|
|
77
|
-
function useChaindata() {
|
|
76
|
+
function useChaindata(options = {}) {
|
|
78
77
|
const [chaindataProvider, setChaindataProvider] = useState(null);
|
|
79
78
|
|
|
80
79
|
// this number is incremented each time the chaindataProvider has fetched new data
|
|
81
80
|
const [generation, setGeneration] = useState(0);
|
|
82
81
|
useEffect(() => {
|
|
83
|
-
const chaindataProvider = new ChaindataProviderExtension(
|
|
82
|
+
const chaindataProvider = new ChaindataProviderExtension({
|
|
83
|
+
onfinalityApiKey: options.onfinalityApiKey
|
|
84
|
+
});
|
|
84
85
|
let shouldHydrate = true;
|
|
85
86
|
const timer = 300_000; // 300_000ms = 300s = 5 minutes
|
|
86
87
|
const hydrate = async () => {
|
|
@@ -100,7 +101,7 @@ function useChaindata() {
|
|
|
100
101
|
return () => {
|
|
101
102
|
shouldHydrate = false;
|
|
102
103
|
};
|
|
103
|
-
}, []);
|
|
104
|
+
}, [options.onfinalityApiKey]);
|
|
104
105
|
if (chaindataProvider) chaindataProvider.generation = generation;
|
|
105
106
|
return chaindataProvider;
|
|
106
107
|
}
|
|
@@ -113,7 +114,7 @@ function useChains(chaindata) {
|
|
|
113
114
|
if (thisGeneration !== chaindata.generation) return;
|
|
114
115
|
setChains(chains);
|
|
115
116
|
});
|
|
116
|
-
}, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
117
|
+
}, [chaindata, chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
117
118
|
return chains || {};
|
|
118
119
|
}
|
|
119
120
|
function useChain(chaindata, chainId) {
|
|
@@ -122,7 +123,7 @@ function useChain(chaindata, chainId) {
|
|
|
122
123
|
if (chaindata === null) return;
|
|
123
124
|
if (!chainId) return;
|
|
124
125
|
chaindata.getChain(chainId).then(setChain);
|
|
125
|
-
}, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
126
|
+
}, [chainId, chaindata, chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
126
127
|
return chain;
|
|
127
128
|
}
|
|
128
129
|
function useEvmNetworks(chaindata) {
|
|
@@ -134,7 +135,7 @@ function useEvmNetworks(chaindata) {
|
|
|
134
135
|
if (thisGeneration !== chaindata.generation) return;
|
|
135
136
|
setEvmNetworks(evmNetworks);
|
|
136
137
|
});
|
|
137
|
-
}, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
138
|
+
}, [chaindata, chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
138
139
|
return evmNetworks || {};
|
|
139
140
|
}
|
|
140
141
|
function useEvmNetwork(chaindata, evmNetworkId) {
|
|
@@ -143,7 +144,7 @@ function useEvmNetwork(chaindata, evmNetworkId) {
|
|
|
143
144
|
if (chaindata === null) return;
|
|
144
145
|
if (!evmNetworkId) return;
|
|
145
146
|
chaindata.getEvmNetwork(evmNetworkId).then(setEvmNetwork);
|
|
146
|
-
}, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
147
|
+
}, [chaindata, chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation, evmNetworkId]);
|
|
147
148
|
return evmNetwork;
|
|
148
149
|
}
|
|
149
150
|
function useTokens(chaindata) {
|
|
@@ -155,7 +156,7 @@ function useTokens(chaindata) {
|
|
|
155
156
|
if (thisGeneration !== chaindata.generation) return;
|
|
156
157
|
setTokens(tokens);
|
|
157
158
|
});
|
|
158
|
-
}, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
159
|
+
}, [chaindata, chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
159
160
|
return tokens || {};
|
|
160
161
|
}
|
|
161
162
|
function useToken(chaindata, tokenId) {
|
|
@@ -164,7 +165,7 @@ function useToken(chaindata, tokenId) {
|
|
|
164
165
|
if (chaindata === null) return;
|
|
165
166
|
if (!tokenId) return;
|
|
166
167
|
chaindata.getToken(tokenId).then(setToken);
|
|
167
|
-
}, [chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation]);
|
|
168
|
+
}, [chaindata, chaindata === null || chaindata === void 0 ? void 0 : chaindata.generation, tokenId]);
|
|
168
169
|
return token;
|
|
169
170
|
}
|
|
170
171
|
|
|
@@ -197,8 +198,8 @@ function useTokenRates(tokens) {
|
|
|
197
198
|
// the caller of useChains/useTokens/etc has provided.
|
|
198
199
|
function useBalances(
|
|
199
200
|
// TODO: Make this array of BalanceModules more type-safe
|
|
200
|
-
balanceModules, chaindataProvider, addressesByToken) {
|
|
201
|
-
useBalancesSubscriptions(balanceModules, chaindataProvider, addressesByToken);
|
|
201
|
+
balanceModules, chaindataProvider, addressesByToken, options = {}) {
|
|
202
|
+
useBalancesSubscriptions(balanceModules, chaindataProvider, addressesByToken, options);
|
|
202
203
|
const chains = useChains(chaindataProvider);
|
|
203
204
|
const evmNetworks = useEvmNetworks(chaindataProvider);
|
|
204
205
|
const tokens = useTokens(chaindataProvider);
|
|
@@ -243,7 +244,7 @@ const subscriptions = {};
|
|
|
243
244
|
// balance subscriptions
|
|
244
245
|
function useBalancesSubscriptions(
|
|
245
246
|
// TODO: Make this array of BalanceModules more type-safe
|
|
246
|
-
balanceModules, chaindataProvider, addressesByToken) {
|
|
247
|
+
balanceModules, chaindataProvider, addressesByToken, options = {}) {
|
|
247
248
|
// const subscriptions = useRef<
|
|
248
249
|
// Record<string, { unsub: Promise<() => void>; refcount: number; generation: number }>
|
|
249
250
|
// >({})
|
|
@@ -300,7 +301,7 @@ balanceModules, chaindataProvider, addressesByToken) {
|
|
|
300
301
|
}
|
|
301
302
|
};
|
|
302
303
|
const chainConnector = useChainConnector(chaindataProvider);
|
|
303
|
-
const chainConnectorEvm = useChainConnectorEvm(chaindataProvider);
|
|
304
|
+
const chainConnectorEvm = useChainConnectorEvm(chaindataProvider, options);
|
|
304
305
|
const tokens = useTokens(chaindataProvider);
|
|
305
306
|
useEffect(() => {
|
|
306
307
|
if (chainConnector === null) return;
|
|
@@ -329,7 +330,7 @@ balanceModules, chaindataProvider, addressesByToken) {
|
|
|
329
330
|
});
|
|
330
331
|
const unsubAll = () => unsubs.forEach(unsub => unsub());
|
|
331
332
|
return unsubAll;
|
|
332
|
-
}, [addressesByToken, chainConnector, chainConnectorEvm, chaindataProvider, tokens]);
|
|
333
|
+
}, [addressesByToken, balanceModules, chainConnector, chainConnectorEvm, chaindataProvider, tokens]);
|
|
333
334
|
}
|
|
334
335
|
|
|
335
336
|
// TODO: Allow advanced users of this library to provide their own chain connector
|
|
@@ -342,12 +343,14 @@ function useChainConnector(chaindataProvider) {
|
|
|
342
343
|
return chainConnector;
|
|
343
344
|
}
|
|
344
345
|
// TODO: Allow advanced users of this library to provide their own chain connector
|
|
345
|
-
function useChainConnectorEvm(chaindataProvider) {
|
|
346
|
+
function useChainConnectorEvm(chaindataProvider, options = {}) {
|
|
346
347
|
const [chainConnectorEvm, setChainConnectorEvm] = useState(null);
|
|
347
348
|
useEffect(() => {
|
|
348
349
|
if (chaindataProvider === null) return;
|
|
349
|
-
setChainConnectorEvm(new ChainConnectorEvm(chaindataProvider
|
|
350
|
-
|
|
350
|
+
setChainConnectorEvm(new ChainConnectorEvm(chaindataProvider, {
|
|
351
|
+
onfinalityApiKey: options.onfinalityApiKey
|
|
352
|
+
}));
|
|
353
|
+
}, [chaindataProvider, options.onfinalityApiKey]);
|
|
351
354
|
return chainConnectorEvm;
|
|
352
355
|
}
|
|
353
356
|
|
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-pr555-20230215161728",
|
|
4
4
|
"author": "Talisman",
|
|
5
5
|
"homepage": "https://talisman.xyz",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -26,20 +26,20 @@
|
|
|
26
26
|
"clean": "rm -rf dist && rm -rf .turbo rm -rf node_modules"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@talismn/balances": "^0.0.0-
|
|
30
|
-
"@talismn/chain-connector": "^0.
|
|
31
|
-
"@talismn/chain-connector-evm": "^0.
|
|
32
|
-
"@talismn/chaindata-provider": "^0.
|
|
33
|
-
"@talismn/chaindata-provider-extension": "^0.
|
|
34
|
-
"@talismn/token-rates": "^0.
|
|
29
|
+
"@talismn/balances": "^0.0.0-pr555-20230215161728",
|
|
30
|
+
"@talismn/chain-connector": "^0.4.1",
|
|
31
|
+
"@talismn/chain-connector-evm": "^0.4.1",
|
|
32
|
+
"@talismn/chaindata-provider": "^0.4.1",
|
|
33
|
+
"@talismn/chaindata-provider-extension": "^0.4.1",
|
|
34
|
+
"@talismn/token-rates": "^0.1.13",
|
|
35
35
|
"anylogger": "^1.0.11",
|
|
36
36
|
"dexie": "^3.2.2",
|
|
37
37
|
"dexie-react-hooks": "^1.1.1",
|
|
38
38
|
"react-use": "^17.4.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@talismn/eslint-config": "^0.0.
|
|
42
|
-
"@talismn/tsconfig": "^0.0.
|
|
41
|
+
"@talismn/eslint-config": "^0.0.1",
|
|
42
|
+
"@talismn/tsconfig": "^0.0.2",
|
|
43
43
|
"@types/jest": "^27.5.1",
|
|
44
44
|
"@types/react": "^18.0.17",
|
|
45
45
|
"eslint": "^8.4.0",
|