From 6b241a13de36151a8e4aa5ffd3713a1f6587b9c6 Mon Sep 17 00:00:00 2001 From: Oliver Windall Juhl <59018053+olivermrbl@users.noreply.github.com> Date: Fri, 9 Oct 2020 10:46:42 +0200 Subject: [PATCH] hotfix(medusa-plugin-add-on): Adds cart decorator to add-on plugin --- packages/medusa-plugin-add-ons/.gitignore | 1 + .../src/api/routes/store/create-line-item.js | 10 ------- .../src/api/routes/store/update-line-item.js | 10 ------- .../src/loaders/decorator.js | 26 +++++++++++++++++++ 4 files changed, 27 insertions(+), 20 deletions(-) create mode 100644 packages/medusa-plugin-add-ons/src/loaders/decorator.js diff --git a/packages/medusa-plugin-add-ons/.gitignore b/packages/medusa-plugin-add-ons/.gitignore index e16f73f73a..718e6cc25c 100644 --- a/packages/medusa-plugin-add-ons/.gitignore +++ b/packages/medusa-plugin-add-ons/.gitignore @@ -11,4 +11,5 @@ node_modules /services /models /subscribers +/loaders diff --git a/packages/medusa-plugin-add-ons/src/api/routes/store/create-line-item.js b/packages/medusa-plugin-add-ons/src/api/routes/store/create-line-item.js index 069fa8e353..2cd3a4d7c9 100644 --- a/packages/medusa-plugin-add-ons/src/api/routes/store/create-line-item.js +++ b/packages/medusa-plugin-add-ons/src/api/routes/store/create-line-item.js @@ -32,16 +32,6 @@ export default async (req, res) => { cart = await cartService.addLineItem(cart._id, lineItem) cart = await cartService.decorate(cart, [], ["region"]) - cart.items = await Promise.all( - cart.items.map((item) => - lineItemService.decorate( - item, - ["title", "quantity", "thumbnail", "content", "should_merge"], - ["add_ons"] - ) - ) - ) - res.status(200).json({ cart }) } catch (err) { throw err diff --git a/packages/medusa-plugin-add-ons/src/api/routes/store/update-line-item.js b/packages/medusa-plugin-add-ons/src/api/routes/store/update-line-item.js index 323f259179..b3717325a7 100644 --- a/packages/medusa-plugin-add-ons/src/api/routes/store/update-line-item.js +++ b/packages/medusa-plugin-add-ons/src/api/routes/store/update-line-item.js @@ -45,16 +45,6 @@ export default async (req, res) => { cart = await cartService.decorate(cart, [], ["region"]) - cart.items = await Promise.all( - cart.items.map((item) => - lineItemService.decorate( - item, - ["title", "quantity", "thumbnail", "content", "should_merge"], - ["add_ons"] - ) - ) - ) - res.status(200).json({ cart }) } catch (err) { throw err diff --git a/packages/medusa-plugin-add-ons/src/loaders/decorator.js b/packages/medusa-plugin-add-ons/src/loaders/decorator.js new file mode 100644 index 0000000000..2a94b4f2cc --- /dev/null +++ b/packages/medusa-plugin-add-ons/src/loaders/decorator.js @@ -0,0 +1,26 @@ +export default (container, config) => { + const cartService = container.resolve("cartService") + const addOnLineItemService = container.resolve("addOnLineItemService") + + cartService.addDecorator(async (cart) => { + try { + cart.items = await Promise.all( + cart.items.map((item) => { + if (item.metadata && item.metadata.add_ons) { + return addOnLineItemService.decorate( + item, + ["title", "quantity", "thumbnail", "content", "should_merge"], + ["add_ons"] + ) + } else { + return item + } + }) + ) + + return cart + } catch (error) { + return cart + } + }) +}