feat: mail phase 3 - sorting (date/from/subject, asc/desc)
- Add sort_by and sort_order query params to list_mails endpoint - Add deleted_at IS NULL filter to exclude soft-deleted mails - Frontend: sort state in Mail.tsx, sort header bar in MailList - Sort dropdown (Datum/Absender/Betreff) + asc/desc toggle - fetchMails API accepts optional sortBy/sortOrder params - i18n: 6 new sort keys (de/en)
This commit is contained in:
@@ -78,6 +78,8 @@ export function MailPage() {
|
||||
const [activeView, setActiveView] = useState<'folders' | 'list' | 'detail'>('folders');
|
||||
const [selectedMailIds, setSelectedMailIds] = useState<Set<string>>(new Set());
|
||||
const [showMoveDropdown, setShowMoveDropdown] = useState(false);
|
||||
const [sortBy, setSortBy] = useState<'date' | 'from' | 'subject'>('date');
|
||||
const [sortOrder, setSortOrder] = useState<'asc' | 'desc'>('desc');
|
||||
|
||||
// Load accounts
|
||||
const loadAccounts = useCallback(async () => {
|
||||
@@ -150,7 +152,7 @@ export function MailPage() {
|
||||
setMails(result.mails);
|
||||
setMailsTotal(result.total);
|
||||
} else {
|
||||
const result = await fetchMails(selectedFolderId, mailsPage);
|
||||
const result = await fetchMails(selectedFolderId, mailsPage, sortBy, sortOrder);
|
||||
setMails(result.mails);
|
||||
setMailsTotal(result.total);
|
||||
}
|
||||
@@ -160,7 +162,7 @@ export function MailPage() {
|
||||
setMails([]);
|
||||
}
|
||||
setLoadingMails(false);
|
||||
}, [selectedFolderId, mailsPage, searchQuery]);
|
||||
}, [selectedFolderId, mailsPage, searchQuery, sortBy, sortOrder]);
|
||||
|
||||
useEffect(() => {
|
||||
loadMails();
|
||||
@@ -722,6 +724,13 @@ export function MailPage() {
|
||||
selectedMailIds={selectedMailIds}
|
||||
onToggleSelect={handleToggleSelect}
|
||||
onSelectAll={handleSelectAll}
|
||||
sortBy={sortBy}
|
||||
sortOrder={sortOrder}
|
||||
onSortChange={(by, order) => {
|
||||
setSortBy(by);
|
||||
setSortOrder(order);
|
||||
setMailsPage(1);
|
||||
}}
|
||||
/>
|
||||
</ResizablePanel>
|
||||
|
||||
@@ -792,6 +801,13 @@ export function MailPage() {
|
||||
selectedMailIds={selectedMailIds}
|
||||
onToggleSelect={handleToggleSelect}
|
||||
onSelectAll={handleSelectAll}
|
||||
sortBy={sortBy}
|
||||
sortOrder={sortOrder}
|
||||
onSortChange={(by, order) => {
|
||||
setSortBy(by);
|
||||
setSortOrder(order);
|
||||
setMailsPage(1);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user