import { useContext, useEffect, useRef, useState } from 'react'; import { faker } from '@faker-js/faker'; import { dateToOrdinal, ordinalToDate } from '@/app/lib/ordinalDate'; import { Product } from '@/app/lib/product.enum'; import { SupplyChainContext } from '@/app/lib/context/SupplyChain/SupplyChainContext'; import { ParsedBarcode, barcodeToProduct } from '@/app/lib/barcode'; import { BinnerContext } from '../../context/BinnerContext'; import { useGetProcessorByBarcodeId } from '../../hooks'; import styles from './ProductInfo.module.scss'; export function ProductInfo() { const { item, setItem } = useContext(BinnerContext); const { processors } = useContext(SupplyChainContext); const [inputItem, setInputItem] = useState | null>(null); const dateRef = useRef(null); const weightRef = useRef(null); const getProcessorByBarcodeId = useGetProcessorByBarcodeId(); const isCompleteItem = (item: Partial | null) => item && !!(item?.product && item?.date && item?.processor && item?.weight); const [isEntryMode, setIsEntryMode] = useState(!isCompleteItem(item)); useEffect(() => { setIsEntryMode(!isCompleteItem(item)); }, [item]) useEffect(() => { if (isCompleteItem(inputItem)) { setItem(barcodeToProduct(`${inputItem?.product}${inputItem?.date}${inputItem?.processor}${inputItem?.weight}`)); setInputItem(null); } setIsEntryMode(!isCompleteItem(inputItem)); }, [inputItem]) return (
{isEntryMode ? ( ) : ( )}
{ dateRef.current.value = e.currentTarget.value; setInputItem({ ...inputItem || {}, date: dateToOrdinal(new Date(e.currentTarget.value)) }) }} />
{isEntryMode ? ( ) : ( )}
{isEntryMode && ( )}
); }