mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 13:32:00 +00:00
refactor(FE-316): Replace bulk delete with single-item delete
This commit is contained in:
@@ -165,7 +165,6 @@ const UniformityTable = ({ refresh }: { refresh?: () => void }) => {
|
|||||||
const [isBulkActionLoading, setIsBulkActionLoading] = useState(false);
|
const [isBulkActionLoading, setIsBulkActionLoading] = useState(false);
|
||||||
|
|
||||||
const singleDeleteModal = useModal();
|
const singleDeleteModal = useModal();
|
||||||
const bulkDeleteModal = useModal();
|
|
||||||
const successModal = useModal();
|
const successModal = useModal();
|
||||||
const singleApproveModal = useModal();
|
const singleApproveModal = useModal();
|
||||||
const singleRejectModal = useModal();
|
const singleRejectModal = useModal();
|
||||||
@@ -275,34 +274,18 @@ const UniformityTable = ({ refresh }: { refresh?: () => void }) => {
|
|||||||
}
|
}
|
||||||
}, [selectedUniformity?.id, refreshUniformities, singleRejectModal]);
|
}, [selectedUniformity?.id, refreshUniformities, singleRejectModal]);
|
||||||
|
|
||||||
const handleBulkDelete = useCallback(() => {
|
|
||||||
bulkDeleteModal.openModal();
|
|
||||||
}, [bulkDeleteModal]);
|
|
||||||
|
|
||||||
const bulkDeleteHandler = useCallback(async () => {
|
|
||||||
setIsBulkActionLoading(true);
|
|
||||||
|
|
||||||
try {
|
|
||||||
await UniformityApi.bulkDelete(selectedRowIds);
|
|
||||||
|
|
||||||
setRowSelection({});
|
|
||||||
refreshUniformities();
|
|
||||||
|
|
||||||
bulkDeleteModal.closeModal();
|
|
||||||
toast.success(
|
|
||||||
`Successfully deleted ${selectedRowIds.length} Uniformity data!`
|
|
||||||
);
|
|
||||||
} catch {
|
|
||||||
toast.error('Failed to delete Uniformity data');
|
|
||||||
} finally {
|
|
||||||
setIsBulkActionLoading(false);
|
|
||||||
}
|
|
||||||
}, [selectedRowIds, refreshUniformities, bulkDeleteModal]);
|
|
||||||
|
|
||||||
const handleCloseFab = useCallback(() => {
|
const handleCloseFab = useCallback(() => {
|
||||||
setRowSelection({});
|
setRowSelection({});
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
const handleDelete = useCallback(() => {
|
||||||
|
if (selectedRowIds.length === 1) {
|
||||||
|
const uniformity = selectedUniformities[0];
|
||||||
|
setSelectedUniformity(uniformity);
|
||||||
|
singleDeleteModal.openModal();
|
||||||
|
}
|
||||||
|
}, [selectedRowIds, selectedUniformities, singleDeleteModal]);
|
||||||
|
|
||||||
const handleBulkApprove = useCallback(() => {
|
const handleBulkApprove = useCallback(() => {
|
||||||
bulkApproveModal.openModal();
|
bulkApproveModal.openModal();
|
||||||
}, [bulkApproveModal]);
|
}, [bulkApproveModal]);
|
||||||
@@ -605,30 +588,6 @@ const UniformityTable = ({ refresh }: { refresh?: () => void }) => {
|
|||||||
</div>
|
</div>
|
||||||
</ConfirmationModal>
|
</ConfirmationModal>
|
||||||
|
|
||||||
<ConfirmationModal
|
|
||||||
ref={bulkDeleteModal.ref}
|
|
||||||
type='error'
|
|
||||||
iconPosition='left'
|
|
||||||
text={`Delete This Data?`}
|
|
||||||
subtitleText={`Are you sure you want to delete this data? (${selectedRowIds.length} data)`}
|
|
||||||
secondaryButton={{
|
|
||||||
text: 'Cancel',
|
|
||||||
}}
|
|
||||||
primaryButton={{
|
|
||||||
text: 'Delete',
|
|
||||||
color: 'primary',
|
|
||||||
isLoading: isBulkActionLoading,
|
|
||||||
onClick: bulkDeleteHandler,
|
|
||||||
}}
|
|
||||||
className={{
|
|
||||||
modalBox: 'rounded-2xl',
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<div className='flex flex-col gap-4 mt-4'>
|
|
||||||
<UniformityConfirmationPreview />
|
|
||||||
</div>
|
|
||||||
</ConfirmationModal>
|
|
||||||
|
|
||||||
<ConfirmationModal
|
<ConfirmationModal
|
||||||
ref={singleApproveModal.ref}
|
ref={singleApproveModal.ref}
|
||||||
type='success'
|
type='success'
|
||||||
@@ -744,7 +703,8 @@ const UniformityTable = ({ refresh }: { refresh?: () => void }) => {
|
|||||||
action: 'DELETE',
|
action: 'DELETE',
|
||||||
icon: 'mdi:delete-outline',
|
icon: 'mdi:delete-outline',
|
||||||
label: 'Delete',
|
label: 'Delete',
|
||||||
onClick: handleBulkDelete,
|
hidden: selectedRowIds.length !== 1,
|
||||||
|
onClick: handleDelete,
|
||||||
permissions: 'lti.production.uniformity.delete',
|
permissions: 'lti.production.uniformity.delete',
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
|
|||||||
@@ -107,18 +107,10 @@ export class UniformityApiService extends BaseApiService<
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
async bulkDelete(
|
async delete(id: number): Promise<BaseApiResponse<Uniformity> | undefined> {
|
||||||
ids: number[]
|
return await this.customRequest<BaseApiResponse<Uniformity>>(`/${id}`, {
|
||||||
): Promise<BaseApiResponse<Uniformity[]> | undefined> {
|
method: 'DELETE',
|
||||||
return await this.customRequest<BaseApiResponse<Uniformity[]>>(
|
});
|
||||||
'bulk-delete',
|
|
||||||
{
|
|
||||||
method: 'POST',
|
|
||||||
payload: {
|
|
||||||
ids,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user