From 219aef046afabf361b78e1c5c22430ce37f0e5ec Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Sat, 31 Oct 2026 04:42:37 +0100 Subject: [PATCH] fix: drop a leading style sheet and padding from message previews (bulwarkmail/webmail#1136) --- src/components/email/ThreadMessageCard.tsx | 3 +- src/lib/__tests__/preview-text.test.ts | 88 ++++++++++++++++++++++ src/lib/preview-text.ts | 88 ++++++++++++++++++++++ src/screens/EmailListScreen.tsx | 3 +- src/screens/UnifiedInboxScreen.tsx | 3 +- 5 files changed, 182 insertions(+), 3 deletions(-) create mode 100644 src/lib/__tests__/preview-text.test.ts create mode 100644 src/lib/preview-text.ts diff --git a/src/components/email/ThreadMessageCard.tsx b/src/components/email/ThreadMessageCard.tsx index 6fd10d7e..51c822ac 100644 --- a/src/components/email/ThreadMessageCard.tsx +++ b/src/components/email/ThreadMessageCard.tsx @@ -10,6 +10,7 @@ import SenderAvatar from '../SenderAvatar'; import { MessageContent, type MessageContentProps } from './MessageContent'; import { emailDisplayDate, formatHeaderDate, formatHeaderTime } from '../../lib/email-date'; import { singleLine } from '../../lib/single-line'; +import { cleanPreview } from '../../lib/preview-text'; import { useSenderWarning } from './use-sender-warning'; interface Props extends MessageContentProps { @@ -58,7 +59,7 @@ export function ThreadMessageCard({ {email.hasAttachment && } {formatHeaderDate(date, locale)} {formatHeaderTime(date, timeFormat, locale)} - {singleLine(email.preview)} + {singleLine(cleanPreview(email.preview))} {starred && } diff --git a/src/lib/__tests__/preview-text.test.ts b/src/lib/__tests__/preview-text.test.ts new file mode 100644 index 00000000..2acc9fda --- /dev/null +++ b/src/lib/__tests__/preview-text.test.ts @@ -0,0 +1,88 @@ +import { describe, expect, it } from 'vitest'; +import fs from 'node:fs'; +import path from 'node:path'; +import { cleanPreview, stripEmphasisMarkers, stripLeadingCss } from '../preview-text'; + +// Copied from the webmail (lib/__tests__/preview-leading-css.test.ts), plus +// the check that the list rows use it (#1136). + +// Some servers build a message preview from its HTML without skipping the +//