panel 2 courier api restore
This commit is contained in:
parent
c4f9bee7ee
commit
3aae79e76b
@ -625,23 +625,112 @@ export default function CourrierPage() {
|
||||
|
||||
// Process emails and sort by date
|
||||
const processedEmails = (data.emails || [])
|
||||
.map((email: any) => ({
|
||||
.map((email: any) => {
|
||||
// Add proper handling for from field which might be an array or object
|
||||
let fromText = '';
|
||||
let fromName = '';
|
||||
let toText = '';
|
||||
let ccText = '';
|
||||
let bccText = '';
|
||||
|
||||
// Handle 'from' field
|
||||
if (email.from) {
|
||||
if (Array.isArray(email.from)) {
|
||||
if (email.from.length > 0) {
|
||||
if (typeof email.from[0] === 'object') {
|
||||
fromText = email.from[0].address || '';
|
||||
fromName = email.from[0].name || email.from[0].address?.split('@')[0] || '';
|
||||
} else {
|
||||
fromText = email.from[0] || '';
|
||||
fromName = fromText.split('@')[0] || '';
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (typeof email.from === 'object') {
|
||||
fromText = email.from.address || '';
|
||||
fromName = email.from.name || email.from.address?.split('@')[0] || '';
|
||||
}
|
||||
else if (typeof email.from === 'string') {
|
||||
fromText = email.from;
|
||||
fromName = email.fromName || email.from.split('@')[0] || '';
|
||||
}
|
||||
}
|
||||
|
||||
// Handle 'to' field
|
||||
if (email.to) {
|
||||
if (Array.isArray(email.to)) {
|
||||
if (email.to.length > 0) {
|
||||
if (typeof email.to[0] === 'object') {
|
||||
toText = email.to.map((t: any) => t.address || '').join(', ');
|
||||
} else {
|
||||
toText = email.to.join(', ');
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (typeof email.to === 'object') {
|
||||
toText = email.to.address || '';
|
||||
}
|
||||
else if (typeof email.to === 'string') {
|
||||
toText = email.to;
|
||||
}
|
||||
}
|
||||
|
||||
// Handle 'cc' field
|
||||
if (email.cc) {
|
||||
if (Array.isArray(email.cc)) {
|
||||
if (email.cc.length > 0) {
|
||||
if (typeof email.cc[0] === 'object') {
|
||||
ccText = email.cc.map((c: any) => c.address || '').join(', ');
|
||||
} else {
|
||||
ccText = email.cc.join(', ');
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (typeof email.cc === 'object') {
|
||||
ccText = email.cc.address || '';
|
||||
}
|
||||
else if (typeof email.cc === 'string') {
|
||||
ccText = email.cc;
|
||||
}
|
||||
}
|
||||
|
||||
// Handle 'bcc' field
|
||||
if (email.bcc) {
|
||||
if (Array.isArray(email.bcc)) {
|
||||
if (email.bcc.length > 0) {
|
||||
if (typeof email.bcc[0] === 'object') {
|
||||
bccText = email.bcc.map((b: any) => b.address || '').join(', ');
|
||||
} else {
|
||||
bccText = email.bcc.join(', ');
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (typeof email.bcc === 'object') {
|
||||
bccText = email.bcc.address || '';
|
||||
}
|
||||
else if (typeof email.bcc === 'string') {
|
||||
bccText = email.bcc;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
id: email.id,
|
||||
accountId: 1,
|
||||
from: email.from || '',
|
||||
fromName: email.fromName || email.from?.split('@')[0] || '',
|
||||
to: email.to || '',
|
||||
from: fromText,
|
||||
fromName: fromName,
|
||||
to: toText,
|
||||
subject: email.subject || '(No subject)',
|
||||
content: email.preview || '',
|
||||
content: email.content || '',
|
||||
date: email.date || new Date().toISOString(),
|
||||
read: email.read || false,
|
||||
starred: email.starred || false,
|
||||
folder: email.folder || currentView,
|
||||
cc: email.cc,
|
||||
bcc: email.bcc,
|
||||
cc: ccText,
|
||||
bcc: bccText,
|
||||
flags: email.flags || [],
|
||||
hasAttachments: email.hasAttachments || false
|
||||
}))
|
||||
};
|
||||
})
|
||||
.sort((a: Email, b: Email) => new Date(b.date).getTime() - new Date(a.date).getTime());
|
||||
|
||||
// Set emails
|
||||
@ -691,7 +780,7 @@ export default function CourrierPage() {
|
||||
return account ? account.color : 'bg-gray-500';
|
||||
};
|
||||
|
||||
// Update handleEmailSelect to use the full content that's already in the emails data
|
||||
// Update handleEmailSelect to handle the from field correctly
|
||||
const handleEmailSelect = async (emailId: string) => {
|
||||
try {
|
||||
setContentLoading(true);
|
||||
@ -1105,15 +1194,15 @@ export default function CourrierPage() {
|
||||
<div className="flex items-center gap-4 mb-6">
|
||||
<Avatar className="h-10 w-10">
|
||||
<AvatarFallback>
|
||||
{selectedEmail.fromName?.charAt(0) || selectedEmail.from.charAt(0)}
|
||||
{selectedEmail.fromName?.charAt(0) || selectedEmail.from?.charAt(0) || '?'}
|
||||
</AvatarFallback>
|
||||
</Avatar>
|
||||
<div className="flex-1">
|
||||
<p className="font-medium text-gray-900">
|
||||
{selectedEmail.fromName} <span className="text-gray-500"><{selectedEmail.from}></span>
|
||||
{selectedEmail.fromName || 'Unknown'} {selectedEmail.from && <span className="text-gray-500"><{selectedEmail.from}></span>}
|
||||
</p>
|
||||
<p className="text-sm text-gray-500">
|
||||
to {selectedEmail.to}
|
||||
to {selectedEmail.to || 'No recipients'}
|
||||
</p>
|
||||
{selectedEmail.cc && (
|
||||
<p className="text-sm text-gray-500">
|
||||
@ -1143,7 +1232,7 @@ export default function CourrierPage() {
|
||||
</div>
|
||||
);
|
||||
|
||||
// Update the email list item to match header checkbox alignment
|
||||
// Update the email list item to safely display the fromName
|
||||
const renderEmailListItem = (email: Email) => (
|
||||
<div
|
||||
key={email.id}
|
||||
@ -1164,7 +1253,7 @@ export default function CourrierPage() {
|
||||
<div className="flex items-center justify-between gap-2 mb-1">
|
||||
<div className="flex items-center gap-2 min-w-0">
|
||||
<span className={`text-sm truncate ${!email.read ? 'font-semibold text-gray-900' : 'text-gray-600'}`}>
|
||||
{email.fromName || email.from}
|
||||
{email.fromName || email.from || 'Unknown'}
|
||||
</span>
|
||||
{!email.read && (
|
||||
<span className="w-1.5 h-1.5 bg-blue-600 rounded-full flex-shrink-0"></span>
|
||||
@ -1230,8 +1319,8 @@ export default function CourrierPage() {
|
||||
read: email.read || false,
|
||||
starred: email.starred || false,
|
||||
folder: email.folder || newMailbox,
|
||||
cc: email.cc,
|
||||
bcc: email.bcc,
|
||||
cc: email.cc || '',
|
||||
bcc: email.bcc || '',
|
||||
flags: email.flags || [],
|
||||
raw: email.body || ''
|
||||
}));
|
||||
@ -1539,23 +1628,112 @@ export default function CourrierPage() {
|
||||
|
||||
// Process and sort emails
|
||||
const processedEmails = (data.emails || [])
|
||||
.map((email: any) => ({
|
||||
.map((email: any) => {
|
||||
// Add proper handling for from field which might be an array or object
|
||||
let fromText = '';
|
||||
let fromName = '';
|
||||
let toText = '';
|
||||
let ccText = '';
|
||||
let bccText = '';
|
||||
|
||||
// Handle 'from' field
|
||||
if (email.from) {
|
||||
if (Array.isArray(email.from)) {
|
||||
if (email.from.length > 0) {
|
||||
if (typeof email.from[0] === 'object') {
|
||||
fromText = email.from[0].address || '';
|
||||
fromName = email.from[0].name || email.from[0].address?.split('@')[0] || '';
|
||||
} else {
|
||||
fromText = email.from[0] || '';
|
||||
fromName = fromText.split('@')[0] || '';
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (typeof email.from === 'object') {
|
||||
fromText = email.from.address || '';
|
||||
fromName = email.from.name || email.from.address?.split('@')[0] || '';
|
||||
}
|
||||
else if (typeof email.from === 'string') {
|
||||
fromText = email.from;
|
||||
fromName = email.fromName || email.from.split('@')[0] || '';
|
||||
}
|
||||
}
|
||||
|
||||
// Handle 'to' field
|
||||
if (email.to) {
|
||||
if (Array.isArray(email.to)) {
|
||||
if (email.to.length > 0) {
|
||||
if (typeof email.to[0] === 'object') {
|
||||
toText = email.to.map((t: any) => t.address || '').join(', ');
|
||||
} else {
|
||||
toText = email.to.join(', ');
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (typeof email.to === 'object') {
|
||||
toText = email.to.address || '';
|
||||
}
|
||||
else if (typeof email.to === 'string') {
|
||||
toText = email.to;
|
||||
}
|
||||
}
|
||||
|
||||
// Handle 'cc' field
|
||||
if (email.cc) {
|
||||
if (Array.isArray(email.cc)) {
|
||||
if (email.cc.length > 0) {
|
||||
if (typeof email.cc[0] === 'object') {
|
||||
ccText = email.cc.map((c: any) => c.address || '').join(', ');
|
||||
} else {
|
||||
ccText = email.cc.join(', ');
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (typeof email.cc === 'object') {
|
||||
ccText = email.cc.address || '';
|
||||
}
|
||||
else if (typeof email.cc === 'string') {
|
||||
ccText = email.cc;
|
||||
}
|
||||
}
|
||||
|
||||
// Handle 'bcc' field
|
||||
if (email.bcc) {
|
||||
if (Array.isArray(email.bcc)) {
|
||||
if (email.bcc.length > 0) {
|
||||
if (typeof email.bcc[0] === 'object') {
|
||||
bccText = email.bcc.map((b: any) => b.address || '').join(', ');
|
||||
} else {
|
||||
bccText = email.bcc.join(', ');
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (typeof email.bcc === 'object') {
|
||||
bccText = email.bcc.address || '';
|
||||
}
|
||||
else if (typeof email.bcc === 'string') {
|
||||
bccText = email.bcc;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
id: email.id,
|
||||
accountId: 1,
|
||||
from: email.from || '',
|
||||
fromName: email.fromName || email.from?.split('@')[0] || '',
|
||||
to: email.to || '',
|
||||
from: fromText,
|
||||
fromName: fromName,
|
||||
to: toText,
|
||||
subject: email.subject || '(No subject)',
|
||||
content: email.content || '', // Full content is now included from the API
|
||||
content: email.content || '',
|
||||
date: email.date || new Date().toISOString(),
|
||||
read: email.read || false,
|
||||
starred: email.starred || false,
|
||||
folder: email.folder || currentView,
|
||||
cc: email.cc,
|
||||
bcc: email.bcc,
|
||||
cc: ccText,
|
||||
bcc: bccText,
|
||||
flags: email.flags || [],
|
||||
hasAttachments: email.hasAttachments || false
|
||||
}))
|
||||
};
|
||||
})
|
||||
.sort((a: Email, b: Email) => new Date(b.date).getTime() - new Date(a.date).getTime());
|
||||
|
||||
// Set emails appropriately
|
||||
|
||||
Loading…
Reference in New Issue
Block a user