|
1 |
| -import { FC, useEffect } from "react"; |
| 1 | +import { FC, useEffect, useRef } from "react"; |
2 | 2 | import Header from "../Header/Header";
|
3 | 3 | import SwapCard from "../SwapCard/SwapCard";
|
4 | 4 | import SwapDetails from "../SwapDetails/SwapDetails";
|
@@ -82,41 +82,54 @@ export const SwapComponent: FC<SwapProps> = ({
|
82 | 82 | }, [tonConnectInstance]);
|
83 | 83 |
|
84 | 84 | 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 | + |
87 | 95 | 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); |
92 | 106 | }
|
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; |
101 | 113 |
|
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 | + } |
108 | 121 | }
|
| 122 | + if (onTokenSelect) { |
| 123 | + setOnTokenSelect(onTokenSelect); |
| 124 | + } |
| 125 | + if (onSwap) { |
| 126 | + setOnSwap(onSwap); |
| 127 | + } |
| 128 | + isInitMount.current = false; |
| 129 | + return () => { |
| 130 | + clearInterval(refetchInterval); |
| 131 | + }; |
109 | 132 | }
|
110 |
| - if (onTokenSelect) { |
111 |
| - setOnTokenSelect(onTokenSelect); |
112 |
| - } |
113 |
| - if (onSwap) { |
114 |
| - setOnSwap(onSwap); |
115 |
| - } |
116 |
| - |
117 |
| - return () => { |
118 |
| - clearInterval(refetchInterval); |
119 |
| - }; |
120 | 133 | }, []);
|
121 | 134 |
|
122 | 135 | const shouldShowSwapDetails =
|
|
0 commit comments