6.1 KiB
Deprecated Functions and Files
This document lists functions and files that have been deprecated and should not be used in new code.
Deprecated Files
1. lib/email-formatter.ts (REMOVED)
- Status: Removed
- Replacement: Use
lib/utils/email-utils.tsinstead - Reason: Consolidated email formatting to a single source of truth
2. lib/mail-parser-wrapper.ts (REMOVED)
- Status: Removed
- Replacement: Use functions from
lib/utils/email-utils.tsinstead - Reason: Consolidated email formatting and sanitization to a single source of truth
3. lib/email-parser.ts (REMOVED)
- Status: Removed
- Replacement: Use
lib/server/email-parser.tsfor parsing andlib/utils/email-utils.tsfor sanitization - Reason: Consolidated email parsing and formatting to dedicated files
4. lib/compose-mime-decoder.ts (REMOVED)
- Status: Removed
- Replacement: Use
decodeComposeContentandencodeComposeContentfunctions fromlib/utils/email-utils.ts - Reason: Consolidated MIME handling into the centralized formatter
Deprecated Functions
1. formatEmailForReplyOrForward in lib/services/email-service.ts (REMOVED)
- Status: Removed
- Replacement: Use
formatEmailForReplyOrForwardfromlib/utils/email-utils.ts - Reason: Consolidated email formatting to a single source of truth
2. formatSubject in lib/services/email-service.ts (REMOVED)
- Status: Removed
- Replacement: None specific, handled by centralized formatter
- Reason: Internal function of the email formatter
3. createQuoteHeader in lib/services/email-service.ts (REMOVED)
- Status: Removed
- Replacement: None specific, handled by centralized formatter
- Reason: Internal function of the email formatter
Centralized Email Formatting
All email formatting is now handled by the centralized formatter in lib/utils/email-utils.ts. This file contains:
formatForwardedEmail: Format emails for forwardingformatReplyEmail: Format emails for replying or replying to allformatEmailForReplyOrForward: Compatibility function that maps to the above twosanitizeHtml: Safely sanitize HTML content while preserving direction attributes
Use these functions for all email formatting needs.
Email Parsing and Processing Functions
1. splitEmailHeadersAndBody (REMOVED)
- Location: Removed
- Reason: Email parsing has been centralized in
lib/server/email-parser.tsand the API endpoint. - Replacement: Use the
parseEmailfunction fromlib/server/email-parser.tswhich provides a comprehensive parsing solution.
2. getReplyBody
- Location:
app/courrier/page.tsx - Reason: Should use the
ReplyContentcomponent directly. - Replacement: Use
<ReplyContent email={email} type={type} />directly. - Status: Currently marked with
@deprecatedcomment, no direct usages found.
3. generateEmailPreview
- Location:
app/courrier/page.tsx - Reason: Should use the
EmailPreviewcomponent directly. - Replacement: Use
<EmailPreview email={email} />directly. - Status: Currently marked with
@deprecatedcomment, no usages found.
4. cleanHtml (REMOVED)
- Location: Removed from
lib/server/email-parser.ts - Reason: HTML sanitization has been consolidated in
lib/utils/email-utils.ts. - Replacement: Use
sanitizeHtmlfromlib/utils/email-utils.ts.
5. processHtml (REMOVED)
- Location: Removed from
app/api/parse-email/route.ts - Reason: HTML processing has been consolidated in
lib/utils/email-utils.ts. - Replacement: Use
sanitizeHtmlfromlib/utils/email-utils.ts.
Deprecated API Routes
1. app/api/mail/[id]/route.ts (REMOVED)
- Status: Removed
- Replacement: Use
app/api/courrier/[id]/route.tsinstead.
2. app/api/mail/route.ts (REMOVED)
- Status: Removed
- Replacement: Use
app/api/courrier/route.tsinstead.
3. app/api/mail/send/route.ts (REMOVED)
- Status: Removed
- Replacement: Use
app/api/courrier/send/route.tsinstead.
Deprecated Components
ComposeEmail (components/ComposeEmail.tsx) (REMOVED)
Status: Removed
Replacement: Use components/email/ComposeEmail.tsx instead
This component has been removed in favor of the more modular and better structured version in the email directory. The newer version has the following improvements:
- Better separation between user message and quoted content in replies/forwards
- Improved styling and visual hierarchy
- Support for RTL/LTR text direction toggling
- More modern UI using Card components instead of a modal
- Better state management for email composition
A compatibility layer has been added to the new component to ensure backward compatibility with existing code that uses the old component. This allows for a smooth transition without breaking changes.
Migration Plan
Phase 1: Deprecation (Completed)
- Mark all deprecated functions with
@deprecatedcomments - Add console warnings to deprecated functions
- Document alternatives
Phase 2: Removal (Completed)
- Remove deprecated files:
lib/email-parser.tsandlib/mail-parser-wrapper.ts - Consolidate all email formatting in
lib/utils/email-utils.ts - All email parsing now in
lib/server/email-parser.ts - Update documentation to point to the centralized utilities
Server-Client Code Separation
Server-side imports in client components
- Status: Fixed in November 2023
- Issue: Server-only modules like ImapFlow were being imported directly in client components, causing build errors with messages like "Module not found: Can't resolve 'tls'"
- Fix:
- Added 'use server' directive to server-only modules
- Created client-safe interfaces in client components
- Added server actions for email operations that need server capabilities
- Refactored ComposeEmail component to avoid direct server imports
This architecture ensures a clean separation between server and client code, which is essential for Next.js applications, particularly with the App Router. It prevents Node.js-specific modules from being bundled into client-side JavaScript.