From ddb3422852caf0fd833a26e10dab4f7443d54438 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Mon, 23 Mar 2026 23:07:19 +0100 Subject: [PATCH] feat: add default mail program settings with localization support --- components/settings/email-settings.tsx | 37 ++++++++++++++++++++++++-- locales/de/common.json | 7 +++++ locales/en/common.json | 7 +++++ locales/es/common.json | 7 +++++ locales/fr/common.json | 7 +++++ locales/it/common.json | 7 +++++ locales/ja/common.json | 7 +++++ locales/nl/common.json | 7 +++++ locales/pt/common.json | 7 +++++ 9 files changed, 91 insertions(+), 2 deletions(-) diff --git a/components/settings/email-settings.tsx b/components/settings/email-settings.tsx index 6bd31dea..132565f4 100644 --- a/components/settings/email-settings.tsx +++ b/components/settings/email-settings.tsx @@ -1,7 +1,8 @@ "use client"; -import { useState } from 'react'; +import { useState, useCallback } from 'react'; import { useTranslations } from 'next-intl'; +import { useConfig } from '@/hooks/use-config'; import { useSettingsStore } from '@/stores/settings-store'; import type { ArchiveMode, HoverAction } from '@/stores/settings-store'; import { ALL_HOVER_ACTIONS } from '@/stores/settings-store'; @@ -10,13 +11,26 @@ import { useEmailStore } from '@/stores/email-store'; import { cn } from '@/lib/utils'; import { SettingsSection, SettingItem, Select, ToggleSwitch } from './settings-section'; import { TrustedSendersModal } from '@/components/trusted-senders-modal'; -import { ChevronRight, AlertTriangle, FolderSync, Loader2 } from 'lucide-react'; +import { ChevronRight, AlertTriangle, FolderSync, Loader2, Mail } from 'lucide-react'; export function EmailSettings() { const t = useTranslations('settings.email_behavior'); + const { appName } = useConfig(); const [showTrustedModal, setShowTrustedModal] = useState(false); const [isReorganizing, setIsReorganizing] = useState(false); const [reorganizeResult, setReorganizeResult] = useState(null); + const [defaultMailStatus, setDefaultMailStatus] = useState<'idle' | 'success' | 'error'>('idle'); + + const handleSetDefaultMailProgram = useCallback(() => { + try { + if (typeof navigator !== 'undefined' && navigator.registerProtocolHandler) { + navigator.registerProtocolHandler('mailto', `${window.location.origin}/compose?mailto=%s`); + setDefaultMailStatus('success'); + } + } catch { + setDefaultMailStatus('error'); + } + }, []); const { markAsReadDelay, @@ -279,6 +293,25 @@ export function EmailSettings() { /> + {/* Default Mail Program */} + +
+ + {defaultMailStatus === 'success' && ( +

{t('default_mail_program.success')}

+ )} + {defaultMailStatus === 'error' && ( +

{t('default_mail_program.error')}

+ )} +
+
+ {/* Trusted Senders */}