- {/* Spacer for floating nav buttons on xs */}
-
-
+
+
- {calendarInvitation ? (
-
- ) : null}
+ {calendarInvitation ? (
+
+ ) : null}
- {isSpamMessage &&
}
+ {isSpam &&
}
- {showRepliesCta ? (
-
-
-
- ) : null}
-
- {/* Conversation messages */}
- {/* Previous messages in conversation */}
- {hasConversation && conversation.map((msg) => {
- const isExpanded = expandedIds.has(msg.id)
-
- if (isExpanded) {
- return (
-
- toggleExpanded(msg.id)}
- onPrintConversation={() => openConversationPrint(email)}
- />
-
- )
- }
-
- return (
-
-
toggleExpanded(msg.id)}
- />
+ {showRepliesCta ? (
+
+
- )
- })}
+ ) : null}
- {/* Last / main message — always expanded */}
- ${email.preview}`}
- isSpam={email.spam === true}
- isLast={true}
- starred={isStarred}
- attachments={mainMessageAttachments}
- onToggleStar={() => onToggleStar(email.id)}
- onPrintConversation={() => openConversationPrint(email)}
- />
+ {hasConversation &&
+ conversation.map((msg) => {
+ const isExpanded = expandedIds.has(msg.id)
- {showReplyForwardBar ? (
+ if (isExpanded) {
+ return (
+
+ toggleExpanded(msg.id)}
+ onPrintConversation={handlePrint}
+ />
+
+ )
+ }
+
+ return (
+
+ toggleExpanded(msg.id)}
+ />
+
+ )
+ })}
+
+
+
+ {showReplyForwardBar ? (
startThreadCompose("reply")}
className={MAIL_REPLY_BUTTON_CLASS}
>
-
+
Répondre
- ) : null}
+ ) : null}
- {inlineCompose ? (
-
- ) : null}
-
+ ) : null}
diff --git a/components/gmail/email-view/email-view-header.tsx b/components/gmail/email-view/email-view-header.tsx
index bf2e811..336ff91 100644
--- a/components/gmail/email-view/email-view-header.tsx
+++ b/components/gmail/email-view/email-view-header.tsx
@@ -9,9 +9,8 @@ import {
TooltipTrigger,
} from "@/components/ui/tooltip"
import { cn } from "@/lib/utils"
-import type { Email } from "@/lib/email-data"
+import type { ApiMessageSummary } from "@/lib/api/types"
import type { FolderTreeNode, LabelRowItem } from "@/lib/sidebar-nav-data"
-import { openConversationPrint } from "@/lib/print-conversation"
import { MailLabelPillStrip } from "@/components/gmail/mail-label-pills"
import {
MAIL_ICON_BTN,
@@ -81,9 +80,10 @@ const LABEL_DISPLAY_NAMES: Record
= {
}
export interface EmailViewSubjectHeaderProps {
- email: Email
+ email: ApiMessageSummary
isSpamMessage: boolean
onNotSpam?: () => void
+ onPrint?: () => void
onNavigateToLabel?: (label: string) => void
showLabelChip?: (label: string) => boolean
labelBgByText?: Map
@@ -98,6 +98,7 @@ export function EmailViewSubjectHeader({
email,
isSpamMessage,
onNotSpam,
+ onPrint,
onNavigateToLabel,
showLabelChip,
labelBgByText,
@@ -120,7 +121,7 @@ export function EmailViewSubjectHeader({
{labelBgByText && onNavigateToLabel ? (
openConversationPrint(email)}
+ onClick={() => onPrint?.()}
>
diff --git a/components/gmail/email-view/email-view-messages.tsx b/components/gmail/email-view/email-view-messages.tsx
index 4543480..a99de3e 100644
--- a/components/gmail/email-view/email-view-messages.tsx
+++ b/components/gmail/email-view/email-view-messages.tsx
@@ -13,10 +13,8 @@ import {
senderInitial,
} from "@/lib/sender-display"
import { MailDateText } from "@/components/gmail/mail-date-text"
-import type {
- ConversationMessage,
- EmailAttachment,
-} from "@/lib/email-data"
+import type { ApiMessageFull } from "@/lib/api/types"
+import type { EmailAttachment } from "@/lib/email-data"
import { ContactHoverCard } from "@/components/gmail/contact-hover-card"
import { EmailViewMessageToolbar } from "@/components/gmail/email-view/email-view-toolbar"
import { SandboxedContent } from "@/components/gmail/email-view/sandboxed-content"
@@ -30,10 +28,12 @@ export function CollapsedMessage({
message,
onClick,
}: {
- message: ConversationMessage
+ message: ApiMessageFull
onClick: () => void
}) {
- const name = cleanSenderName(message.sender)
+ const senderName = message.from[0]?.name ?? ""
+ const senderAddr = message.from[0]?.address ?? ""
+ const name = cleanSenderName(senderName)
const color = avatarColor(name)
return (
@@ -57,7 +57,7 @@ export function CollapsedMessage({