mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 13:32:00 +00:00
refactor(FE-174): implement create, update, and delete grading methods in RecordingApi and update handlers
This commit is contained in:
@@ -29,7 +29,6 @@ import toast from 'react-hot-toast';
|
||||
|
||||
import Card from '@/components/Card';
|
||||
import StepItem from '@/components/steps/StepItem';
|
||||
import { useModal } from '@/components/Modal';
|
||||
import { useGradingFormHandlers } from './useGradingFormHandlers';
|
||||
|
||||
interface GradingFormProps {
|
||||
|
||||
@@ -19,14 +19,15 @@ export const useGradingFormHandlers = (gradingId?: number) => {
|
||||
|
||||
const createGradingHandler = useCallback(
|
||||
async (payload: CreateGradingPayload) => {
|
||||
const res = await RecordingApi.customRequest('gradings', {
|
||||
method: 'POST',
|
||||
payload,
|
||||
}) as BaseApiResponse<unknown>;
|
||||
if (isResponseError(res)) {
|
||||
setRecordingFormErrorMessage(res.message);
|
||||
const res = (await RecordingApi.createGrading(payload)) as
|
||||
| BaseApiResponse<unknown>
|
||||
| undefined;
|
||||
|
||||
if (!res || isResponseError(res)) {
|
||||
setRecordingFormErrorMessage(res?.message || 'Failed to add Grading');
|
||||
return;
|
||||
}
|
||||
|
||||
toast.success(res?.message || 'Successfully added Grading!');
|
||||
router.push('/production/recording');
|
||||
},
|
||||
@@ -35,12 +36,14 @@ export const useGradingFormHandlers = (gradingId?: number) => {
|
||||
|
||||
const updateGradingHandler = useCallback(
|
||||
async (gradingId: number, payload: UpdateGradingPayload) => {
|
||||
const res = await RecordingApi.customRequest(`gradings/${gradingId}`, {
|
||||
method: 'PUT',
|
||||
payload,
|
||||
}) as BaseApiResponse<unknown>;
|
||||
if (isResponseError(res)) {
|
||||
setRecordingFormErrorMessage(res.message);
|
||||
const res = (await RecordingApi.updateGrading(gradingId, payload)) as
|
||||
| BaseApiResponse<unknown>
|
||||
| undefined;
|
||||
|
||||
if (!res || isResponseError(res)) {
|
||||
setRecordingFormErrorMessage(
|
||||
res?.message || 'Failed to update Grading'
|
||||
);
|
||||
return;
|
||||
}
|
||||
toast.success(res?.message || 'Successfully updated Grading!');
|
||||
@@ -59,17 +62,21 @@ export const useGradingFormHandlers = (gradingId?: number) => {
|
||||
|
||||
setIsDeleteLoading(true);
|
||||
try {
|
||||
const res = await RecordingApi.customRequest(`gradings/${gradingId}`, {
|
||||
method: 'DELETE',
|
||||
}) as BaseApiResponse<unknown>;
|
||||
if (isResponseError(res)) {
|
||||
setRecordingFormErrorMessage(res.message);
|
||||
const res = (await RecordingApi.deleteGrading(gradingId)) as
|
||||
| BaseApiResponse<unknown>
|
||||
| undefined;
|
||||
|
||||
if (!res || isResponseError(res)) {
|
||||
setRecordingFormErrorMessage(
|
||||
res?.message || 'Failed to delete Grading'
|
||||
);
|
||||
return;
|
||||
}
|
||||
deleteModal.closeModal();
|
||||
toast.success(res?.message || 'Successfully delete Grading!');
|
||||
router.push('/production/recording');
|
||||
} catch (error) {
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
setRecordingFormErrorMessage('Failed to delete Grading');
|
||||
} finally {
|
||||
setIsDeleteLoading(false);
|
||||
@@ -85,4 +92,4 @@ export const useGradingFormHandlers = (gradingId?: number) => {
|
||||
deleteRecordingClickHandler,
|
||||
confirmationModalDeleteClickHandler,
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -9,6 +9,8 @@ import {
|
||||
CreateRecordingPayload,
|
||||
Recording,
|
||||
UpdateRecordingPayload,
|
||||
CreateGradingPayload,
|
||||
UpdateGradingPayload,
|
||||
} from '@/types/api/production/recording';
|
||||
import {
|
||||
Chickin,
|
||||
@@ -59,6 +61,39 @@ export class RecordingService extends BaseApiService<
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
async createGrading(
|
||||
payload: CreateGradingPayload
|
||||
): Promise<BaseApiResponse<unknown> | undefined> {
|
||||
return await this.customRequest<BaseApiResponse<unknown>>('gradings', {
|
||||
method: 'POST',
|
||||
payload,
|
||||
});
|
||||
}
|
||||
|
||||
async updateGrading(
|
||||
gradingId: number,
|
||||
payload: UpdateGradingPayload
|
||||
): Promise<BaseApiResponse<unknown> | undefined> {
|
||||
return await this.customRequest<BaseApiResponse<unknown>>(
|
||||
`gradings/${gradingId}`,
|
||||
{
|
||||
method: 'PUT',
|
||||
payload,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
async deleteGrading(
|
||||
gradingId: number
|
||||
): Promise<BaseApiResponse<unknown> | undefined> {
|
||||
return await this.customRequest<BaseApiResponse<unknown>>(
|
||||
`gradings/${gradingId}`,
|
||||
{
|
||||
method: 'DELETE',
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export const RecordingApi = new RecordingService('/production/recordings');
|
||||
|
||||
Reference in New Issue
Block a user