UNPKG

@coursebuilder/core

Version:

Core package for Course Builder

63 lines (61 loc) 2.57 kB
import { NEW_PURCHASE_CREATED_EVENT } from "./chunk-K5LCDWG2.js"; import { __name } from "./chunk-VLQXSCFN.js"; // src/inngest/commerce/send-creator-slack-notification.ts import { NonRetriableError } from "inngest"; import pluralize from "pluralize"; import { isEmpty } from "@coursebuilder/nodash"; var sendCreatorSlackNotificationConfig = { id: `send-post-purchase-slack`, name: "Send Post Purchase Slack" }; var sendCreatorSlackNotificationTrigger = { event: NEW_PURCHASE_CREATED_EVENT }; var sendCreatorSlackNotificationHandler = /* @__PURE__ */ __name(async ({ event, step, db, notificationProvider, paymentProvider }) => { if (!notificationProvider) { console.log("no notification provider"); return { error: "no notification provider" }; } const purchase = await step.run("load the new purchase", async () => { return db.getPurchase(event.data.purchaseId); }); if (!purchase) throw new NonRetriableError("No new purchase found"); const purchaseInfo = await step.run("load the new purchase info", async () => { return paymentProvider.getPurchaseInfo(event.data.checkoutSessionId, db); }); if (!purchaseInfo) throw new NonRetriableError("No new purchase info found"); return await step.run("send slack notification", async () => { await notificationProvider.sendNotification({ channel: notificationProvider.defaultChannelId, text: process.env.NODE_ENV === "production" ? `Someone purchased ${purchaseInfo.product.name}` : `Someone purchased ${purchaseInfo.product.name} in ${process.env.NODE_ENV}`, attachments: [ { fallback: `Sold (${purchaseInfo.quantity}) ${purchaseInfo.product.name}`, text: `Somebody (${purchaseInfo.email}) bought ${purchaseInfo.quantity} ${pluralize("copy", purchaseInfo.quantity)} of ${purchaseInfo.product.name} for ${`$${purchase.totalAmount}`}${isEmpty(purchase.upgradedFromId) ? "" : " as an upgrade"}`, color: process.env.NODE_ENV === "production" ? "#eba234" : "#5ceb34", title: `Sold (${purchaseInfo.quantity}) ${purchaseInfo.product.name}` } ] }); }); }, "sendCreatorSlackNotificationHandler"); var sendCreatorSlackNotification = { config: sendCreatorSlackNotificationConfig, trigger: sendCreatorSlackNotificationTrigger, handler: sendCreatorSlackNotificationHandler }; export { sendCreatorSlackNotificationConfig, sendCreatorSlackNotificationTrigger, sendCreatorSlackNotificationHandler, sendCreatorSlackNotification }; //# sourceMappingURL=chunk-DME5RP54.js.map