diff --git a/license_ui/src/hooks/use_products_store.ts b/license_ui/src/hooks/use_products_store.ts index 21ec22e..66f13c2 100644 --- a/license_ui/src/hooks/use_products_store.ts +++ b/license_ui/src/hooks/use_products_store.ts @@ -1,9 +1,10 @@ -import { concat, pluck, uniq } from "ramda"; +import { concat, find, pluck, propEq, uniq } from "ramda"; import { create } from "zustand"; interface Product { id: string; name: string; + couple: string[]; } interface ProductsStore { @@ -18,8 +19,12 @@ interface ProductsStore { export const useProductsStore = create((set, get) => ({ products: [], selectedProducts: [], - append: (code: string) => - set((state) => ({ selectedProducts: [...state.selectedProducts, code] })), + append: (code: string) => { + const selectedProduct: Product | undefined = find(propEq(code, "id"), get().products); + set((state) => ({ + selectedProducts: uniq([...state.selectedProducts, code, ...(selectedProduct.couple ?? [])]), + })); + }, remove: (code: string) => set((state) => ({ selectedProducts: state.selectedProducts.filter((item) => item !== code) })), unselectAll: () => set({ selectedProducts: [] }),