From e746cf9af45f0148c0f8bbe9901e782b5e7c0df1 Mon Sep 17 00:00:00 2001 From: Lukasz Ostrowski Date: Tue, 28 Feb 2023 09:52:33 +0100 Subject: [PATCH] Slack: Fallback missing user name and last name in message (#219) * Slack: Fallback missing user name and lastname in message * Slack: Add billing address and user email --- .changeset/kind-sheep-jog.md | 6 ++++ .changeset/seven-frogs-return.md | 5 ++++ apps/slack/src/lib/slack.ts | 29 +++++++++++++++++-- .../src/pages/api/webhooks/order-created.ts | 9 ++++++ 4 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 .changeset/kind-sheep-jog.md create mode 100644 .changeset/seven-frogs-return.md diff --git a/.changeset/kind-sheep-jog.md b/.changeset/kind-sheep-jog.md new file mode 100644 index 0000000..046b6a7 --- /dev/null +++ b/.changeset/kind-sheep-jog.md @@ -0,0 +1,6 @@ +--- +"saleor-app-slack": patch +--- + +Fix problem with "undefined" user's name & last name in case they are not available. +Introduces "n/a" fallback \ No newline at end of file diff --git a/.changeset/seven-frogs-return.md b/.changeset/seven-frogs-return.md new file mode 100644 index 0000000..b5e402f --- /dev/null +++ b/.changeset/seven-frogs-return.md @@ -0,0 +1,5 @@ +--- +"saleor-app-slack": minor +--- + +Billing address is now also included into Slack message. Additonally user emails is always defined diff --git a/apps/slack/src/lib/slack.ts b/apps/slack/src/lib/slack.ts index bfc253a..dd3cff7 100644 --- a/apps/slack/src/lib/slack.ts +++ b/apps/slack/src/lib/slack.ts @@ -9,9 +9,27 @@ export const sendSlackMessage = async ( ) => { const { saleorDomain, - order: { id, number, user, shippingAddress, subtotal, shippingPrice, total }, + order: { + id, + number, + user, + shippingAddress, + subtotal, + shippingPrice, + total, + billingAddress, + userEmail, + }, } = data; + const getCustomerName = () => { + if (user?.firstName && user?.lastName) { + return `${user.firstName} ${user.lastName}`; + } else { + return `n/a`; + } + }; + const response = await fetch(to, { method: "POST", body: JSON.stringify({ @@ -27,7 +45,7 @@ export const sendSlackMessage = async ( type: "section", text: { type: "mrkdwn", - text: `*Customer*\n${user?.firstName} ${user?.lastName}\n${user?.email}`, + text: `*Customer*\n${getCustomerName()}\nEmail: ${userEmail}`, }, }, { @@ -37,6 +55,13 @@ export const sendSlackMessage = async ( text: `*Shipping Address*\n${shippingAddress?.streetAddress1}\n${shippingAddress?.postalCode} ${shippingAddress?.city}\n${shippingAddress?.country.country}`, }, }, + { + type: "section", + text: { + type: "mrkdwn", + text: `*Billing Address*\n${billingAddress?.streetAddress1}\n${billingAddress?.postalCode} ${billingAddress?.city}\n${billingAddress?.country.country}`, + }, + }, { type: "section", text: { diff --git a/apps/slack/src/pages/api/webhooks/order-created.ts b/apps/slack/src/pages/api/webhooks/order-created.ts index 0185c89..5e86b10 100644 --- a/apps/slack/src/pages/api/webhooks/order-created.ts +++ b/apps/slack/src/pages/api/webhooks/order-created.ts @@ -10,6 +10,7 @@ import { sendSlackMessage } from "../../../lib/slack"; const OrderCreatedWebhookPayload = gql` fragment OrderCreatedWebhookPayload on OrderCreated { order { + userEmail id number user { @@ -25,6 +26,14 @@ const OrderCreatedWebhookPayload = gql` country } } + billingAddress { + streetAddress1 + city + postalCode + country { + country + } + } subtotal { gross { amount