Skip to content

Commit b67a2cb

Browse files
Remove unnecessary useEffect
1 parent 17b88a6 commit b67a2cb

File tree

2 files changed

+26
-36
lines changed

2 files changed

+26
-36
lines changed

packages/utils/src/context/tokens.tsx

+24-34
Original file line numberDiff line numberDiff line change
@@ -89,24 +89,18 @@ export function TokensProvider({
8989
}
9090

9191
// Create synchronous token initialization
92-
const tokens = [...DEFAULT_TOKENS];
93-
if (tokensArg) {
94-
tokens.push(...tokensArg);
95-
}
96-
97-
const initialTokens = tokens.reduce<Record<string, ERC20>>(
92+
const initialTokens = tokensArg.reduce<Record<string, ERC20>>(
9893
(acc, token) => {
99-
const normalizedAddress = getChecksumAddress(address);
10094
const contract = new ERC20Contract({
101-
address: normalizedAddress,
95+
address: token.address,
10296
provider,
10397
});
10498

10599
return {
106100
...acc,
107-
[normalizedAddress]: {
101+
[contract.address]: {
108102
...token,
109-
address: normalizedAddress,
103+
address: contract.address,
110104
contract,
111105
}
112106
};
@@ -166,7 +160,6 @@ export function TokensProvider({
166160
const addresses = useMemo(() => Object.keys(tokens), [tokens]);
167161

168162
const {
169-
data: priceData,
170163
isLoading: isPriceLoading,
171164
error: priceError,
172165
} = usePriceByAddressesQuery(
@@ -176,28 +169,27 @@ export function TokensProvider({
176169
{
177170
refetchInterval,
178171
enabled: addresses.length > 0,
172+
onSuccess: (data) => {
173+
if (!data?.priceByAddresses) return;
174+
175+
setTokens((tokens) => {
176+
data.priceByAddresses.forEach((price, index) => {
177+
const address = addresses[index];
178+
if (tokens[address]) {
179+
tokens[address].price = price;
180+
}
181+
});
182+
return tokens;
183+
});
184+
}
179185
},
180186
);
181187

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-
197188
const register = useCallback(
198189
async (address: string) => {
199190
if (!provider || tokens[getChecksumAddress(address)]) return;
200191

192+
const newTokens = { ...tokens };
201193
const contract = new ERC20Contract({
202194
address,
203195
provider,
@@ -207,15 +199,13 @@ export function TokensProvider({
207199
const balance = await contract.balanceOf(address);
208200
await contract.init();
209201
const metadata = contract.metadata();
202+
newTokens[metadata.address] = {
203+
...metadata,
204+
contract,
205+
balance,
206+
};
210207

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

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)