More progress on course editing

This commit is contained in:
austinkelsay 2024-08-13 23:15:40 -05:00
parent f9bcfef235
commit 9046bce91f

View File

@ -47,14 +47,14 @@ const CourseForm = ({ draft = null, isPublished = false }) => {
useEffect(() => { useEffect(() => {
const fetchLessons = async () => { const fetchLessons = async () => {
if (draft && draft.resources) { if (draft && draft?.resources) {
const parsedLessons = await Promise.all( const parsedLessons = await Promise.all(
draft.resources.map(async (lesson) => { draft.resources.map(async (lesson) => {
const parsedLesson = await fetchLessonEventFromNostr(lesson.noteId); const parsedLesson = await fetchLessonEventFromNostr(lesson.noteId);
return parsedLesson; return parsedLesson;
}) })
); );
setLessons(parsedLessons); setSelectedLessons(parsedLessons);
setLoadingLessons(false); // Data is loaded setLoadingLessons(false); // Data is loaded
} else { } else {
setLoadingLessons(false); // No draft means no lessons to load setLoadingLessons(false); // No draft means no lessons to load
@ -87,7 +87,7 @@ const CourseForm = ({ draft = null, isPublished = false }) => {
setChecked(draft.price > 0); setChecked(draft.price > 0);
setPrice(draft.price || 0); setPrice(draft.price || 0);
setCoverImage(draft.image); setCoverImage(draft.image);
setSelectedLessons(draft.resources || []); // setSelectedLessons(draft.resources || []);
setTopics(draft.topics || ['']); setTopics(draft.topics || ['']);
} }
}, [draft]); }, [draft]);
@ -143,18 +143,24 @@ const CourseForm = ({ draft = null, isPublished = false }) => {
})); }));
const payload = { const payload = {
userId: user.id, user: {
connect: { id: user.id },
},
title, title,
summary, summary,
image: coverImage, image: coverImage,
price: price || 0, price: price || 0,
resources, resources: {
set: resources.map(resource => ({ id: resource.id })),
},
topics, topics,
}; };
try { try {
let response; let response;
if (draft) { if (draft) {
// payload minus topics
delete payload.topics
response = await axios.put(`/api/courses/drafts/${draft.id}`, payload); response = await axios.put(`/api/courses/drafts/${draft.id}`, payload);
showToast('success', 'Success', 'Course draft updated successfully'); showToast('success', 'Success', 'Course draft updated successfully');
} else { } else {
@ -337,7 +343,7 @@ const CourseForm = ({ draft = null, isPublished = false }) => {
</div> </div>
<div className="mt-8 flex-col w-full"> <div className="mt-8 flex-col w-full">
<div className="mt-4 flex-col w-full"> <div className="mt-4 flex-col w-full">
{selectedLessons.map(async (lesson, index) => { {selectedLessons.map((lesson, index) => {
return ( return (
<div key={lesson.id} className="p-inputgroup flex-1 mt-4"> <div key={lesson.id} className="p-inputgroup flex-1 mt-4">
<ContentDropdownItem content={lesson} selected={true} /> <ContentDropdownItem content={lesson} selected={true} />