/** * Mapping des chemins de dossiers système IMAP vers les clés i18n. * Les clés sont normalisées en minuscules pour la comparaison. * Couvre les variantes OVH courantes (INBOX, INBOX.Sent, Sent, etc.) */ const SYSTEM_FOLDER_MAP: Record = { 'inbox': 'mail.systemFolder.inbox', 'sent': 'mail.systemFolder.sent', 'inbox.sent': 'mail.systemFolder.sent', 'sent messages': 'mail.systemFolder.sent', 'drafts': 'mail.systemFolder.drafts', 'inbox.drafts': 'mail.systemFolder.drafts', 'archive': 'mail.systemFolder.archive', 'archives': 'mail.systemFolder.archive', 'inbox.archive': 'mail.systemFolder.archive', 'trash': 'mail.systemFolder.trash', 'deleted': 'mail.systemFolder.trash', 'deleted items': 'mail.systemFolder.trash', 'inbox.trash': 'mail.systemFolder.trash', 'junk': 'mail.systemFolder.junk', 'junk e-mail': 'mail.systemFolder.junk', 'spam': 'mail.systemFolder.junk', 'inbox.junk': 'mail.systemFolder.junk', } /** * Icônes Material Symbols associées aux dossiers système. * Pour les dossiers non reconnus : utiliser une icône générique. */ const SYSTEM_FOLDER_ICONS: Record = { 'mail.systemFolder.inbox': 'material-symbols:inbox-outline', 'mail.systemFolder.sent': 'material-symbols:send-outline', 'mail.systemFolder.drafts': 'material-symbols:draft-outline', 'mail.systemFolder.archive': 'material-symbols:archive-outline', 'mail.systemFolder.trash': 'material-symbols:delete-outline', 'mail.systemFolder.junk': 'material-symbols:report-outline', } const DEFAULT_FOLDER_ICON = 'material-symbols:folder-outline' export function useSystemFolderLabel() { const { t } = useI18n() /** * Retourne le label traduit d'un dossier système, ou son displayName si inconnu. * @param path - Chemin IMAP du dossier (ex: "INBOX", "INBOX.Sent") * @param displayName - Nom affiché par défaut si non reconnu */ function getFolderLabel(path: string, displayName: string): string { const key = SYSTEM_FOLDER_MAP[path.toLowerCase()] return key ? t(key) : displayName } /** * Retourne le nom de l'icône Material Symbols pour un dossier. * @param path - Chemin IMAP du dossier */ function getFolderIcon(path: string): string { const key = SYSTEM_FOLDER_MAP[path.toLowerCase()] return key ? (SYSTEM_FOLDER_ICONS[key] ?? DEFAULT_FOLDER_ICON) : DEFAULT_FOLDER_ICON } /** * Indique si un dossier est un dossier système reconnu. */ function isSystemFolder(path: string): boolean { return path.toLowerCase() in SYSTEM_FOLDER_MAP } return { getFolderLabel, getFolderIcon, isSystemFolder, } }