diff --git a/src/layouts/Main.tsx b/src/layouts/Main.tsx index f3962eb..5a8cca2 100644 --- a/src/layouts/Main.tsx +++ b/src/layouts/Main.tsx @@ -27,6 +27,8 @@ import { import { useAppSelector } from '../hooks' import styles from './style.module.scss' +const UPDATE_INTERVAL_MS = 120000 + export const MainLayout = () => { const dispatch: Dispatch = useDispatch() const [isLoading, setIsLoading] = useState(true) @@ -35,7 +37,7 @@ export const MainLayout = () => { const usersAppData = useAppSelector((state) => state.userAppData) // Ref to track if `subscribeForSigits` has been called - const hasSubscribed = useRef(false) + const hasSubscribed = useRef(null) useEffect(() => { const metadataController = new MetadataController() @@ -109,10 +111,27 @@ export const MainLayout = () => { if (pubkey && !hasSubscribed.current) { // Call `subscribeForSigits` only if it hasn't been called before + // #193 disabled websocket subscribtion, keep updating the sigits on UPDATE_INTERVAL_MS until #194 is done + // Set up the update sigit loop, use setTimeout to make sure times between updates are consistent + // (not affected by execution duration of subscribeForSigits call) + const loop = () => { + hasSubscribed.current = window.setTimeout(async () => { + await subscribeForSigits(pubkey) + loop() + }, UPDATE_INTERVAL_MS) + } subscribeForSigits(pubkey) + loop() // Mark `subscribeForSigits` as called - hasSubscribed.current = true + //hasSubscribed.current = true + } + } + + return () => { + if (hasSubscribed.current) { + window.clearTimeout(hasSubscribed.current) + hasSubscribed.current = null } } }, [authState, usersAppData])