This commit is contained in:
Matt 2025-06-10 01:19:14 +02:00
parent 58b2504e14
commit b4fe29413b
2 changed files with 50 additions and 21 deletions

View File

@ -193,14 +193,27 @@ const copyLink = async (link: string | undefined) => {
};
const formatDate = (dateString: string) => {
const date = new Date(dateString);
return date.toLocaleString('en-US', {
month: 'short',
day: 'numeric',
year: 'numeric',
hour: '2-digit',
minute: '2-digit'
});
if (!dateString) return '';
try {
const date = new Date(dateString);
// Check if date is valid
if (isNaN(date.getTime())) {
return dateString; // Return original if parsing fails
}
return date.toLocaleString('en-GB', {
day: '2-digit',
month: '2-digit',
year: 'numeric',
hour: '2-digit',
minute: '2-digit',
hour12: false
});
} catch (error) {
console.error('Date formatting error:', error);
return dateString;
}
};
const getStatusColor = (status: string) => {

View File

@ -210,14 +210,9 @@ async function fetchImapEmails(
return;
}
const searchCriteria = [
'OR',
['FROM', clientEmail],
['TO', clientEmail],
['CC', clientEmail]
];
imap.search(searchCriteria, (err, results) => {
// Use ALL to get all messages, then filter manually
// This avoids the complex search criteria issues
imap.search(['ALL'], (err, results) => {
if (err) {
console.error(`Search error in ${folderName}:`, err);
searchNextFolder();
@ -252,17 +247,38 @@ async function fetchImapEmails(
return;
}
// Check if this email involves the client
const fromEmail = parsed.from?.text || '';
const toEmails = Array.isArray(parsed.to)
? parsed.to.map((addr: any) => addr.text).join(', ')
: parsed.to?.text || '';
const ccEmails = Array.isArray(parsed.cc)
? parsed.cc.map((addr: any) => addr.text).join(', ')
: parsed.cc?.text || '';
// Filter to only include emails to/from the client
const involvesClient =
fromEmail.toLowerCase().includes(clientEmail.toLowerCase()) ||
toEmails.toLowerCase().includes(clientEmail.toLowerCase()) ||
ccEmails.toLowerCase().includes(clientEmail.toLowerCase());
if (!involvesClient) {
messagesProcessed++;
if (messagesProcessed === messagesToFetch.length) {
searchNextFolder();
}
return;
}
const email: EmailMessage = {
id: parsed.messageId || `${Date.now()}-${seqno}`,
from: parsed.from?.text || '',
to: Array.isArray(parsed.to)
? parsed.to.map((addr: any) => addr.text).join(', ')
: parsed.to?.text || '',
from: fromEmail,
to: toEmails,
subject: parsed.subject || '',
body: parsed.text || '',
html: parsed.html || undefined,
timestamp: parsed.date?.toISOString() || new Date().toISOString(),
direction: parsed.from?.text.toLowerCase().includes(userEmail.toLowerCase()) ? 'sent' : 'received'
direction: fromEmail.toLowerCase().includes(userEmail.toLowerCase()) ? 'sent' : 'received'
};
if (parsed.headers.has('in-reply-to')) {