diff --git a/frontend/src/pages/Mail.tsx b/frontend/src/pages/Mail.tsx index 52f3c2f..b4bf976 100644 --- a/frontend/src/pages/Mail.tsx +++ b/frontend/src/pages/Mail.tsx @@ -152,23 +152,34 @@ export function MailPage() { // Load mails when folder or page changes const loadMails = useCallback(async () => { if (!selectedFolderId) return; + const currentFolderId = selectedFolderId; setLoadingMails(true); try { if (searchQuery.trim()) { const result = await searchMails(searchQuery); - setMails(result.mails); - setMailsTotal(result.total); + // Only update if still on the same folder + if (selectedFolderIdRef.current === currentFolderId) { + setMails(result.mails); + setMailsTotal(result.total); + } } else { - const result = await fetchMails(selectedFolderId, mailsPage, sortBy, sortOrder); - setMails(result.mails); - setMailsTotal(result.total); + const result = await fetchMails(currentFolderId, mailsPage, sortBy, sortOrder); + // Only update if still on the same folder + if (selectedFolderIdRef.current === currentFolderId) { + setMails(result.mails); + setMailsTotal(result.total); + } } } catch (err) { const msg = err instanceof Error ? err.message : String(err); - setError(msg); - setMails([]); + if (selectedFolderIdRef.current === currentFolderId) { + setError(msg); + setMails([]); + } + } + if (selectedFolderIdRef.current === currentFolderId) { + setLoadingMails(false); } - setLoadingMails(false); }, [selectedFolderId, mailsPage, searchQuery, sortBy, sortOrder]); useEffect(() => {