payload-plugin-newsletter 0.16.8 → 0.16.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/dist/collections.cjs +104 -40
- package/dist/collections.cjs.map +1 -1
- package/dist/collections.js +104 -40
- package/dist/collections.js.map +1 -1
- package/dist/index.cjs +104 -40
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +104 -40
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4486,7 +4486,7 @@ var createBroadcastsCollection = (pluginConfig) => {
|
|
|
4486
4486
|
return doc;
|
|
4487
4487
|
}
|
|
4488
4488
|
}
|
|
4489
|
-
if (operation === "update"
|
|
4489
|
+
if (operation === "update") {
|
|
4490
4490
|
req.payload.logger.info("Broadcast afterChange update hook triggered", {
|
|
4491
4491
|
operation,
|
|
4492
4492
|
hasProviderId: !!doc.providerId,
|
|
@@ -4501,58 +4501,122 @@ var createBroadcastsCollection = (pluginConfig) => {
|
|
|
4501
4501
|
}
|
|
4502
4502
|
const { BroadcastApiProvider: BroadcastApiProvider2 } = await Promise.resolve().then(() => (init_broadcast2(), broadcast_exports));
|
|
4503
4503
|
const provider = new BroadcastApiProvider2(providerConfig);
|
|
4504
|
-
|
|
4505
|
-
|
|
4506
|
-
|
|
4507
|
-
|
|
4508
|
-
return doc;
|
|
4509
|
-
}
|
|
4510
|
-
const contentChanged = doc.subject !== previousDoc?.subject || doc.contentSection?.preheader !== previousDoc?.contentSection?.preheader || JSON.stringify(doc.contentSection?.content) !== JSON.stringify(previousDoc?.contentSection?.content) || doc.settings?.trackOpens !== previousDoc?.settings?.trackOpens || doc.settings?.trackClicks !== previousDoc?.settings?.trackClicks || doc.settings?.replyTo !== previousDoc?.settings?.replyTo || JSON.stringify(doc.audienceIds) !== JSON.stringify(previousDoc?.audienceIds);
|
|
4511
|
-
if (contentChanged) {
|
|
4512
|
-
const updates = {};
|
|
4513
|
-
if (doc.subject !== previousDoc?.subject) {
|
|
4514
|
-
updates.name = doc.subject;
|
|
4515
|
-
updates.subject = doc.subject;
|
|
4516
|
-
}
|
|
4517
|
-
if (doc.contentSection?.preheader !== previousDoc?.contentSection?.preheader) {
|
|
4518
|
-
updates.preheader = doc.contentSection?.preheader;
|
|
4504
|
+
if (!doc.providerId) {
|
|
4505
|
+
if (!doc.subject || !doc.contentSection?.content) {
|
|
4506
|
+
req.payload.logger.info("Still missing required fields for provider sync");
|
|
4507
|
+
return doc;
|
|
4519
4508
|
}
|
|
4520
|
-
|
|
4521
|
-
|
|
4509
|
+
req.payload.logger.info("Creating broadcast in provider (deferred from initial create)...");
|
|
4510
|
+
const htmlContent = await convertToEmailSafeHtml(doc.contentSection?.content);
|
|
4511
|
+
if (!htmlContent || htmlContent.trim() === "") {
|
|
4512
|
+
req.payload.logger.info("Skipping provider sync - content is empty after conversion");
|
|
4513
|
+
return doc;
|
|
4522
4514
|
}
|
|
4523
|
-
|
|
4524
|
-
|
|
4525
|
-
|
|
4526
|
-
|
|
4527
|
-
|
|
4528
|
-
|
|
4529
|
-
|
|
4530
|
-
|
|
4515
|
+
const createData = {
|
|
4516
|
+
name: doc.subject,
|
|
4517
|
+
subject: doc.subject,
|
|
4518
|
+
preheader: doc.contentSection?.preheader,
|
|
4519
|
+
content: htmlContent,
|
|
4520
|
+
trackOpens: doc.settings?.trackOpens,
|
|
4521
|
+
trackClicks: doc.settings?.trackClicks,
|
|
4522
|
+
replyTo: doc.settings?.replyTo || providerConfig.replyTo,
|
|
4523
|
+
audienceIds: doc.audienceIds?.map((a) => a.audienceId)
|
|
4524
|
+
};
|
|
4525
|
+
req.payload.logger.info("Creating broadcast with data:", {
|
|
4526
|
+
name: createData.name,
|
|
4527
|
+
subject: createData.subject,
|
|
4528
|
+
preheader: createData.preheader || "NONE",
|
|
4529
|
+
contentLength: htmlContent ? htmlContent.length : 0,
|
|
4530
|
+
contentPreview: htmlContent ? htmlContent.substring(0, 100) + "..." : "EMPTY",
|
|
4531
|
+
apiUrl: providerConfig.apiUrl,
|
|
4532
|
+
hasToken: !!providerConfig.token
|
|
4533
|
+
});
|
|
4534
|
+
const providerBroadcast = await provider.create(createData);
|
|
4535
|
+
await req.payload.update({
|
|
4536
|
+
collection: "broadcasts",
|
|
4537
|
+
id: doc.id,
|
|
4538
|
+
data: {
|
|
4539
|
+
providerId: providerBroadcast.id,
|
|
4540
|
+
providerData: providerBroadcast.providerData
|
|
4541
|
+
},
|
|
4542
|
+
req
|
|
4543
|
+
});
|
|
4544
|
+
req.payload.logger.info(`Broadcast ${doc.id} created in provider successfully (deferred)`);
|
|
4545
|
+
return {
|
|
4546
|
+
...doc,
|
|
4547
|
+
providerId: providerBroadcast.id,
|
|
4548
|
+
providerData: providerBroadcast.providerData
|
|
4549
|
+
};
|
|
4550
|
+
}
|
|
4551
|
+
if (doc.providerId) {
|
|
4552
|
+
const capabilities = provider.getCapabilities();
|
|
4553
|
+
const sendStatus = doc.sendStatus || "draft" /* DRAFT */;
|
|
4554
|
+
if (!capabilities.editableStatuses.includes(sendStatus)) {
|
|
4555
|
+
req.payload.logger.info(`Skipping sync for broadcast in status: ${sendStatus}`);
|
|
4556
|
+
return doc;
|
|
4531
4557
|
}
|
|
4532
|
-
|
|
4533
|
-
|
|
4558
|
+
const contentChanged = doc.subject !== previousDoc?.subject || doc.contentSection?.preheader !== previousDoc?.contentSection?.preheader || JSON.stringify(doc.contentSection?.content) !== JSON.stringify(previousDoc?.contentSection?.content) || doc.settings?.trackOpens !== previousDoc?.settings?.trackOpens || doc.settings?.trackClicks !== previousDoc?.settings?.trackClicks || doc.settings?.replyTo !== previousDoc?.settings?.replyTo || JSON.stringify(doc.audienceIds) !== JSON.stringify(previousDoc?.audienceIds);
|
|
4559
|
+
if (contentChanged) {
|
|
4560
|
+
const updates = {};
|
|
4561
|
+
if (doc.subject !== previousDoc?.subject) {
|
|
4562
|
+
updates.name = doc.subject;
|
|
4563
|
+
updates.subject = doc.subject;
|
|
4564
|
+
}
|
|
4565
|
+
if (doc.contentSection?.preheader !== previousDoc?.contentSection?.preheader) {
|
|
4566
|
+
updates.preheader = doc.contentSection?.preheader;
|
|
4567
|
+
}
|
|
4568
|
+
if (JSON.stringify(doc.contentSection?.content) !== JSON.stringify(previousDoc?.contentSection?.content)) {
|
|
4569
|
+
updates.content = await convertToEmailSafeHtml(doc.contentSection?.content);
|
|
4570
|
+
}
|
|
4571
|
+
if (doc.settings?.trackOpens !== previousDoc?.settings?.trackOpens) {
|
|
4572
|
+
updates.trackOpens = doc.settings.trackOpens;
|
|
4573
|
+
}
|
|
4574
|
+
if (doc.settings?.trackClicks !== previousDoc?.settings?.trackClicks) {
|
|
4575
|
+
updates.trackClicks = doc.settings.trackClicks;
|
|
4576
|
+
}
|
|
4577
|
+
if (doc.settings?.replyTo !== previousDoc?.settings?.replyTo) {
|
|
4578
|
+
updates.replyTo = doc.settings.replyTo || providerConfig.replyTo;
|
|
4579
|
+
}
|
|
4580
|
+
if (JSON.stringify(doc.audienceIds) !== JSON.stringify(previousDoc?.audienceIds)) {
|
|
4581
|
+
updates.audienceIds = doc.audienceIds?.map((a) => a.audienceId);
|
|
4582
|
+
}
|
|
4583
|
+
req.payload.logger.info("Syncing broadcast updates to provider", {
|
|
4584
|
+
providerId: doc.providerId,
|
|
4585
|
+
updates
|
|
4586
|
+
});
|
|
4587
|
+
await provider.update(doc.providerId, updates);
|
|
4588
|
+
req.payload.logger.info(`Broadcast ${doc.id} synced to provider successfully`);
|
|
4589
|
+
} else {
|
|
4590
|
+
req.payload.logger.info("No content changes to sync to provider");
|
|
4534
4591
|
}
|
|
4535
|
-
req.payload.logger.info("Syncing broadcast updates to provider", {
|
|
4536
|
-
providerId: doc.providerId,
|
|
4537
|
-
updates
|
|
4538
|
-
});
|
|
4539
|
-
await provider.update(doc.providerId, updates);
|
|
4540
|
-
req.payload.logger.info(`Broadcast ${doc.id} synced to provider successfully`);
|
|
4541
|
-
} else {
|
|
4542
|
-
req.payload.logger.info("No content changes to sync to provider");
|
|
4543
4592
|
}
|
|
4544
4593
|
} catch (error) {
|
|
4594
|
+
req.payload.logger.error("Raw error from broadcast update operation:");
|
|
4595
|
+
req.payload.logger.error(error);
|
|
4545
4596
|
if (error instanceof Error) {
|
|
4546
|
-
req.payload.logger.error("
|
|
4597
|
+
req.payload.logger.error("Error is instance of Error:", {
|
|
4547
4598
|
message: error.message,
|
|
4548
4599
|
stack: error.stack,
|
|
4549
4600
|
name: error.name,
|
|
4550
|
-
|
|
4551
|
-
...error.
|
|
4601
|
+
...error.details,
|
|
4602
|
+
...error.response,
|
|
4603
|
+
...error.data,
|
|
4604
|
+
...error.status,
|
|
4605
|
+
...error.statusText
|
|
4552
4606
|
});
|
|
4607
|
+
} else if (typeof error === "string") {
|
|
4608
|
+
req.payload.logger.error("Error is a string:", error);
|
|
4609
|
+
} else if (error && typeof error === "object") {
|
|
4610
|
+
req.payload.logger.error("Error is an object:", JSON.stringify(error, null, 2));
|
|
4553
4611
|
} else {
|
|
4554
|
-
req.payload.logger.error("
|
|
4612
|
+
req.payload.logger.error("Unknown error type:", typeof error);
|
|
4555
4613
|
}
|
|
4614
|
+
req.payload.logger.error("Failed broadcast document (update operation):", {
|
|
4615
|
+
id: doc.id,
|
|
4616
|
+
subject: doc.subject,
|
|
4617
|
+
hasContent: !!doc.contentSection?.content,
|
|
4618
|
+
contentType: doc.contentSection?.content ? typeof doc.contentSection.content : "none"
|
|
4619
|
+
});
|
|
4556
4620
|
}
|
|
4557
4621
|
}
|
|
4558
4622
|
return doc;
|