From 981567f8136c57c9e5fb2249b92a728aadb96c15 Mon Sep 17 00:00:00 2001 From: alma Date: Fri, 25 Apr 2025 19:22:35 +0200 Subject: [PATCH] panel 2 courier api restore --- app/courrier/page.tsx | 95 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 91 insertions(+), 4 deletions(-) diff --git a/app/courrier/page.tsx b/app/courrier/page.tsx index 4b0d243a..9ea17908 100644 --- a/app/courrier/page.tsx +++ b/app/courrier/page.tsx @@ -546,6 +546,25 @@ export default function CourrierPage() { throw new Error(errorData.error || 'Failed to check credentials'); } + // First do a quick request just for folders + try { + const folderResponse = await fetch('/api/courrier?folder=INBOX&page=1&limit=1'); + if (folderResponse.ok) { + const folderData = await folderResponse.json(); + console.log('Preloading folders:', folderData.folders); + if (folderData.folders && folderData.folders.length > 0) { + setAvailableFolders(folderData.folders); + setAccounts(prev => prev.map(account => + account.id === 1 + ? { ...account, folders: folderData.folders } + : account + )); + } + } + } catch (error) { + console.warn('Error preloading folders:', error); + } + // Then load emails (forced fetch with timestamp) const timestamp = Date.now(); const emailResponse = await fetch( @@ -1565,6 +1584,69 @@ export default function CourrierPage() { loadEmails(); }, [currentView]); + // Improve the folder loading logic with a delay and better reliability + useEffect(() => { + let isMounted = true; // For cleanup + + const loadFolders = async () => { + // Only load if we don't have folders yet and we're not already loading + if ((!accounts[1]?.folders || accounts[1]?.folders?.length === 0) && !loading) { + console.log('Explicitly loading folders with delay...'); + + // Set a small delay to ensure other loading operations have completed + setTimeout(async () => { + if (!isMounted) return; + + setLoading(true); + try { + // Make a specific request just to get folders + const timestamp = Date.now(); // Cache busting + const response = await fetch(`/api/courrier?folder=INBOX&page=1&limit=1&skipCache=true&_t=${timestamp}`, { + headers: { + 'Cache-Control': 'no-cache, no-store, must-revalidate', + 'Pragma': 'no-cache' + } + }); + + if (response.ok) { + const data = await response.json(); + if (data.folders && data.folders.length > 0) { + console.log('Successfully loaded folders:', data.folders); + + if (isMounted) { + setAvailableFolders(data.folders); + + // Update the mail account with folders + setAccounts(prev => prev.map(account => + account.id === 1 + ? { ...account, folders: data.folders } + : account + )); + } + } else { + console.warn('No folders found in response'); + } + } else { + console.error('Folder request failed:', response.status); + } + } catch (error) { + console.error('Error explicitly loading folders:', error); + } finally { + if (isMounted) { + setLoading(false); + } + } + }, 500); // 500ms delay + } + }; + + loadFolders(); + + return () => { + isMounted = false; + }; + }, [accounts, loading]); + if (error) { return (
@@ -1708,10 +1790,15 @@ export default function CourrierPage() { )) ) : ( -
-
- - Loading folders... +
+
+ {/* Create placeholder folder items with shimmer effect */} + {Array.from({ length: 5 }).map((_, index) => ( +
+
+
+
+ ))}
)}