136 lines
6.1 KiB
Markdown
136 lines
6.1 KiB
Markdown
# 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-formatter.ts` instead
|
|
- **Reason**: Consolidated email formatting to a single source of truth
|
|
|
|
### 2. `cleanHtml` in `lib/mail-parser-wrapper.ts`
|
|
- **Status**: Deprecated for email composition
|
|
- **Replacement**: Use `cleanHtmlContent` from `lib/utils/email-formatter.ts` instead
|
|
- **Reason**: Better handling of text direction and HTML sanitization
|
|
|
|
## Deprecated Functions
|
|
|
|
### 1. `formatEmailForReplyOrForward` in `lib/services/email-service.ts` (REMOVED)
|
|
- **Status**: Removed
|
|
- **Replacement**: Use `formatEmailForReplyOrForward` from `lib/utils/email-formatter.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-formatter.ts`. This file contains:
|
|
|
|
1. `formatForwardedEmail`: Format emails for forwarding
|
|
2. `formatReplyEmail`: Format emails for replying or replying to all
|
|
3. `formatEmailForReplyOrForward`: Compatibility function that maps to the above two
|
|
4. `cleanHtmlContent`: Safely sanitize HTML content while preserving direction attributes
|
|
|
|
Use these functions for all email formatting needs.
|
|
|
|
## Email Parsing and Processing Functions
|
|
|
|
### 1. `splitEmailHeadersAndBody`
|
|
- **Location**: `app/courrier/page.tsx`
|
|
- **Reason**: Email parsing has been centralized in `lib/mail-parser-wrapper.ts` and the API endpoint.
|
|
- **Replacement**: Use the `decodeEmail` function from `lib/mail-parser-wrapper.ts` which provides a more comprehensive parsing solution.
|
|
- **Status**: Currently marked with `@deprecated` comment, no usages found.
|
|
|
|
### 2. `getReplyBody`
|
|
- **Location**: `app/courrier/page.tsx`
|
|
- **Reason**: Should use the `ReplyContent` component directly.
|
|
- **Replacement**: Use `<ReplyContent email={email} type={type} />` directly.
|
|
- **Status**: Currently marked with `@deprecated` comment, no direct usages found.
|
|
|
|
### 3. `generateEmailPreview`
|
|
- **Location**: `app/courrier/page.tsx`
|
|
- **Reason**: Should use the `EmailPreview` component directly.
|
|
- **Replacement**: Use `<EmailPreview email={email} />` directly.
|
|
- **Status**: Currently marked with `@deprecated` comment, no usages found.
|
|
|
|
### 4. `cleanHtml` (in server/email-parser.ts)
|
|
- **Location**: `lib/server/email-parser.ts`
|
|
- **Reason**: This functionality has been centralized in `lib/mail-parser-wrapper.ts`.
|
|
- **Replacement**: Use `cleanHtml` from `lib/mail-parser-wrapper.ts`.
|
|
- **Status**: Currently marked with `@deprecated` comment, used in `parseEmail` function.
|
|
|
|
### 5. `processHtml` (in parse-email/route.ts)
|
|
- **Location**: `app/api/parse-email/route.ts`
|
|
- **Reason**: HTML processing has been centralized in `lib/mail-parser-wrapper.ts`.
|
|
- **Replacement**: Use `cleanHtml` from `lib/mail-parser-wrapper.ts`.
|
|
- **Status**: Currently marked with `@deprecated` comment, still used in the API route.
|
|
|
|
## Deprecated API Routes
|
|
|
|
### 1. `app/api/mail/[id]/route.ts`
|
|
- **Status**: Deleted
|
|
- **Replacement**: Use `app/api/courrier/[id]/route.ts` instead.
|
|
|
|
### 2. `app/api/mail/route.ts`
|
|
- **Status**: Deleted
|
|
- **Replacement**: Use `app/api/courrier/route.ts` instead.
|
|
|
|
### 3. `app/api/mail/send/route.ts`
|
|
- **Status**: Deleted
|
|
- **Replacement**: Use `app/api/courrier/send/route.ts` instead.
|
|
|
|
## Deprecated Components
|
|
|
|
### ComposeEmail (components/ComposeEmail.tsx)
|
|
|
|
**Status:** Deprecated since November 2023
|
|
**Replacement:** Use `components/email/ComposeEmail.tsx` instead
|
|
|
|
This component has been deprecated 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:**
|
|
1. Update imports in files using the old component to import from `@/components/email/ComposeEmail`
|
|
2. Test to ensure functionality works with the new component
|
|
3. Delete the old component file once all usages have been migrated
|
|
|
|
## Migration Plan
|
|
|
|
### Phase 1: Deprecation (Current)
|
|
- Mark all deprecated functions with `@deprecated` comments
|
|
- Add console warnings to deprecated functions
|
|
- Document alternatives
|
|
|
|
### Phase 2: Removal (Future)
|
|
- Remove deprecated functions after ensuring no code uses them
|
|
- Ensure proper migration path for any code that might have been using these functions
|
|
- Update documentation to remove references to deprecated code
|
|
|
|
## 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**:
|
|
1. Added 'use server' directive to server-only modules
|
|
2. Created client-safe interfaces in client components
|
|
3. Added server actions for email operations that need server capabilities
|
|
4. 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. |