diff --git a/apps/rebreak-native/app/(app)/mail.tsx b/apps/rebreak-native/app/(app)/mail.tsx index b1ce2fa..e4a9acb 100644 --- a/apps/rebreak-native/app/(app)/mail.tsx +++ b/apps/rebreak-native/app/(app)/mail.tsx @@ -255,7 +255,16 @@ export default function MailScreen() { useMailStatus(plan); const { disconnect, disconnecting } = useMailDisconnect(); const hasAccounts = accounts.length > 0; - const { blockedByDay, blockedByConnection } = useMailStats(hasAccounts); + const { blockedByDay, blockedByConnection, refresh: refreshStats } = useMailStats(hasAccounts); + + // Globaler Refresh-Handler für alle reactive-Trigger (Scan-Success, + // Interval-Change, Connect/Disconnect): refresht beide Datenquellen + // parallel — useMailStatus (accounts, connect-errors, heartbeat) UND + // useMailStats (blockedByDay, blockedByConnection für Charts + Counter). + const refreshAll = () => { + refresh(); + refreshStats(); + }; const [sheetVisible, setSheetVisible] = useState(false); const [successVisible, setSuccessVisible] = useState(false); @@ -290,11 +299,11 @@ export default function MailScreen() { await disconnect(id); setDisconnectingId(null); if (expandedAccount === id) setExpandedAccount(null); - refresh(); + refreshAll(); } function handleConnectSuccess() { - refresh(); + refreshAll(); if (pendingOAuthConnectionId) { setOauthTitleSheetConnectionId(pendingOAuthConnectionId); setPendingOAuthConnectionId(null); @@ -509,11 +518,11 @@ export default function MailScreen() { expanded={expandedAccount === account.id} onToggle={() => toggleAccount(account.id)} onDisconnect={handleDisconnect} - onIntervalChanged={refresh} + onIntervalChanged={refreshAll} onEditSuccess={handleConnectSuccess} disconnecting={disconnectingId === account.id && disconnecting} blockedLast30d={connStat?.count} - onScanSuccess={refresh} + onScanSuccess={refreshAll} /> ); })} @@ -533,7 +542,7 @@ export default function MailScreen() { connectionId={oauthTitleSheetConnectionId} currentTitle={null} onClose={() => { setOauthTitleSheetConnectionId(null); setSuccessVisible(true); }} - onSuccess={() => { setOauthTitleSheetConnectionId(null); setSuccessVisible(true); refresh(); }} + onSuccess={() => { setOauthTitleSheetConnectionId(null); setSuccessVisible(true); refreshAll(); }} /> )} diff --git a/apps/rebreak-native/components/mail/MailDistributionChart.tsx b/apps/rebreak-native/components/mail/MailDistributionChart.tsx index 53ef497..12d09cd 100644 --- a/apps/rebreak-native/components/mail/MailDistributionChart.tsx +++ b/apps/rebreak-native/components/mail/MailDistributionChart.tsx @@ -98,14 +98,14 @@ export function MailDistributionChart({ data, hero, totalBlocked, isLegend }: Pr paddingBottom: 12, }} > - + - + {slices.map((slice) => ( ))}