feat: restore landing style and add separate courses/admin UX
This commit is contained in:
@ -419,6 +419,38 @@ class ApiClient {
|
||||
return this.request<any>(`/moderation/reviews/${reviewId}/unhide`, { method: 'POST' });
|
||||
}
|
||||
|
||||
async getModerationCourses(params?: { status?: string; search?: string }) {
|
||||
const searchParams = new URLSearchParams();
|
||||
if (params?.status) searchParams.set('status', params.status);
|
||||
if (params?.search) searchParams.set('search', params.search);
|
||||
const query = searchParams.toString();
|
||||
return this.request<any[]>(`/moderation/courses${query ? `?${query}` : ''}`);
|
||||
}
|
||||
|
||||
async getPendingModerationCourses() {
|
||||
return this.request<any[]>('/moderation/pending');
|
||||
}
|
||||
|
||||
async approveModerationCourse(courseId: string, note?: string) {
|
||||
return this.request<any>(`/moderation/${courseId}/approve`, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({ note }),
|
||||
});
|
||||
}
|
||||
|
||||
async rejectModerationCourse(courseId: string, reason: string) {
|
||||
return this.request<any>(`/moderation/${courseId}/reject`, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({ reason }),
|
||||
});
|
||||
}
|
||||
|
||||
async deleteModerationCourse(courseId: string) {
|
||||
return this.request<void>(`/moderation/${courseId}`, {
|
||||
method: 'DELETE',
|
||||
});
|
||||
}
|
||||
|
||||
// Search
|
||||
async searchCourses(query: string, filters?: { category?: string; difficulty?: string }) {
|
||||
const searchParams = new URLSearchParams({ q: query });
|
||||
|
||||
Reference in New Issue
Block a user