diff --git a/src/components/forms/CourseForm.js b/src/components/forms/CourseForm.js index 0e0fba8..2ff2000 100644 --- a/src/components/forms/CourseForm.js +++ b/src/components/forms/CourseForm.js @@ -45,6 +45,10 @@ const CourseForm = ({ draft = null, isPublished = false }) => { } }, [session]); + useEffect(() => { + console.log('selectedLessons:', selectedLessons); + }, [selectedLessons]); + useEffect(() => { const fetchLessons = async () => { if (draft && draft?.resources) { @@ -54,7 +58,7 @@ const CourseForm = ({ draft = null, isPublished = false }) => { return parsedLesson; }) ); - setSelectedLessons(parsedLessons); + setSelectedLessons([...selectedLessons, ...parsedLessons]); setLoadingLessons(false); // Data is loaded } else { setLoadingLessons(false); // No draft means no lessons to load @@ -62,17 +66,14 @@ const CourseForm = ({ draft = null, isPublished = false }) => { }; fetchLessons(); - }, [draft]); + }, [draft]); // Only depend on draft const fetchLessonEventFromNostr = async (eventId) => { try { await ndk.connect(); - const fetchedEvent = await ndk.fetchEvent(eventId); - if (fetchedEvent) { - const parsedEvent = parseEvent(fetchedEvent); - return parsedEvent; + return parseEvent(fetchedEvent); } } catch (error) { showToast('error', 'Error', `Failed to fetch lesson: ${eventId}`); @@ -142,6 +143,22 @@ const CourseForm = ({ draft = null, isPublished = false }) => { } })); + // if this is a draft any added resources should be updated with courseId + if (draft) { + resources.forEach(resource => { + console.log('each resource:', resource); + if (!draft.resources.includes(resource.id)) { + axios.put(`/api/resources/${resource.id}`, { courseId: draft.id }) + .then(response => { + console.log('resource updated:', response); + }) + .catch(error => { + console.error('error updating resource:', error); + }); + } + }); + } + const payload = { user: { connect: { id: user.id }, @@ -167,7 +184,8 @@ const CourseForm = ({ draft = null, isPublished = false }) => { response = await axios.post('/api/courses/drafts', payload); showToast('success', 'Success', 'Course draft saved successfully'); } - router.push(`/course/${response.data.id}/draft`); + console.log('response:', response); + // router.push(`/course/${response.data.id}/draft`); } catch (error) { console.error('Error saving course draft:', error); showToast('error', 'Failed to save course draft. Please try again.'); diff --git a/src/pages/api/resources/[slug].js b/src/pages/api/resources/[slug].js index f272dfa..e64cf9d 100644 --- a/src/pages/api/resources/[slug].js +++ b/src/pages/api/resources/[slug].js @@ -1,4 +1,4 @@ -import { getResourceById, updateResource, deleteResource, isResourcePartOfAnyCourse } from "@/db/models/resourceModels"; +import { getResourceById, updateResource, deleteResource, isResourcePartOfAnyCourse, updateLessonInCourse } from "@/db/models/resourceModels"; export default async function handler(req, res) { const { slug } = req.query; diff --git a/src/pages/course/[slug]/draft/edit.js b/src/pages/course/[slug]/draft/edit.js index 9deefed..edcfef1 100644 --- a/src/pages/course/[slug]/draft/edit.js +++ b/src/pages/course/[slug]/draft/edit.js @@ -1,9 +1,6 @@ -import React, { useState, useEffect } from "react"; +import React, { useState, useEffect, use } from "react"; import axios from "axios"; import { useRouter } from "next/router"; -import { parseEvent } from "@/utils/nostr"; -import ResourceForm from "@/components/forms/ResourceForm"; -import WorkshopForm from "@/components/forms/WorkshopForm"; import CourseForm from "@/components/forms/CourseForm"; import { useNDKContext } from "@/context/NDKContext"; import { useToast } from "@/hooks/useToast"; @@ -15,6 +12,8 @@ export default function Edit() { const router = useRouter(); const { showToast } = useToast(); + + useEffect(() => { if (router.isReady) { const { slug } = router.query; diff --git a/src/pages/course/[slug]/draft/index.js b/src/pages/course/[slug]/draft/index.js index 05f460c..06633f2 100644 --- a/src/pages/course/[slug]/draft/index.js +++ b/src/pages/course/[slug]/draft/index.js @@ -42,6 +42,7 @@ const DraftCourse = () => { .then(res => { console.log('res:', res.data); setCourse(res.data); + console.log('coursesssss:', res.data); setLessons(res.data.resources); // Set the raw lessons }) .catch(err => {