fix(audit): P2 frontend any→concrete types (181→61), heroicons→lucide-react, missing type exports, toast API, Select options, TaskStatus types; P2-9 hooks.py type annotations

This commit is contained in:
Agent Zero
2026-08-17 22:24:24 +02:00
parent 40fd633917
commit 45ebbee26f
52 changed files with 404 additions and 302 deletions
+15 -14
View File
@@ -2,6 +2,7 @@
* Mail settings page — signatures, rules, labels, PGP, vacation responder.
*/
import { asError } from '@/utils/errorTypes';
import React, { useState, useCallback, useEffect } from 'react';
import { useTranslation } from 'react-i18next';
import { useSearchParams } from 'react-router-dom';
@@ -77,8 +78,8 @@ export function MailSettingsPage() {
if (accs.length > 0) {
setSelectedAccountId((prev) => prev || accs[0].id);
}
} catch (err: any) {
toast.error(err?.message || err?.detail || 'Failed to load accounts');
} catch (err: unknown) { const errObj = asError(err);
toast.error(errObj?.message || errObj?.detail || 'Failed to load accounts');
}
setLoading(false);
// eslint-disable-next-line react-hooks/exhaustive-deps
@@ -93,8 +94,8 @@ export function MailSettingsPage() {
toast.success(t('mail.accountCreated'));
setShowAddAccount(false);
resetAccount({ email: '', display_name: '', username: '', imap_host: '', imap_port: 993, smtp_host: '', smtp_port: 587, password: '', is_shared: false });
} catch (err: any) {
toast.error(err?.message || err?.detail || 'Save failed');
} catch (err: unknown) { const errObj = asError(err);
toast.error(errObj?.message || errObj?.detail || 'Save failed');
}
}, [toast, t, resetAccount]);
@@ -107,8 +108,8 @@ export function MailSettingsPage() {
} else {
toast.error(result.message);
}
} catch (err: any) {
toast.error(err?.message || err?.detail || 'Connection test failed');
} catch (err: unknown) { const errObj = asError(err);
toast.error(errObj?.message || errObj?.detail || 'Connection test failed');
} finally {
setTesting(null);
}
@@ -123,8 +124,8 @@ export function MailSettingsPage() {
} else {
toast.success(t('mail.syncSuccess'));
}
} catch (err: any) {
toast.error(err?.message || err?.detail || 'Sync failed');
} catch (err: unknown) { const errObj = asError(err);
toast.error(errObj?.message || errObj?.detail || 'Sync failed');
} finally {
setSyncing(null);
}
@@ -136,8 +137,8 @@ export function MailSettingsPage() {
await deleteAccount(accountId);
setAccounts((prev) => prev.filter((a) => a.id !== accountId));
toast.success(t('mail.accountDeleted'));
} catch (err: any) {
toast.error(err?.message || err?.detail || 'Delete failed');
} catch (err: unknown) { const errObj = asError(err);
toast.error(errObj?.message || errObj?.detail || 'Delete failed');
}
}, [toast, t]);
@@ -147,8 +148,8 @@ export function MailSettingsPage() {
setAccounts((prev) => prev.map((a) => (a.id === accountId ? updated : a)));
setEditingDisplayName(null);
toast.success(t('common.saved'));
} catch (err: any) {
toast.error(err?.message || err?.detail || 'Save failed');
} catch (err: unknown) { const errObj = asError(err);
toast.error(errObj?.message || errObj?.detail || 'Save failed');
}
}, [displayNameValue, toast, t]);
@@ -191,8 +192,8 @@ export function MailSettingsPage() {
setAccounts((prev) => prev.map((a) => (a.id === accountId ? updated : a)));
setFolderMappingEdit(null);
toast.success(t('common.saved'));
} catch (err: any) {
toast.error(err?.message || err?.detail || 'Save failed');
} catch (err: unknown) { const errObj = asError(err);
toast.error(errObj?.message || errObj?.detail || 'Save failed');
} finally {
setSavingMapping(false);
}