@coursebuilder/core
Version:
Core package for Course Builder
63 lines (61 loc) • 2.57 kB
JavaScript
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