From a238fad7ead5b2a0f14ff3fc41de36e452896191 Mon Sep 17 00:00:00 2001 From: Sebastian Rindom Date: Sat, 17 Oct 2020 17:05:49 +0200 Subject: [PATCH] Fix/enhanced tracking (#127) * fix: adds tracking of returns and cancellations * fix: adds tracking of returns and cancellations --- .../src/subscribers/order.js | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/packages/medusa-plugin-segment/src/subscribers/order.js b/packages/medusa-plugin-segment/src/subscribers/order.js index 2451512fe1..4253a3fb62 100644 --- a/packages/medusa-plugin-segment/src/subscribers/order.js +++ b/packages/medusa-plugin-segment/src/subscribers/order.js @@ -1,5 +1,49 @@ class OrderSubscriber { constructor({ segmentService, eventBusService }) { + eventBusService.subscribe( + "order.items_returned", + async ({ order, return: ret }) => { + const shipping = [] + if (ret.shipping_method && ret.shipping_method.price) { + shipping.push({ + ...ret.shipping_method, + price: -1 * ret.shipping_method.price, + }) + } + + const toBuildFrom = { + ...order, + shipping_methods: shipping, + items: ret.items.map((i) => + order.items.find((l) => l._id === i.item_id) + ), + } + + const orderData = await segmentService.buildOrder(toBuildFrom) + const orderEvent = { + event: "Order Refunded", + userId: order.customer_id, + properties: orderData, + timestamp: new Date(), + } + + segmentService.track(orderEvent) + } + ) + + eventBusService.subscribe("order.canceled", async (order) => { + const date = new Date() + const orderData = await segmentService.buildOrder(order) + const orderEvent = { + event: "Order Cancelled", + userId: order.customer_id, + properties: orderData, + timestamp: date, + } + + segmentService.track(orderEvent) + }) + eventBusService.subscribe("order.placed", async (order) => { const date = new Date(parseInt(order.created)) const orderData = await segmentService.buildOrder(order)