# Deprecated Functions and Code This document tracks functions that have been marked as deprecated and should be removed in future releases. ## 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 `` 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 `` 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.