Skip to content

Commit e30e38e

Browse files
committed
refactor: replace setTimeout with queueMicrotask for improved state updates in various components
1 parent ce9798c commit e30e38e

File tree

6 files changed

+12
-17
lines changed

6 files changed

+12
-17
lines changed

apps/torus-bridge/src/app/_components/transfer-details/index.tsx

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import { useStore } from "~/utils/store";
44
import type { TransferContext } from "~/utils/types";
5-
import { useEffect, useState } from "react";
5+
import { useLayoutEffect, useState } from "react";
66
import { TransfersDetailsDialog } from "./_components/transfer-details-dialog";
77

88
export function TransferDetails() {
@@ -14,19 +14,17 @@ export function TransferDetails() {
1414
const transfers = useStore((s) => s.transfers);
1515
const transferLoading = useStore((s) => s.transferLoading);
1616

17-
useEffect(() => {
17+
useLayoutEffect(() => {
1818
const shouldShowModal = !transferLoading && transfers.length > 0;
1919
const latestTransfer = shouldShowModal
2020
? transfers[transfers.length - 1]
2121
: null;
2222

2323
if (latestTransfer && latestTransfer !== selectedTransfer) {
24-
const timeoutId = setTimeout(() => {
24+
queueMicrotask(() => {
2525
setSelectedTransfer(latestTransfer);
2626
setIsModalOpen(true);
27-
}, 0);
28-
29-
return () => clearTimeout(timeoutId);
27+
});
3028
}
3129
}, [transfers, transferLoading, selectedTransfer]);
3230

apps/torus-bridge/src/context/evm-wallet-provider.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,7 @@ export function EvmWalletProvider({
110110

111111
// Effect to run after client-side mounting
112112
useEffect(() => {
113-
const timer = setTimeout(() => setHasMounted(true), 0);
114-
return () => clearTimeout(timer);
113+
queueMicrotask(() => setHasMounted(true));
115114
}, []);
116115

117116
const { wagmiConfig } = useMemo(() => {

apps/torus-bridge/src/context/solana-wallet-provider.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@ export function SolanaWalletProvider({
2222

2323
// Effect to run after client-side mounting
2424
useEffect(() => {
25-
const timer = setTimeout(() => setHasMounted(true), 0);
26-
return () => clearTimeout(timer);
25+
queueMicrotask(() => setHasMounted(true));
2726
}, []);
2827

2928
// TODO support multiple networks

apps/torus-governance/hooks/use-sign-in.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ export const useSignIn = () => {
2626

2727
const auth = localStorage.getItem("authorization");
2828
if (!auth) {
29-
const timer = setTimeout(() => setIsUserAuthenticated(false), 0);
30-
return () => clearTimeout(timer);
29+
queueMicrotask(() => setIsUserAuthenticated(false));
30+
return;
3131
}
3232

3333
// Async function for session checking with proper error handling
@@ -66,7 +66,7 @@ export const useSignIn = () => {
6666
if (!selectedAccount || favoriteWalletAddress === selectedAccount.address)
6767
return;
6868

69-
setTimeout(() => setIsUserAuthenticated(null), 0);
69+
queueMicrotask(() => setIsUserAuthenticated(null));
7070

7171
// Handle localStorage with proper error handling
7272
const clearStorage = async () => {

apps/torus-portal/src/hooks/use-blob-url.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,8 @@ export const useBlobUrl = (blob: Blob | Nullish) => {
99
useEffect(() => {
1010
if (!blob) return;
1111
const objectUrl = URL.createObjectURL(blob);
12-
const timer = setTimeout(() => setUrl(objectUrl), 0);
12+
queueMicrotask(() => setUrl(objectUrl));
1313
return () => {
14-
clearTimeout(timer);
1514
URL.revokeObjectURL(objectUrl);
1615
};
1716
}, [blob]);

apps/torus-wallet/src/app/_components/transactions-sheet.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ export function TransactionsSheet() {
2323
const timer = setTimeout(() => setShouldRenderContent(true), 150);
2424
return () => clearTimeout(timer);
2525
} else {
26-
const timer = setTimeout(() => setShouldRenderContent(false), 0);
27-
return () => clearTimeout(timer);
26+
const frameId = requestAnimationFrame(() => setShouldRenderContent(false));
27+
return () => cancelAnimationFrame(frameId);
2828
}
2929
}, [isOpen]);
3030

0 commit comments

Comments
 (0)