mirror of
http://172.20.10.11:3000/gitadmin/INSIGHT-MVP.git
synced 2026-06-25 00:16:41 +02:00
fix(dashboard): E-Mail Tab lädt sofort mit well-known Inbox-ID als Fallback
Vorher: activeFolderId war null bis Ordnerliste geladen → E-Mail-Query nie gestartet Jetzt: Default-Ordner-ID = 'inbox' (Graph API Well-Known-Name) → sofortiger Abruf Zusätzlich: Fehler-/Leer-Zustand in der Ordner-Sidebar anzeigen Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
0ed48557c4
commit
b6b182a349
1 changed files with 24 additions and 10 deletions
|
|
@ -228,16 +228,16 @@ export function DashboardEmailTab() {
|
|||
const [activityTarget, setActivityTarget] = useState<ActivityTarget | null>(null);
|
||||
const [lastSaved, setLastSaved] = useState<string | null>(null);
|
||||
|
||||
const { data: foldersData, isLoading: foldersLoading } = useOffice365MailFolders();
|
||||
const { data: foldersData, isLoading: foldersLoading, isError: foldersError } =
|
||||
useOffice365MailFolders();
|
||||
const folders = foldersData?.data ?? [];
|
||||
const sortedFolders = sortFolders(folders);
|
||||
|
||||
// Standardmäßig Posteingang
|
||||
const inboxFolder =
|
||||
sortedFolders.find((f) => f.wellKnownName === 'inbox') ??
|
||||
sortedFolders[0] ??
|
||||
null;
|
||||
const activeFolderId = selectedFolderId ?? inboxFolder?.id ?? null;
|
||||
// Standardmäßig Posteingang — Graph API akzeptiert Well-Known-Namen direkt als ID,
|
||||
// sodass E-Mails sofort geladen werden, bevor die Ordnerliste verfügbar ist.
|
||||
// Sobald Ordner geladen sind, wird die echte ID aus der Liste verwendet.
|
||||
const inboxFolder = sortedFolders.find((f) => f.wellKnownName === 'inbox');
|
||||
const activeFolderId = selectedFolderId ?? inboxFolder?.id ?? 'inbox';
|
||||
|
||||
const { data: emailsData, isLoading: emailsLoading, error: emailsError } =
|
||||
useOffice365MailsInFolder(activeFolderId, days);
|
||||
|
|
@ -291,16 +291,30 @@ export function DashboardEmailTab() {
|
|||
<div className={styles.layout}>
|
||||
{/* Ordner-Baum */}
|
||||
<aside className={styles.folderTree}>
|
||||
{foldersLoading ? (
|
||||
{foldersLoading && (
|
||||
<p className={styles.status}>Ordner laden…</p>
|
||||
) : (
|
||||
)}
|
||||
{foldersError && !foldersLoading && (
|
||||
<p className={styles.errorText} style={{ padding: '0.5rem 0.875rem', fontSize: '0.8125rem' }}>
|
||||
Ordner konnten nicht geladen werden.
|
||||
</p>
|
||||
)}
|
||||
{!foldersLoading && !foldersError && sortedFolders.length === 0 && (
|
||||
<p className={styles.status} style={{ padding: '0.5rem 0.875rem', fontSize: '0.8125rem' }}>
|
||||
Keine Ordner gefunden.
|
||||
</p>
|
||||
)}
|
||||
{!foldersLoading && sortedFolders.length > 0 && (
|
||||
<ul className={styles.folderList}>
|
||||
{sortedFolders.map((folder) => (
|
||||
<li key={folder.id}>
|
||||
<button
|
||||
type="button"
|
||||
className={`${styles.folderItem} ${
|
||||
activeFolderId === folder.id ? styles.folderItemActive : ''
|
||||
activeFolderId === folder.id ||
|
||||
(activeFolderId === 'inbox' && folder.wellKnownName === 'inbox')
|
||||
? styles.folderItemActive
|
||||
: ''
|
||||
}`}
|
||||
onClick={() => {
|
||||
setSelectedFolderId(folder.id);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue