Skip to content

Commit 2ef29ac

Browse files
Remove unnecessary useEffect
1 parent 17b88a6 commit 2ef29ac

File tree

2 files changed

+25
-30
lines changed

2 files changed

+25
-30
lines changed

packages/utils/src/context/tokens.tsx

+23-28
Original file line numberDiff line numberDiff line change
@@ -96,17 +96,16 @@ export function TokensProvider({
9696

9797
const initialTokens = tokens.reduce<Record<string, ERC20>>(
9898
(acc, token) => {
99-
const normalizedAddress = getChecksumAddress(address);
10099
const contract = new ERC20Contract({
101-
address: normalizedAddress,
100+
address: token.address,
102101
provider,
103102
});
104103

105104
return {
106105
...acc,
107-
[normalizedAddress]: {
106+
[contract.address]: {
108107
...token,
109-
address: normalizedAddress,
108+
address: contract.address,
110109
contract,
111110
}
112111
};
@@ -166,7 +165,6 @@ export function TokensProvider({
166165
const addresses = useMemo(() => Object.keys(tokens), [tokens]);
167166

168167
const {
169-
data: priceData,
170168
isLoading: isPriceLoading,
171169
error: priceError,
172170
} = usePriceByAddressesQuery(
@@ -176,28 +174,27 @@ export function TokensProvider({
176174
{
177175
refetchInterval,
178176
enabled: addresses.length > 0,
177+
onSuccess: (data) => {
178+
if (!data?.priceByAddresses) return;
179+
180+
setTokens((tokens) => {
181+
data.priceByAddresses.forEach((price, index) => {
182+
const address = addresses[index];
183+
if (tokens[address]) {
184+
tokens[address].price = price;
185+
}
186+
});
187+
return tokens;
188+
});
189+
}
179190
},
180191
);
181192

182-
useEffect(() => {
183-
if (priceData?.priceByAddresses) {
184-
setTokens((prevTokens) => {
185-
const newTokens = { ...prevTokens };
186-
priceData.priceByAddresses.forEach((price, index) => {
187-
const address = addresses[index];
188-
if (newTokens[address]) {
189-
newTokens[address].price = price;
190-
}
191-
});
192-
return newTokens;
193-
});
194-
}
195-
}, [priceData?.priceByAddresses, addresses]);
196-
197193
const register = useCallback(
198194
async (address: string) => {
199195
if (!provider || tokens[getChecksumAddress(address)]) return;
200196

197+
const newTokens = { ...tokens };
201198
const contract = new ERC20Contract({
202199
address,
203200
provider,
@@ -207,15 +204,13 @@ export function TokensProvider({
207204
const balance = await contract.balanceOf(address);
208205
await contract.init();
209206
const metadata = contract.metadata();
207+
newTokens[metadata.address] = {
208+
...metadata,
209+
contract,
210+
balance,
211+
};
210212

211-
setTokens(tokens => ({
212-
...tokens,
213-
[metadata.address]: {
214-
...metadata,
215-
contract,
216-
balance,
217-
}
218-
}));
213+
setTokens(newTokens);
219214
} catch (error) {
220215
console.error(`Failed to load token ${address}:`, error);
221216
}

packages/utils/src/erc20.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export const STRK_CONTRACT_ADDRESS = getChecksumAddress(
2525
);
2626

2727
export class ERC20Contract {
28-
private address: string;
28+
address: string;
2929
private provider: Provider;
3030

3131
private name?: string;
@@ -66,7 +66,7 @@ export class ERC20Contract {
6666
}
6767

6868
return {
69-
address: getChecksumAddress(this.address),
69+
address: this.address,
7070
name: this.name,
7171
symbol: this.symbol,
7272
decimals: this.decimals,

0 commit comments

Comments
 (0)