${selected.bodyText || ""}`) }} />
- {selected.attachments && selected.attachments.length > 0 &&
}
+
+
${escapeHtml(selected.bodyText || "")}`) }} />
+ {selected.attachments && selected.attachments.length > 0 &&
}
@@ -1177,21 +1259,40 @@ function CompactMessageDetail({
function CompactMessageRow({ message, active, checked, scheduled, onCheckedChange, onClick, onStar }: { message: MailMessage; active: boolean; checked: boolean; scheduled?: boolean; onCheckedChange: (checked: boolean) => void; onClick: () => void; onStar: () => void }) {
const visibleLabels = (message.labels || []).slice(0, 2)
+ const hiddenLabelCount = Math.max((message.labels?.length || 0) - visibleLabels.length, 0)
const senderName = senderDisplayName(message)
return (
-
-
onCheckedChange(value === true)} onClick={(event) => event.stopPropagation()} />
-
- {senderName}
-
-
{message.subject}
-
{message.snippet}
- {scheduled &&
已定时}
- {visibleLabels.map((label) =>
)}
- {message.hasAttachments &&
}
+
+
+
onCheckedChange(value === true)} onClick={(event) => event.stopPropagation()} className="mt-0.5 shrink-0 sm:mt-0" />
+ {message.isRead ? (
+
+ ) : (
+
+ )}
+
+
+
{senderName}
+
+ {formatDate(message.receivedAt)}
+
+
+
+
+
{message.subject}
+
{message.snippet}
+ {scheduled &&
已定时}
+ {visibleLabels.map((label) =>
)}
+ {hiddenLabelCount > 0 &&
+{hiddenLabelCount}}
+ {message.hasAttachments &&
}
+
+
{message.snippet}
+
-
{formatDate(message.receivedAt)}
-
@@ -1666,27 +1767,27 @@ function ComposeDialog({ mailbox, open, draft, onOpenChange, onSent }: { mailbox
return (