Fix scheduled job list/edit dropping message content
toClient() never returned the message body (html/text for email, message for WhatsApp), so "Manage scheduled" showed nothing to view or edit even though the content existed in storage. Editing a scheduled WhatsApp message also saved to the wrong payload field (text instead of message), silently discarding the edit. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,7 @@ function toClient(job) {
|
||||
const subject = job?.payload?.subject || '';
|
||||
const html = job?.payload?.html || '';
|
||||
const text = job?.payload?.text || '';
|
||||
const message = job?.payload?.message || '';
|
||||
return {
|
||||
id: job.id,
|
||||
kind,
|
||||
@@ -20,6 +21,9 @@ function toClient(job) {
|
||||
sentAt: job.sentAt || null,
|
||||
lastError: job.lastError || null,
|
||||
subject,
|
||||
html,
|
||||
text,
|
||||
message,
|
||||
hasHtml: !!html,
|
||||
hasText: !!text,
|
||||
};
|
||||
@@ -50,7 +54,7 @@ const listScheduledEmails = async (req, res) => {
|
||||
};
|
||||
|
||||
// PATCH /api/scheduled-emails/:id
|
||||
// Allows editing scheduledAt, subject, html/text on queued jobs only
|
||||
// Allows editing scheduledAt and message content (subject/html/text for email jobs, message for WhatsApp jobs) on queued jobs only
|
||||
const updateScheduledEmail = async (req, res) => {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
@@ -58,7 +62,7 @@ const updateScheduledEmail = async (req, res) => {
|
||||
if (!job) return res.status(404).json({ message: 'Job not found' });
|
||||
if (job.status !== 'queued') return res.status(400).json({ message: 'Only queued jobs can be edited' });
|
||||
|
||||
const { scheduledAt, subject, html, text } = req.body || {};
|
||||
const { scheduledAt, subject, html, text, message } = req.body || {};
|
||||
|
||||
const patch = {};
|
||||
if (scheduledAt) {
|
||||
@@ -66,14 +70,12 @@ const updateScheduledEmail = async (req, res) => {
|
||||
if (isNaN(when.getTime())) return res.status(400).json({ message: 'scheduledAt must be a valid ISO date-time' });
|
||||
patch.scheduledAt = when.toISOString();
|
||||
}
|
||||
if (subject != null || html != null || text != null) {
|
||||
if (subject != null || html != null || text != null || message != null) {
|
||||
const payload = { ...(job.payload || {}) };
|
||||
if (subject != null) payload.subject = subject;
|
||||
if (html != null || text != null) {
|
||||
// If html provided explicitly, set html; if text provided, set text
|
||||
if (html != null) payload.html = html;
|
||||
if (text != null) payload.text = text;
|
||||
}
|
||||
if (html != null) payload.html = html;
|
||||
if (text != null) payload.text = text;
|
||||
if (message != null) payload.message = message;
|
||||
patch.payload = payload;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user