From 422ede89a8344dc7ad785b6700e95aa4ff352c19 Mon Sep 17 00:00:00 2001 From: dominik-zeglen Date: Thu, 2 Apr 2020 12:00:52 +0200 Subject: [PATCH] Add util functions --- .../ProductVariantCreatorPrices.tsx | 25 ++---------- .../ProductVariantCreatorPage/utils.ts | 39 +++++++++++++++++++ 2 files changed, 42 insertions(+), 22 deletions(-) create mode 100644 src/products/components/ProductVariantCreatorPage/utils.ts diff --git a/src/products/components/ProductVariantCreatorPage/ProductVariantCreatorPrices.tsx b/src/products/components/ProductVariantCreatorPage/ProductVariantCreatorPrices.tsx index e63ac92dc..188c8278c 100644 --- a/src/products/components/ProductVariantCreatorPage/ProductVariantCreatorPrices.tsx +++ b/src/products/components/ProductVariantCreatorPage/ProductVariantCreatorPrices.tsx @@ -17,6 +17,7 @@ import { ProductDetails_product_productType_variantAttributes } from "@saleor/pr import CardTitle from "@saleor/components/CardTitle"; import CardSpacer from "@saleor/components/CardSpacer"; import { ProductVariantCreateFormData } from "./form"; +import { getPriceAttributeValues, getStockAttributeValues } from "./utils"; const useStyles = makeStyles( theme => ({ @@ -69,28 +70,8 @@ const ProductVariantCreatorPrices: React.FC = label: attribute.name, value: attribute.id })); - const priceAttributeValues = data.price.all - ? null - : data.price.attribute - ? attributes - .find(attribute => attribute.id === data.price.attribute) - .values.filter(value => - data.attributes - .find(attribute => attribute.id === data.price.attribute) - .values.includes(value.slug) - ) - : []; - const stockAttributeValues = data.stock.all - ? null - : data.stock.attribute - ? attributes - .find(attribute => attribute.id === data.stock.attribute) - .values.filter(value => - data.attributes - .find(attribute => attribute.id === data.stock.attribute) - .values.includes(value.slug) - ) - : []; + const priceAttributeValues = getPriceAttributeValues(data, attributes); + const stockAttributeValues = getStockAttributeValues(data, attributes); return ( <> diff --git a/src/products/components/ProductVariantCreatorPage/utils.ts b/src/products/components/ProductVariantCreatorPage/utils.ts new file mode 100644 index 000000000..5ac5acdf0 --- /dev/null +++ b/src/products/components/ProductVariantCreatorPage/utils.ts @@ -0,0 +1,39 @@ +import { + ProductDetails_product_productType_variantAttributes_values, + ProductDetails_product_productType_variantAttributes +} from "@saleor/products/types/ProductDetails"; +import { ProductVariantCreateFormData } from "./form"; + +export function getPriceAttributeValues( + data: ProductVariantCreateFormData, + attributes: ProductDetails_product_productType_variantAttributes[] +): ProductDetails_product_productType_variantAttributes_values[] { + return data.price.all + ? null + : data.price.attribute + ? attributes + .find(attribute => attribute.id === data.price.attribute) + .values.filter(value => + data.attributes + .find(attribute => attribute.id === data.price.attribute) + .values.includes(value.slug) + ) + : []; +} + +export function getStockAttributeValues( + data: ProductVariantCreateFormData, + attributes: ProductDetails_product_productType_variantAttributes[] +): ProductDetails_product_productType_variantAttributes_values[] { + return data.stock.all + ? null + : data.stock.attribute + ? attributes + .find(attribute => attribute.id === data.stock.attribute) + .values.filter(value => + data.attributes + .find(attribute => attribute.id === data.stock.attribute) + .values.includes(value.slug) + ) + : []; +}