From 63f042a91bfe588c2fcc33facaf04ff1c8932db9 Mon Sep 17 00:00:00 2001 From: dominik-zeglen Date: Fri, 23 Oct 2020 12:40:58 +0200 Subject: [PATCH] Improve typing --- .../components/ProductCreatePage/form.tsx | 29 ++++++++++--------- .../components/ProductUpdatePage/form.tsx | 21 +++++++------- src/products/utils/handlers.ts | 4 +-- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/src/products/components/ProductCreatePage/form.tsx b/src/products/components/ProductCreatePage/form.tsx index 1b0e55410..22dc9a58a 100644 --- a/src/products/components/ProductCreatePage/form.tsx +++ b/src/products/components/ProductCreatePage/form.tsx @@ -56,22 +56,23 @@ export interface ProductCreateData extends ProductCreateFormData { stocks: ProductStockInput[]; } +type ProductCreateHandlers = Record< + | "changeMetadata" + | "selectCategory" + | "selectCollection" + | "selectProductType" + | "selectTaxRate", + FormChange +> & + Record< + "changeStock" | "selectAttribute" | "selectAttributeMultiple", + FormsetChange + > & + Record<"addStock" | "deleteStock", (id: string) => void>; export interface UseProductCreateFormResult { change: FormChange; data: ProductCreateData; - handlers: Record< - | "changeMetadata" - | "selectCategory" - | "selectCollection" - | "selectProductType" - | "selectTaxRate", - FormChange - > & - Record< - "changeStock" | "selectAttribute" | "selectAttributeMultiple", - FormsetChange - > & - Record<"addStock" | "deleteStock", (id: string) => void>; + handlers: ProductCreateHandlers; hasChanged: boolean; submit: () => Promise; } @@ -186,7 +187,7 @@ function useProductCreateForm( opts.productTypes, triggerChange ); - const handleStockChange: FormsetChange = (id, value) => { + const handleStockChange: FormsetChange = (id, value) => { triggerChange(); stocks.change(id, value); }; diff --git a/src/products/components/ProductUpdatePage/form.tsx b/src/products/components/ProductUpdatePage/form.tsx index ddc2ab826..14ee81fdf 100644 --- a/src/products/components/ProductUpdatePage/form.tsx +++ b/src/products/components/ProductUpdatePage/form.tsx @@ -62,18 +62,19 @@ export interface ProductUpdateSubmitData extends ProductUpdateFormData { removeStocks: string[]; } +type ProductUpdateHandlers = Record< + "changeMetadata" | "selectCategory" | "selectCollection" | "selectTaxRate", + FormChange +> & + Record< + "changeStock" | "selectAttribute" | "selectAttributeMultiple", + FormsetChange + > & + Record<"addStock" | "deleteStock", (id: string) => void>; export interface UseProductUpdateFormResult { change: FormChange; data: ProductUpdateData; - handlers: Record< - "changeMetadata" | "selectCategory" | "selectCollection" | "selectTaxRate", - FormChange - > & - Record< - "changeStock" | "selectAttribute" | "selectAttributeMultiple", - FormsetChange - > & - Record<"addStock" | "deleteStock", (id: string) => void>; + handlers: ProductUpdateHandlers; hasChanged: boolean; submit: () => Promise; } @@ -185,7 +186,7 @@ function useProductUpdateForm( attributes.data, triggerChange ); - const handleStockChange: FormsetChange = (id, value) => { + const handleStockChange: FormsetChange = (id, value) => { triggerChange(); stocks.change(id, value); }; diff --git a/src/products/utils/handlers.ts b/src/products/utils/handlers.ts index d73162759..9c7021d43 100644 --- a/src/products/utils/handlers.ts +++ b/src/products/utils/handlers.ts @@ -8,7 +8,7 @@ import { getAttributeInputFromProductType, ProductType } from "./data"; export function createAttributeChangeHandler( changeAttributeData: FormsetChange, triggerChange: () => void -): FormsetChange { +): FormsetChange { return (attributeId: string, value: string) => { triggerChange(); changeAttributeData(attributeId, value === "" ? [] : [value]); @@ -19,7 +19,7 @@ export function createAttributeMultiChangeHandler( changeAttributeData: FormsetChange, attributes: FormsetData, triggerChange: () => void -): FormsetChange { +): FormsetChange { return (attributeId: string, value: string) => { const attribute = attributes.find( attribute => attribute.id === attributeId