-
+
{decodeMimeHeader(mail.from_name) || mail.from_address}
{formatDate(mail.date)}
-
+
{decodeMimeHeader(mail.subject) || t('mail.noSubject')}
{mail.labels && mail.labels.length > 0 && (
diff --git a/frontend/src/pages/Mail.tsx b/frontend/src/pages/Mail.tsx
index ef92c55..2039abc 100644
--- a/frontend/src/pages/Mail.tsx
+++ b/frontend/src/pages/Mail.tsx
@@ -340,6 +340,21 @@ export function MailPage() {
[toast],
);
+ // Handle set flag type (symbol picker)
+ const handleSetFlagType = useCallback(
+ async (mail: Mail, flagType: string) => {
+ try {
+ const isFlagged = flagType !== '';
+ await updateFlags(mail.id, { is_flagged: isFlagged, flag_type: flagType || null });
+ setSelectedMail((prev) => (prev ? { ...prev, is_flagged: isFlagged, flag_type: flagType || null } : prev));
+ setMails((prev) => prev.map((m) => (m.id === mail.id ? { ...m, is_flagged: isFlagged, flag_type: flagType || null } : m)));
+ } catch (err) {
+ toast.error(err instanceof Error ? err.message : String(err));
+ }
+ },
+ [toast],
+ );
+
// Handle toggle select for bulk operations
const handleToggleSelect = useCallback((mailId: string) => {
setSelectedMailIds((prev) => {
@@ -532,29 +547,21 @@ export function MailPage() {
{
id: 'flag',
plugin: 'mail',
- label: 'Flagge',
+ label: 'Markierung',
group: 'mail-actions',
disabled: !hasMail,
- active: selectedMailFlagged,
- icon: (
-
- ),
- onClick: () => selectedMail && handleToggleFlag(selectedMail),
- },
- {
- id: 'create-event',
- plugin: 'mail',
- label: 'Termin',
- group: 'mail-actions',
- disabled: !hasMail,
- icon: (
-
- ),
- onClick: () => selectedMail && handleCreateEvent(selectedMail),
+ type: 'select' as const,
+ selectValue: selectedMail?.flag_type || '',
+ selectOptions: [
+ { value: '', label: 'Keine' },
+ { value: 'star', label: '⭐ Stern' },
+ { value: 'flag', label: '🚩 Flagge' },
+ { value: 'bookmark', label: '🔖 Lesezeichen' },
+ { value: 'important', label: '❗ Wichtig' },
+ { value: 'question', label: '❓ Frage' },
+ ],
+ onSelect: (value: string) => selectedMail && handleSetFlagType(selectedMail, value),
+ onClick: () => {},
},
{
id: 'delete',
@@ -667,7 +674,7 @@ export function MailPage() {
}
registerItems('mail', items);
return () => unregisterPlugin('mail');
- }, [selectedMailId, selectedMailFlagged, selectedMailIds, handleSearch, handleCompose, handleReply, handleForward, handleToggleFlag, handleCreateEvent, handleDeleteMail, handleBulkDelete, handleBulkMarkRead, handleBulkMarkUnread, t]);
+ }, [selectedMailId, selectedMailFlagged, selectedMailIds, handleSearch, handleCompose, handleReply, handleForward, handleToggleFlag, handleSetFlagType, handleDeleteMail, handleBulkDelete, handleBulkMarkRead, handleBulkMarkUnread, t]);
if (loadingAccounts) {
return (