UNPKG

@bn-digital/strapi-plugin-email-emitter

Version:

Strapi plugin to send emails based on entity lifecycle or schedule rules

56 lines (55 loc) 2.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const constants_1 = require("../constants"); const service = { async sendScheduled() { const startDate = Date.now(); strapi.log.info(`[email] Batch email delivery each-minute job started`); const entityService = strapi.entityService; await entityService .findMany(constants_1.contentTypeUIDs.email, { filters: { scheduled: { $eq: true }, delivered: { $eq: false }, }, publicationState: "preview", }) .then(emails => { strapi.log.warn(`[email] Found ${emails.length} emails to deliver`); emails.forEach(email => entityService.update(constants_1.contentTypeUIDs.email, email.id, { data: { publishedAt: new Date() }, })); }) .catch(err => strapi.log.error(`[email] Error while delivering emails`, err)) .finally(() => strapi.log.info(`[email] Delivery finished (${Date.now() - startDate} ms)`)); }, /** * Instantly send one email * @param emailTemplate * @param initialParams */ async send({ template: emailTemplate, ...initialParams }) { var _a; const startDate = Date.now(); strapi.log.info(`[email] Sending email to ${initialParams.email}`); const entityService = strapi.entityService; const emailDesignerService = strapi.service("plugin::email-designer.template"); const templatePromised = !emailTemplate || !emailTemplate.id || !emailDesignerService ? Promise.resolve((_a = emailTemplate === null || emailTemplate === void 0 ? void 0 : emailTemplate.id) !== null && _a !== void 0 ? _a : null) : emailDesignerService === null || emailDesignerService === void 0 ? void 0 : emailDesignerService.findOne(emailTemplate).then(template => { var _a; return (_a = template === null || template === void 0 ? void 0 : template.id) !== null && _a !== void 0 ? _a : null; }); return templatePromised .then(template => ({ state: "queued", scheduled: false, delivered: false, publishedAt: new Date(), template, ...initialParams, })) .then(data => ({ data })) .then(params => entityService.create(constants_1.contentTypeUIDs.email, params)) .catch(error => strapi.log.error(`[email] Delivery failed`, error)) .finally(() => strapi.log.info(`[email] Delivery finished (${Date.now() - startDate} ms)`)); }, }; exports.default = service;