feat: enhance variant deletion handling to update loaded variants on success

This commit is contained in:
Yoga Pangestu 2026-08-16 15:32:25 +07:00
parent 078d4e2461
commit 953a395f24
3 changed files with 33 additions and 3 deletions

View File

@ -175,7 +175,15 @@ export default function ProductIndex({ products, categories, productNames, filte
variant: deletingVariant.variant.id,
}),
{
onSuccess: () => setDeletingVariant(null),
onSuccess: () => {
setDeletingVariant(null);
setLoadedVariants((prev) => ({
...prev,
[deletingVariant.product.id]: (prev[deletingVariant.product.id] ?? []).filter(
(v) => v.id !== deletingVariant.variant.id,
),
}));
},
},
);
}

View File

@ -156,7 +156,15 @@ export default function RawMaterialIndex({ rawMaterials, rawMaterialNames, filte
variant: deletingVariant.variant.id,
}),
{
onSuccess: () => setDeletingVariant(null),
onSuccess: () => {
setDeletingVariant(null);
setLoadedVariants((prev) => ({
...prev,
[deletingVariant.rawMaterial.id]: (prev[deletingVariant.rawMaterial.id] ?? []).filter(
(v) => v.id !== deletingVariant.variant.id,
),
}));
},
onError: () => setDeletingVariant(null),
},
);
@ -327,6 +335,14 @@ export default function RawMaterialIndex({ rawMaterials, rawMaterialNames, filte
variants={loadedVariants[rawMaterial.id] ?? []}
isLoading={loadingVariants[rawMaterial.id] ?? false}
allPreviewItems={allPreviewItems}
onDeleteSuccess={(variantId: number) => {
setLoadedVariants((prev) => ({
...prev,
[rawMaterial.id]: (prev[rawMaterial.id] ?? []).filter(
(v) => v.id !== variantId,
),
}));
}}
/>
)}
/>

View File

@ -27,11 +27,13 @@ export function RawMaterialVariantSubRow({
variants: loadedVariants,
isLoading,
allPreviewItems,
onDeleteSuccess,
}: {
rawMaterial: RawMaterial;
variants: RawMaterialVariant[];
isLoading: boolean;
allPreviewItems: ImagePreviewItem[];
onDeleteSuccess?: (variantId: number) => void;
}) {
const { can } = useCan();
const [deletingVariant, setDeletingVariant] =
@ -48,7 +50,11 @@ export function RawMaterialVariantSubRow({
variant: deletingVariant.id,
}),
{
onSuccess: () => setDeletingVariant(null),
onSuccess: () => {
const deletedId = deletingVariant.id;
setDeletingVariant(null);
onDeleteSuccess?.(deletedId);
},
},
);
}