mail page ui correction maj compose 20 bis 11
This commit is contained in:
parent
de4dfd0a7d
commit
12cd7de9bd
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user