ready to test

Testing

Signed-off-by: Kenneth Obsequio <k80308392@gmail.com>
This commit is contained in:
2026-06-22 10:07:20 +08:00
parent 56d984a26a
commit fbef7cb6e6
283 changed files with 25961 additions and 1072 deletions
+66 -1
View File
@@ -847,6 +847,62 @@ export function CoursesProvider({ children }) {
[request],
);
// =========================================================================
// COURSE PRODUCT & CATEGORIES
// =========================================================================
const fetchCourseProduct = useCallback(
(courseId) => request(async () => {
const { data } = await api.get(`/admin/products/courses/${courseId}/product`);
return data.data ?? null;
}), [request],
);
const saveCourseProduct = useCallback(
(courseId, payload) => request(async () => {
const { data } = await api.put(`/admin/products/courses/${courseId}/product`, payload);
toast.success("Product listing saved.");
return data.data ?? null;
}), [request],
);
const removeCourseProduct = useCallback(
(courseId) => request(async () => {
await api.delete(`/admin/products/courses/${courseId}/product`);
toast.success("Product listing removed.");
return true;
}), [request],
);
const fetchCourseCategories = useCallback(
(courseId) => request(async () => {
const { data } = await api.get(`/admin/products/courses/${courseId}/categories`);
return data.data ?? [];
}), [request],
);
const syncCourseCategories = useCallback(
(courseId, categoryIds) => request(async () => {
const { data } = await api.post(`/admin/products/courses/${courseId}/categories`, { category_ids: categoryIds });
toast.success("Categories updated.");
return data.data ?? [];
}), [request],
);
const fetchInstructors = useCallback(
(courseId) => request(async () => {
const { data } = await api.get(`${BASE}/${courseId}/instructors`);
return data.data ?? [];
}), [request],
);
const syncInstructors = useCallback(
(courseId, instructors) => request(async () => {
await api.put(`${BASE}/${courseId}/instructors`, { instructors });
toast.success("Instructors updated.");
}), [request],
);
const fetchCourseFieldValues = useCallback(
(field) =>
request(async () => {
@@ -1001,7 +1057,16 @@ export function CoursesProvider({ children }) {
// ── fetch field values ─────────────────────────────
fetchCourseFieldValues,
fetchUnitFieldValues,
fetchLessonFieldValues
fetchLessonFieldValues,
// ── course product & categories ────────────────────
fetchCourseProduct,
saveCourseProduct,
removeCourseProduct,
fetchCourseCategories,
syncCourseCategories,
fetchInstructors,
syncInstructors,
}}>
{children}
</CoursesContext.Provider>