Skip to content

Commit fafaac6

Browse files
committed
fix: multiple intervals bug
1 parent c9fd935 commit fafaac6

File tree

1 file changed

+44
-31
lines changed

1 file changed

+44
-31
lines changed

lib/components/Swap/Swap.tsx

Lines changed: 44 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { FC, useEffect } from "react";
1+
import { FC, useEffect, useRef } from "react";
22
import Header from "../Header/Header";
33
import SwapCard from "../SwapCard/SwapCard";
44
import SwapDetails from "../SwapDetails/SwapDetails";
@@ -82,41 +82,54 @@ export const SwapComponent: FC<SwapProps> = ({
8282
}, [tonConnectInstance]);
8383

8484
const { setOnTokenSelect, setOnSwap } = useEventsStore();
85-
const { initializeApp, receive_token, refetchBestRoute, swapModal } =
86-
useSwapStore();
85+
const {
86+
initializeApp,
87+
receive_token,
88+
refetchBestRoute,
89+
swapModal,
90+
pay_token,
91+
} = useSwapStore();
92+
93+
const isInitMount = useRef(true);
94+
8795
useEffect(() => {
88-
const refetchInterval = setInterval(() => {
89-
if (swapModal === ModalState.NONE) {
90-
refetch();
91-
refetchBestRoute();
96+
if (isInitMount) {
97+
let refetchInterval: ReturnType<typeof setInterval>;
98+
if (!pay_token) {
99+
initializeApp();
100+
refetchInterval = setInterval(() => {
101+
if (swapModal === ModalState.NONE) {
102+
refetch();
103+
refetchBestRoute();
104+
}
105+
}, 10000);
92106
}
93-
}, 10000);
94-
initializeApp();
95-
if (window?.Telegram?.WebApp?.initData?.length !== 0) {
96-
ensureDocumentIsScrollable();
97-
}
98-
function ensureDocumentIsScrollable() {
99-
const isScrollable =
100-
document.documentElement.scrollHeight > window.innerHeight;
107+
if (window?.Telegram?.WebApp?.initData?.length !== 0) {
108+
ensureDocumentIsScrollable();
109+
}
110+
function ensureDocumentIsScrollable() {
111+
const isScrollable =
112+
document.documentElement.scrollHeight > window.innerHeight;
101113

102-
if (!isScrollable) {
103-
document.documentElement.style.setProperty(
104-
"height",
105-
"calc(100vh + 1px)",
106-
"important"
107-
);
114+
if (!isScrollable) {
115+
document.documentElement.style.setProperty(
116+
"height",
117+
"calc(100vh + 1px)",
118+
"important"
119+
);
120+
}
108121
}
122+
if (onTokenSelect) {
123+
setOnTokenSelect(onTokenSelect);
124+
}
125+
if (onSwap) {
126+
setOnSwap(onSwap);
127+
}
128+
isInitMount.current = false;
129+
return () => {
130+
clearInterval(refetchInterval);
131+
};
109132
}
110-
if (onTokenSelect) {
111-
setOnTokenSelect(onTokenSelect);
112-
}
113-
if (onSwap) {
114-
setOnSwap(onSwap);
115-
}
116-
117-
return () => {
118-
clearInterval(refetchInterval);
119-
};
120133
}, []);
121134

122135
const shouldShowSwapDetails =

0 commit comments

Comments
 (0)