From 7d0c699fe37622bb4ddc9e765d4987468dc7315b Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 2 Oct 2023 13:25:59 -0500 Subject: [PATCH] ScrollTopButton: delay adding the scroll listener so the feed doesn't jump when navigating back --- src/components/scroll-top-button.tsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/components/scroll-top-button.tsx b/src/components/scroll-top-button.tsx index 4e2437b12..84f23969e 100644 --- a/src/components/scroll-top-button.tsx +++ b/src/components/scroll-top-button.tsx @@ -32,7 +32,7 @@ const ScrollTopButton: React.FC = ({ // Whether we are scrolled past the `threshold`. const [scrolled, setScrolled] = useState(false); // Whether we are scrolled above the `autoloadThreshold`. - const [scrolledTop, setScrolledTop] = useState(true); + const [scrolledTop, setScrolledTop] = useState(false); const autoload = settings.get('autoloadTimelines') === true; const visible = count > 0 && scrolled; @@ -65,7 +65,12 @@ const ScrollTopButton: React.FC = ({ }, [onClick]); useEffect(() => { - window.addEventListener('scroll', handleScroll); + // Delay adding the scroll listener so navigating back doesn't + // unload feed items before the feed is rendered. + setTimeout(() => { + window.addEventListener('scroll', handleScroll); + handleScroll(); + }, 250); return () => { window.removeEventListener('scroll', handleScroll);