courrier multi account restore compose

This commit is contained in:
alma 2025-04-30 14:27:58 +02:00
parent bd0a906796
commit 96fc0fe33e

View File

@ -338,6 +338,64 @@ export const useEmailState = () => {
payload: { emailId, isRead, accountId: effectiveAccountId }
});
// If email is being marked as read, update the unread count for this folder
if (isRead && email && !email.flags.seen) {
// Get current count for this folder
const currentCount = state.unreadCountMap[effectiveAccountId]?.[normalizedFolder] || 0;
if (currentCount > 0) {
// Decrement the unread count (minimum 0)
dispatch({
type: 'UPDATE_UNREAD_COUNT',
payload: {
accountId: effectiveAccountId,
folder: normalizedFolder,
count: Math.max(0, currentCount - 1)
}
});
// Also update the prefixed version if needed
const prefixedFolder = `${effectiveAccountId}:${normalizedFolder}`;
const prefixedCount = state.unreadCountMap[effectiveAccountId]?.[prefixedFolder] || 0;
if (prefixedCount > 0) {
dispatch({
type: 'UPDATE_UNREAD_COUNT',
payload: {
accountId: effectiveAccountId,
folder: prefixedFolder,
count: Math.max(0, prefixedCount - 1)
}
});
}
}
}
// If email is being marked as unread, increment the count
else if (!isRead && email && email.flags.seen) {
// Get current count for this folder
const currentCount = state.unreadCountMap[effectiveAccountId]?.[normalizedFolder] || 0;
// Increment the unread count
dispatch({
type: 'UPDATE_UNREAD_COUNT',
payload: {
accountId: effectiveAccountId,
folder: normalizedFolder,
count: currentCount + 1
}
});
// Also update the prefixed version
const prefixedFolder = `${effectiveAccountId}:${normalizedFolder}`;
const prefixedCount = state.unreadCountMap[effectiveAccountId]?.[prefixedFolder] || 0;
dispatch({
type: 'UPDATE_UNREAD_COUNT',
payload: {
accountId: effectiveAccountId,
folder: prefixedFolder,
count: prefixedCount + 1
}
});
}
// Make API call to update on server
const response = await fetch(`/api/courrier/${emailId}/mark-read`, {
method: 'POST',