From 6f467fa5c6e33720deb123423c94ff0cf62c713f Mon Sep 17 00:00:00 2001 From: alma Date: Sun, 27 Apr 2025 15:00:11 +0200 Subject: [PATCH] courrier correct panel 2 scroll up --- app/courrier/page.tsx | 7 +++++++ components/email/EmailList.tsx | 25 +++++++++++++++++++++++++ hooks/use-courrier.ts | 7 +++++++ 3 files changed, 39 insertions(+) diff --git a/app/courrier/page.tsx b/app/courrier/page.tsx index 5ac8a396..6ef56338 100644 --- a/app/courrier/page.tsx +++ b/app/courrier/page.tsx @@ -361,6 +361,13 @@ export default function CourrierPage() { className="h-9 w-9 text-gray-400 hover:text-gray-600" onClick={() => { setLoading(true); + // Reset to page 1 when manually refreshing + setPage(1); + // Trigger a scroll reset + if (typeof window !== 'undefined') { + window.dispatchEvent(new CustomEvent('reset-email-scroll')); + } + // Load emails loadEmails().finally(() => setLoading(false)); }} > diff --git a/components/email/EmailList.tsx b/components/email/EmailList.tsx index 13c82983..62c4676b 100644 --- a/components/email/EmailList.tsx +++ b/components/email/EmailList.tsx @@ -64,6 +64,31 @@ export default function EmailList({ // Update the emails length tracker setEmailsLength(emails.length); }, [emails, emailsLength, isLoading, scrollPosition]); + + // Add event listener for scroll reset from parent component + React.useEffect(() => { + const handleResetScroll = () => { + console.log("Resetting scroll position to top"); + if (scrollRef.current) { + setTimeout(() => { + if (scrollRef.current) { + // Force scroll to top + scrollRef.current.scrollTop = 0; + } + }, 100); + } + }; + + // Listen for the custom event + window.addEventListener('reset-email-scroll', handleResetScroll); + + // Also reset scroll when folder changes + handleResetScroll(); + + return () => { + window.removeEventListener('reset-email-scroll', handleResetScroll); + }; + }, [currentFolder]); // Reset scroll when folder changes // Handle scroll to detect when user reaches the bottom or scrolls up const handleScroll = (event: React.UIEvent) => { diff --git a/hooks/use-courrier.ts b/hooks/use-courrier.ts index c6e962b0..a4e066c6 100644 --- a/hooks/use-courrier.ts +++ b/hooks/use-courrier.ts @@ -240,6 +240,13 @@ export const useCourrier = () => { // If page is greater than 1, we're loading more emails const isLoadingMore = page > 1; loadEmails(isLoadingMore); + + // If we're loading the first page, publish an event to reset scroll position + if (page === 1 && typeof window !== 'undefined') { + // Use a custom event to communicate with the EmailList component + const event = new CustomEvent('reset-email-scroll'); + window.dispatchEvent(event); + } } }, [currentFolder, page, perPage, session?.user?.id, loadEmails]);