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, 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, 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), onError: () => setDeletingVariant(null),
}, },
); );
@ -327,6 +335,14 @@ export default function RawMaterialIndex({ rawMaterials, rawMaterialNames, filte
variants={loadedVariants[rawMaterial.id] ?? []} variants={loadedVariants[rawMaterial.id] ?? []}
isLoading={loadingVariants[rawMaterial.id] ?? false} isLoading={loadingVariants[rawMaterial.id] ?? false}
allPreviewItems={allPreviewItems} 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, variants: loadedVariants,
isLoading, isLoading,
allPreviewItems, allPreviewItems,
onDeleteSuccess,
}: { }: {
rawMaterial: RawMaterial; rawMaterial: RawMaterial;
variants: RawMaterialVariant[]; variants: RawMaterialVariant[];
isLoading: boolean; isLoading: boolean;
allPreviewItems: ImagePreviewItem[]; allPreviewItems: ImagePreviewItem[];
onDeleteSuccess?: (variantId: number) => void;
}) { }) {
const { can } = useCan(); const { can } = useCan();
const [deletingVariant, setDeletingVariant] = const [deletingVariant, setDeletingVariant] =
@ -48,7 +50,11 @@ export function RawMaterialVariantSubRow({
variant: deletingVariant.id, variant: deletingVariant.id,
}), }),
{ {
onSuccess: () => setDeletingVariant(null), onSuccess: () => {
const deletedId = deletingVariant.id;
setDeletingVariant(null);
onDeleteSuccess?.(deletedId);
},
}, },
); );
} }