From 560299e1297806908f3bafe30da53dc24c37e901 Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Fri, 10 Dec 2021 18:33:31 +0100 Subject: [PATCH] Revert "Revert "[Refactoring] Intersection Observer: Revert redundant workaround for freezing"" This reverts commit 55d7648698917aa9c51d4a4e5ca18b8433a968bd. --- .../middle/hooks/useMessageObservers.ts | 1 - src/hooks/useIntersectionObserver.ts | 34 +++---------------- 2 files changed, 4 insertions(+), 31 deletions(-) diff --git a/src/components/middle/hooks/useMessageObservers.ts b/src/components/middle/hooks/useMessageObservers.ts index 43e8b37fe..c20f1601f 100644 --- a/src/components/middle/hooks/useMessageObservers.ts +++ b/src/components/middle/hooks/useMessageObservers.ts @@ -31,7 +31,6 @@ export default function useMessageObservers( } = useIntersectionObserver({ rootRef: containerRef, throttleMs: INTERSECTION_THROTTLE_FOR_READING, - noAutoFreeze: true, }, (entries) => { if (type !== 'thread') { return; diff --git a/src/hooks/useIntersectionObserver.ts b/src/hooks/useIntersectionObserver.ts index 2900b9bd6..8bb940955 100644 --- a/src/hooks/useIntersectionObserver.ts +++ b/src/hooks/useIntersectionObserver.ts @@ -22,8 +22,6 @@ interface Response { unfreeze: NoneToVoidFunction; } -const AUTO_UNFREEZE_TIMEOUT = 2000; - export function useIntersectionObserver({ rootRef, throttleMs, @@ -32,7 +30,6 @@ export function useIntersectionObserver({ margin, threshold, isDisabled, - noAutoFreeze = false, }: { rootRef: RefObject; throttleMs?: number; @@ -41,16 +38,18 @@ export function useIntersectionObserver({ margin?: number; threshold?: number | number[]; isDisabled?: boolean; - noAutoFreeze?: boolean; }, rootCallback?: RootCallback): Response { const controllerRef = useRef(); const rootCallbackRef = useRef(); const freezeFlagsRef = useRef(0); - const autoUnfreezeTimeoutRef = useRef(); const onUnfreezeRef = useRef(); rootCallbackRef.current = rootCallback; + const freeze = useCallback(() => { + freezeFlagsRef.current++; + }, []); + const unfreeze = useCallback(() => { if (!freezeFlagsRef.current) { return; @@ -64,31 +63,6 @@ export function useIntersectionObserver({ } }, []); - const freeze = useCallback(() => { - freezeFlagsRef.current++; - - if (noAutoFreeze) { - return; - } - - if (autoUnfreezeTimeoutRef.current) { - clearTimeout(autoUnfreezeTimeoutRef.current); - autoUnfreezeTimeoutRef.current = undefined; - } - - // Make sure to unfreeze even if unfreeze callback was not called (which was some hardly-reproducible bug) - autoUnfreezeTimeoutRef.current = window.setTimeout(() => { - autoUnfreezeTimeoutRef.current = undefined; - - if (!freezeFlagsRef.current) { - return; - } - - freezeFlagsRef.current = 1; - unfreeze(); - }, AUTO_UNFREEZE_TIMEOUT); - }, [noAutoFreeze, unfreeze]); - useHeavyAnimationCheck(freeze, unfreeze); useEffect(() => {