chore: delete implementation in product collection
This commit is contained in:
		| @@ -52,4 +52,15 @@ export default class ProductsApi { | |||||||
|     if (!res.ok) throw new Error(`Delete error ${res.status}: ${await res.text()}`); |     if (!res.ok) throw new Error(`Delete error ${res.status}: ${await res.text()}`); | ||||||
|     return res.json(); |     return res.json(); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |     async changeStatusVariant(payload) { | ||||||
|  |     // If your API is change status, reuse updateVariant. | ||||||
|  |     const res = await fetch(`${this.baseUrl}/ChangeStatus`, { | ||||||
|  |       method: 'PATCH', | ||||||
|  |       headers: this.headers(), | ||||||
|  |       body: JSON.stringify(payload), | ||||||
|  |     }); | ||||||
|  |     if (!res.ok) throw new Error(`ChangeStatus error ${res.status}: ${await res.text()}`); | ||||||
|  |     return res.json(); | ||||||
|  |   } | ||||||
| } | } | ||||||
| @@ -370,8 +370,8 @@ export default function Categories() { | |||||||
|         <DialogTitle>Delete Category</DialogTitle> |         <DialogTitle>Delete Category</DialogTitle> | ||||||
|         <DialogContent> |         <DialogContent> | ||||||
|           <Box sx={{ display: 'flex', gap: 1, mt: 2, mb: 1 }}> |           <Box sx={{ display: 'flex', gap: 1, mt: 2, mb: 1 }}> | ||||||
|             <Button onClick={() => setConfirmOpen(false)}>Cancel</Button> |             <Button onClick={() => setConfirmOpen(false)} className='button-transparent'>Cancel</Button> | ||||||
|             <Button color="error" variant="contained" onClick={confirmDelete}>Delete</Button> |             <Button color="error" variant="contained" onClick={confirmDelete} className="button-gold">Delete</Button> | ||||||
|           </Box> |           </Box> | ||||||
|         </DialogContent> |         </DialogContent> | ||||||
|       </Dialog> |       </Dialog> | ||||||
|   | |||||||
| @@ -55,6 +55,8 @@ export default function ProductCollections() { | |||||||
|  |  | ||||||
|   const [viewOnly, setViewOnly] = useState(false); |   const [viewOnly, setViewOnly] = useState(false); | ||||||
|  |  | ||||||
|  |   const [confirmOpen, setConfirmOpen] = useState(false); | ||||||
|  |  | ||||||
|   // Tags |   // Tags | ||||||
|   const [loadingTags, setLoadingTags] = useState(true); |   const [loadingTags, setLoadingTags] = useState(true); | ||||||
|   const [typeMap, setTypeMap] = useState({}); |   const [typeMap, setTypeMap] = useState({}); | ||||||
| @@ -167,6 +169,26 @@ export default function ProductCollections() { | |||||||
|     } |     } | ||||||
|   }, [statusFilter, rawRows]); |   }, [statusFilter, rawRows]); | ||||||
|  |  | ||||||
|  |   const handleDeleteClick = (row) => { | ||||||
|  |     setEditRow(row); | ||||||
|  |     setConfirmOpen(true); | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   const confirmDelete = async () => { | ||||||
|  |     try { | ||||||
|  |       if (!editRow?.id) return; | ||||||
|  |       await api.changeStatusVariant({ mongoId: editRow.id, status: 'Inactive' }); | ||||||
|  |       await load(); | ||||||
|  |       toast.success('Deleted successfully'); | ||||||
|  |     } catch (err) { | ||||||
|  |       console.error(err); | ||||||
|  |       toast.error(err?.message || 'Delete failed'); | ||||||
|  |     } finally { | ||||||
|  |       setConfirmOpen(false); | ||||||
|  |       setEditRow(null); | ||||||
|  |     } | ||||||
|  |   }; | ||||||
|  |  | ||||||
|   const columns = [ |   const columns = [ | ||||||
|     { |     { | ||||||
|       field: 'actions', |       field: 'actions', | ||||||
| @@ -212,7 +234,7 @@ export default function ProductCollections() { | |||||||
|               borderRadius: 2, |               borderRadius: 2, | ||||||
|               p: 1, |               p: 1, | ||||||
|             }} |             }} | ||||||
|             onClick={() => { setEditRow(params.row); setViewOnly(false); handleDeleteClick(params?.row); }} |             onClick={() => { setViewOnly(false); handleDeleteClick(params?.row); }} | ||||||
|           > |           > | ||||||
|             <DeleteRoundedIcon fontSize="small" /> |             <DeleteRoundedIcon fontSize="small" /> | ||||||
|           </IconButton> |           </IconButton> | ||||||
| @@ -362,6 +384,16 @@ export default function ProductCollections() { | |||||||
|           /> |           /> | ||||||
|         </DialogContent> |         </DialogContent> | ||||||
|       </Dialog> |       </Dialog> | ||||||
|  |        | ||||||
|  |       <Dialog open={confirmOpen} onClose={() => setConfirmOpen(false)}> | ||||||
|  |         <DialogTitle>Delete Product Collection</DialogTitle> | ||||||
|  |         <DialogContent> | ||||||
|  |           <Box sx={{ display: 'flex', gap: 1, mt: 2, mb: 1 }}> | ||||||
|  |             <Button onClick={() => setConfirmOpen(false)} className='button-transparent'>Cancel</Button> | ||||||
|  |             <Button color="error" variant="contained" onClick={confirmDelete} className="button-gold">Delete</Button> | ||||||
|  |           </Box> | ||||||
|  |         </DialogContent> | ||||||
|  |       </Dialog> | ||||||
|     </Box> |     </Box> | ||||||
|   ); |   ); | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Rodolfo Ruiz
					Rodolfo Ruiz