diff --git a/src/api/courses.api.ts b/src/api/courses.api.ts index 9c77a29..0802933 100644 --- a/src/api/courses.api.ts +++ b/src/api/courses.api.ts @@ -311,6 +311,12 @@ export const getSubModuleLessonById = ( ) => http.get(`/course-management/sub-module-lessons/${lessonId}`, { params: options?.cacheBust ? { _t: Date.now() } : undefined, + headers: options?.cacheBust + ? { + "Cache-Control": "no-cache", + Pragma: "no-cache", + } + : undefined, }) export const createSubCourseVideo = (data: CreateSubCourseVideoRequest) => diff --git a/src/pages/content-management/HumanLanguagePage.tsx b/src/pages/content-management/HumanLanguagePage.tsx index 57bb6b6..a4a2c81 100644 --- a/src/pages/content-management/HumanLanguagePage.tsx +++ b/src/pages/content-management/HumanLanguagePage.tsx @@ -339,6 +339,7 @@ export function HumanLanguagePage() { const navigate = useNavigate() const location = useLocation() const emptyStateRetryCountRef = useRef(0) + const lessonEditFetchIdRef = useRef(0) const [loading, setLoading] = useState(false) const [categoryId, setCategoryId] = useState(null) const [subCategories, setSubCategories] = useState([]) @@ -1019,20 +1020,34 @@ export function HumanLanguagePage() { } const openEditLessonDialog = async (lesson: { id: number; question_set_id: number; title: string }) => { + const requestId = ++lessonEditFetchIdRef.current setLessonDialog({ open: true, lessonId: lesson.id, questionSetId: lesson.question_set_id }) setSavingLesson(false) + + // Set something immediately to avoid showing stale values while the refetch is in-flight. + setLessonForm({ + title: lesson.title ?? "", + description: "", + introVideoUrl: "", + status: "DRAFT", + }) + try { const detail = (await getSubModuleLessonById(lesson.id, { cacheBust: true })).data?.data + if (lessonEditFetchIdRef.current !== requestId) return + setLessonForm({ title: detail?.title ?? lesson.title ?? "", description: detail?.description ?? "", introVideoUrl: detail?.intro_video_url ?? "", status: - (detail?.status as "DRAFT" | "PUBLISHED" | "ARCHIVED" | undefined) && ["DRAFT", "PUBLISHED", "ARCHIVED"].includes(detail.status) + (detail?.status as "DRAFT" | "PUBLISHED" | "ARCHIVED" | undefined) && + ["DRAFT", "PUBLISHED", "ARCHIVED"].includes(detail.status) ? (detail.status as "DRAFT" | "PUBLISHED" | "ARCHIVED") : "DRAFT", }) } catch (error) { + if (lessonEditFetchIdRef.current !== requestId) return console.error("Failed to load lesson detail:", error) setLessonForm({ title: lesson.title ?? "",