From cc2fb0ae4e7be93a8592c247cf11264d418e6237 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20=C5=BBegle=C5=84?= Date: Tue, 18 Aug 2020 16:09:01 +0200 Subject: [PATCH] Fix updating product that has no variants (#649) * Fix updating product that has no variants * Update changelog --- CHANGELOG.md | 1 + .../ProductUpdatePage/ProductUpdatePage.tsx | 42 ++++++++++++------- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 98ed08838..e33100e36 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ All notable, unreleased changes to this project will be documented in this file. - Reset modal state after closing - #644 by @dominik-zeglen - Fix incorrect messages - #643 by @dominik-zeglen - Do not use devserver to run cypress tests - #650 by @dominik-zeglen +- Fix updating product that has no variants - #649 by @dominik-zeglen ## 2.10.1 diff --git a/src/products/components/ProductUpdatePage/ProductUpdatePage.tsx b/src/products/components/ProductUpdatePage/ProductUpdatePage.tsx index 00cd8e1ce..f0efcfd24 100644 --- a/src/products/components/ProductUpdatePage/ProductUpdatePage.tsx +++ b/src/products/components/ProductUpdatePage/ProductUpdatePage.tsx @@ -167,23 +167,33 @@ export const ProductUpdatePage: React.FC = ({ const hasVariants = maybe(() => product.productType.hasVariants, false); const handleSubmit = (data: ProductUpdatePageFormData) => { - const dataStocks = stocks.map(stock => stock.id); - const variantStocks = product.variants[0].stocks.map( - stock => stock.warehouse.id - ); - const stockDiff = diff(variantStocks, dataStocks); + if (product.productType.hasVariants) { + onSubmit({ + ...data, + addStocks: [], + attributes, + removeStocks: [], + updateStocks: [] + }); + } else { + const dataStocks = stocks.map(stock => stock.id); + const variantStocks = product.variants[0]?.stocks.map( + stock => stock.warehouse.id + ); + const stockDiff = diff(variantStocks, dataStocks); - onSubmit({ - ...data, - addStocks: stocks.filter(stock => - stockDiff.added.some(addedStock => addedStock === stock.id) - ), - attributes, - removeStocks: stockDiff.removed, - updateStocks: stocks.filter( - stock => !stockDiff.added.some(addedStock => addedStock === stock.id) - ) - }); + onSubmit({ + ...data, + addStocks: stocks.filter(stock => + stockDiff.added.some(addedStock => addedStock === stock.id) + ), + attributes, + removeStocks: stockDiff.removed, + updateStocks: stocks.filter( + stock => !stockDiff.added.some(addedStock => addedStock === stock.id) + ) + }); + } }; return (