mail page ui correction maj compose 20 bis 11

This commit is contained in:
alma 2025-04-16 14:21:53 +02:00
parent de4dfd0a7d
commit 12cd7de9bd

View File

@ -125,7 +125,16 @@ export async function GET() {
}
console.log('Available mailboxes:', Object.keys(boxes));
const foldersToCheck = ['INBOX', 'Sent', 'Trash', 'Drafts'];
// Map of folder names to their types
const folderMap = {
'INBOX': 'inbox',
'Sent': 'sent',
'Trash': 'trash',
'Drafts': 'drafts'
};
const foldersToCheck = Object.keys(folderMap);
let foldersProcessed = 0;
const processFolder = (folderName: string) => {
@ -150,12 +159,15 @@ export async function GET() {
return;
}
// Calculate the range for the last 20 messages
const start = Math.max(1, box.messages.total - 19);
const range = `${start}:${box.messages.total}`;
// Search for all messages in the folder
const searchCriteria = ['ALL'];
// For INBOX, exclude drafts
if (folderName === 'INBOX') {
searchCriteria.push(['!KEYWORD', '\\Draft']);
}
// Search for all messages in the range
imap.search(['ALL'], (err, results) => {
imap.search(searchCriteria, (err, results) => {
if (err) {
console.error(`Search error in ${folderName}:`, err);
foldersProcessed++;
@ -165,10 +177,10 @@ export async function GET() {
return;
}
// Filter results to get only the last 20 messages
// Sort results in reverse order (newest first) and take last 20
const messageNumbers = results
.sort((a, b) => b - a) // Sort in descending order
.slice(0, 20); // Take only the last 20
.sort((a, b) => b - a)
.slice(0, 20);
if (messageNumbers.length === 0) {
foldersProcessed++;
@ -193,7 +205,7 @@ export async function GET() {
starred: false,
body: '',
to: '',
folder: folderName
folder: folderMap[folderName] || folderName.toLowerCase()
};
msg.on('body', (stream, info) => {
@ -218,10 +230,18 @@ export async function GET() {
email.id = attrs.uid;
email.read = attrs.flags?.includes('\\Seen') || false;
email.starred = attrs.flags?.includes('\\Flagged') || false;
email.draft = attrs.flags?.includes('\\Draft') || false;
});
msg.once('end', () => {
allEmails.push(email);
// Only add non-draft emails to INBOX
if (folderName === 'INBOX' && !email.draft) {
allEmails.push(email);
}
// Add all emails from other folders
else if (folderName !== 'INBOX') {
allEmails.push(email);
}
});
});
@ -247,6 +267,9 @@ export async function GET() {
function finishProcessing() {
console.log('All folders processed, total emails:', allEmails.length);
// Sort all emails by date
allEmails.sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());
const response = {
emails: allEmails,
mailUrl: process.env.NEXTCLOUD_URL ? `${process.env.NEXTCLOUD_URL}/apps/mail/` : null