feat: add normalizePrices function to standardize price data and update shared prices initialization

This commit is contained in:
Yoga Pangestu 2026-08-22 16:10:03 +07:00
parent 1f61ff895a
commit a75fae2233

View File

@ -51,6 +51,15 @@ function createEmptyPrices(): Array<{ type: string; price: number }> {
return PRICE_TYPES.map((pt) => ({ type: pt.key, price: 0 }));
}
function normalizePrices(
prices: Array<{ type: string; price: number }>,
): Array<{ type: string; price: number }> {
return PRICE_TYPES.map((pt) => {
const existing = prices.find((p) => p.type === pt.key);
return { type: pt.key, price: existing?.price ?? 0 };
});
}
type VariantState = {
name: string;
stock: number;
@ -78,7 +87,11 @@ export default function ProductCreate({ categories }: Props) {
);
const [sharedPrices, setSharedPrices] = useState<
Array<{ type: string; price: number }>
>(draft?.sharedPrices ?? createEmptyPrices());
>(
draft?.sharedPrices
? normalizePrices(draft.sharedPrices)
: createEmptyPrices(),
);
const [variants, setVariants] = useState<VariantState[]>(() => {
if (draft?.variants && draft.variants.length > 0) {
return draft.variants.map((v) => {
@ -92,6 +105,7 @@ export default function ProductCreate({ categories }: Props) {
...v,
photos,
uploading: false,
prices: normalizePrices(v.prices),
};
});
}