fix completed lesson state for all lessons in sidebar

This commit is contained in:
austinkelsay 2025-05-12 08:20:02 -05:00
parent e3317f870a
commit 9bd0c0877d
No known key found for this signature in database
GPG Key ID: 5A763922E5BA08EE

View File

@ -67,9 +67,43 @@ const Course = () => {
}
}, [router.isReady, router.query.slug, showToast, router]);
// Load completed lessons from localStorage when course is loaded
useEffect(() => {
if (router.isReady && router.query.slug && session?.user) {
const courseId = router.query.slug;
const storageKey = `course_${courseId}_${session.user.pubkey}_completed`;
const savedCompletedLessons = localStorage.getItem(storageKey);
if (savedCompletedLessons) {
try {
const parsedLessons = JSON.parse(savedCompletedLessons);
setCompletedLessons(parsedLessons);
} catch (error) {
console.error('Error parsing completed lessons from storage:', error);
}
}
}
}, [router.isReady, router.query.slug, session]);
const setCompleted = useCallback(lessonId => {
setCompletedLessons(prev => [...prev, lessonId]);
}, []);
setCompletedLessons(prev => {
// Avoid duplicates
if (prev.includes(lessonId)) {
return prev;
}
const newCompletedLessons = [...prev, lessonId];
// Save to localStorage
if (router.query.slug && session?.user) {
const courseId = router.query.slug;
const storageKey = `course_${courseId}_${session.user.pubkey}_completed`;
localStorage.setItem(storageKey, JSON.stringify(newCompletedLessons));
}
return newCompletedLessons;
});
}, [router.query.slug, session]);
const fetchAuthor = useCallback(
async pubkey => {