feat: certification rules, content sanitization, handle draft course updates and reset content, better redis logging

This commit is contained in:
Rotimi Best
2026-03-30 08:24:55 +01:00
parent ff2ad59377
commit 5a8f50f67b
131 changed files with 5643 additions and 2134 deletions
@@ -38,7 +38,6 @@ import {
import {
ZLessonCommentCreate,
ZLessonCommentUpdate,
ZLessonCompletionUpdate,
ZLessonCreate,
ZLessonReorder,
ZLessonUpdate
@@ -46,8 +45,8 @@ import {
import type { TLocale } from '@cio/db/types';
import { get } from 'svelte/store';
import { mediaApi } from '$features/media/api';
import { mapZodErrorsToTranslations } from '$lib/utils/validation';
import { mediaApi } from '$features/media/api';
import { profile } from '$lib/utils/store/user';
import { snackbar } from '$features/ui/snackbar/store';
@@ -607,17 +606,11 @@ export class LessonApi extends BaseApiWithErrors {
* Updates lesson completion
*/
async updateCompletion(courseId: string, lessonId: string, isComplete: boolean) {
const result = ZLessonCompletionUpdate.safeParse({ isComplete });
if (!result.success) {
this.errors = mapZodErrorsToTranslations(result.error, 'lesson');
return;
}
await this.execute<UpdateLessonCompletionRequest>({
return this.execute<UpdateLessonCompletionRequest>({
requestFn: () =>
classroomio.course[':courseId'].lesson[':lessonId'].completion.$put({
param: { courseId, lessonId },
json: result.data
json: { isComplete }
}),
logContext: 'updating lesson completion',
onSuccess: (response) => {