diff --git a/src/apps/officer-web/Screens/Dashboard/Email/EmailList.tsx b/src/apps/officer-web/Screens/Dashboard/Email/EmailList.tsx
index 44482c64..1bebaa12 100644
--- a/src/apps/officer-web/Screens/Dashboard/Email/EmailList.tsx
+++ b/src/apps/officer-web/Screens/Dashboard/Email/EmailList.tsx
@@ -1,7 +1,21 @@
import { useEffect, useRef, useState } from 'react';
import { Link } from 'react-router';
import { useQuery, useQueryClient, keepPreviousData } from '@tanstack/react-query';
-import { ChevronLeft, ChevronRight, Inbox, Loader2, Mail, Paperclip, RefreshCw, Search, Send, ShieldAlert, SquarePen, Trash2, X } from 'lucide-react';
+import {
+ ChevronLeft,
+ ChevronRight,
+ Inbox,
+ Loader2,
+ Mail,
+ Paperclip,
+ RefreshCw,
+ Search,
+ Send,
+ ShieldAlert,
+ SquarePen,
+ Trash2,
+ X,
+} from 'lucide-react';
import { toast } from 'sonner';
import { Button } from '@/components/ui/button';
import { useClient } from 'hooks/useClient';
@@ -66,8 +80,12 @@ export const EmailList = () => {
queryKey: isSearching ? ['email-search', debouncedSearch, page] : ['email-messages', page, folder],
queryFn: () =>
isSearching
- ? client.get<{ messages: EmailSummary[]; total: number }>(`/email/search?q=${encodeURIComponent(debouncedSearch)}&page=${page}&limit=${LIMIT}`)
- : client.get<{ messages: EmailSummary[]; total: number }>(`/email/messages?page=${page}&limit=${LIMIT}&folder=${folder}`),
+ ? client.get<{ messages: EmailSummary[]; total: number }>(
+ `/email/search?q=${encodeURIComponent(debouncedSearch)}&page=${page}&limit=${LIMIT}`,
+ )
+ : client.get<{ messages: EmailSummary[]; total: number }>(
+ `/email/messages?page=${page}&limit=${LIMIT}&folder=${folder}`,
+ ),
// Keep the previous results visible while the next query loads, so switching search terms/pages
// never bails to the full-panel loading view (which would unmount the search input and drop focus).
placeholderData: keepPreviousData,
@@ -117,7 +135,10 @@ export const EmailList = () => {
if (!syncableAccount) return;
setSyncing(true);
try {
- const result = await client.post<{ ok: boolean; saved?: number }>(`/email/accounts/${syncableAccount.id}/sync`, {});
+ const result = await client.post<{ ok: boolean; saved?: number }>(
+ `/email/accounts/${syncableAccount.id}/sync`,
+ {},
+ );
if (result.saved !== undefined) {
toast.success(result.saved > 0 ? `${result.saved} new emails` : 'No new emails');
queryClient.invalidateQueries({ queryKey: ['email-messages'] });
@@ -174,11 +195,7 @@ export const EmailList = () => {
}, [messages, selectedId]);
if (isLoading) {
- return (
-
- Loading emails...
-
- );
+ return Loading emails...
;
}
// Show onboarding empty state only when no emails exist at all (never while searching)
@@ -198,7 +215,11 @@ export const EmailList = () => {
No emails synced yet
@@ -238,7 +259,9 @@ export const EmailList = () => {
{total}
{syncing || isSyncing ? (
-
+
+
+
) : syncableAccount ? (