mirror of
https://github.com/xtr-dev/payload-mailing.git
synced 2025-12-10 16:23:23 +00:00
BREAKING CHANGE: Remove sendEmailWorkflow, add immediate processing to sendEmailTask
- Remove entire workflows directory and sendEmailWorkflow - Factor out email processing logic into reusable utilities (emailProcessor.ts) - Add processImmediately option to sendEmailTask input schema - Update sendEmailTask to process emails immediately when requested - Update processEmailsTask to use shared processing utilities - Remove workflow-related exports and plugin configuration - Simplify documentation to focus on unified task approach - Export new email processing utilities (processEmailById, processAllEmails) - Bump version to 0.4.0 (breaking change - workflows removed) Migration: Use sendEmailTask with processImmediately: true instead of sendEmailWorkflow
This commit is contained in:
39
src/utils/emailProcessor.ts
Normal file
39
src/utils/emailProcessor.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
import type { Payload } from 'payload'
|
||||
|
||||
/**
|
||||
* Processes a single email by ID using the mailing service
|
||||
* @param payload Payload instance
|
||||
* @param emailId The ID of the email to process
|
||||
* @returns Promise that resolves when email is processed
|
||||
*/
|
||||
export async function processEmailById(payload: Payload, emailId: string): Promise<void> {
|
||||
// Get mailing context from payload
|
||||
const mailingContext = (payload as any).mailing
|
||||
|
||||
if (!mailingContext || !mailingContext.service) {
|
||||
throw new Error('Mailing plugin not properly initialized')
|
||||
}
|
||||
|
||||
// Process the specific email
|
||||
await mailingContext.service.processEmailItem(emailId)
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes all pending and failed emails using the mailing service
|
||||
* @param payload Payload instance
|
||||
* @returns Promise that resolves when all emails are processed
|
||||
*/
|
||||
export async function processAllEmails(payload: Payload): Promise<void> {
|
||||
// Get mailing context from payload
|
||||
const mailingContext = (payload as any).mailing
|
||||
|
||||
if (!mailingContext || !mailingContext.service) {
|
||||
throw new Error('Mailing plugin not properly initialized')
|
||||
}
|
||||
|
||||
// Process pending emails first
|
||||
await mailingContext.service.processEmails()
|
||||
|
||||
// Then retry failed emails
|
||||
await mailingContext.service.retryFailedEmails()
|
||||
}
|
||||
Reference in New Issue
Block a user