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