mirror of
https://github.com/AustinKelsay/plebdevs.git
synced 2025-06-06 18:31:00 +00:00
Edit course form fixed (I think)
This commit is contained in:
parent
15738c955e
commit
8bd28d1a6a
@ -7,6 +7,7 @@ import { ProgressSpinner } from 'primereact/progressspinner';
|
|||||||
import { useSession } from 'next-auth/react';
|
import { useSession } from 'next-auth/react';
|
||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
import { useToast } from '@/hooks/useToast';
|
import { useToast } from '@/hooks/useToast';
|
||||||
|
import { parseEvent } from '@/utils/nostr';
|
||||||
import { useResourcesQuery } from '@/hooks/nostrQueries/content/useResourcesQuery';
|
import { useResourcesQuery } from '@/hooks/nostrQueries/content/useResourcesQuery';
|
||||||
import { useWorkshopsQuery } from '@/hooks/nostrQueries/content/useWorkshopsQuery';
|
import { useWorkshopsQuery } from '@/hooks/nostrQueries/content/useWorkshopsQuery';
|
||||||
import { useDraftsQuery } from '@/hooks/apiQueries/useDraftsQuery';
|
import { useDraftsQuery } from '@/hooks/apiQueries/useDraftsQuery';
|
||||||
@ -20,7 +21,7 @@ const CourseForm = ({ draft = null }) => {
|
|||||||
const [price, setPrice] = useState(draft?.price || 0);
|
const [price, setPrice] = useState(draft?.price || 0);
|
||||||
const [coverImage, setCoverImage] = useState(draft?.image || '');
|
const [coverImage, setCoverImage] = useState(draft?.image || '');
|
||||||
const [topics, setTopics] = useState(draft?.topics || ['']);
|
const [topics, setTopics] = useState(draft?.topics || ['']);
|
||||||
const [lessons, setLessons] = useState(draft?.resources?.map((resource, index) => ({ ...resource, index })) || []);
|
const [lessons, setLessons] = useState([]);
|
||||||
const [allContent, setAllContent] = useState([]);
|
const [allContent, setAllContent] = useState([]);
|
||||||
|
|
||||||
const { data: session } = useSession();
|
const { data: session } = useSession();
|
||||||
@ -30,6 +31,23 @@ const CourseForm = ({ draft = null }) => {
|
|||||||
const { workshops, workshopsLoading, workshopsError } = useWorkshopsQuery();
|
const { workshops, workshopsLoading, workshopsError } = useWorkshopsQuery();
|
||||||
const { drafts, draftsLoading, draftsError } = useDraftsQuery();
|
const { drafts, draftsLoading, draftsError } = useDraftsQuery();
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (draft && resources && workshops && drafts) {
|
||||||
|
const populatedLessons = draft.draftLessons.map((lesson, index) => {
|
||||||
|
if (lesson?.resource) {
|
||||||
|
const matchingResource = resources.find((resource) => resource.d === lesson.resource.d);
|
||||||
|
return { ...parseEvent(matchingResource), index };
|
||||||
|
} else if (lesson?.draft) {
|
||||||
|
const matchingDraft = drafts.find((draft) => draft.id === lesson.draft.id);
|
||||||
|
return { ...matchingDraft, index };
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}).filter(Boolean);
|
||||||
|
|
||||||
|
setLessons(populatedLessons);
|
||||||
|
}
|
||||||
|
}, [draft, resources, workshops, drafts]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!resourcesLoading && !workshopsLoading && !draftsLoading && resources && workshops && drafts) {
|
if (!resourcesLoading && !workshopsLoading && !draftsLoading && resources && workshops && drafts) {
|
||||||
setAllContent([...resources, ...workshops, ...drafts]);
|
setAllContent([...resources, ...workshops, ...drafts]);
|
||||||
@ -153,7 +171,7 @@ const CourseForm = ({ draft = null }) => {
|
|||||||
<Button type="button" icon="pi pi-plus" onClick={addTopic} className="p-button-outlined mt-2" />
|
<Button type="button" icon="pi pi-plus" onClick={addTopic} className="p-button-outlined mt-2" />
|
||||||
</div>
|
</div>
|
||||||
<div className="flex justify-center mt-8">
|
<div className="flex justify-center mt-8">
|
||||||
<Button type="submit" label="Create Course Draft" className="p-button-raised p-button-success" />
|
<Button type="submit" label={draft ? 'Update Course Draft' : 'Create Course Draft'} className="p-button-raised p-button-success" />
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
);
|
);
|
||||||
|
@ -16,6 +16,7 @@ const LessonSelector = ({ isPaidCourse, lessons, setLessons, allContent }) => {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
updateContentOptions();
|
updateContentOptions();
|
||||||
|
console.log("lessons", lessons);
|
||||||
}, [allContent, isPaidCourse, lessons]);
|
}, [allContent, isPaidCourse, lessons]);
|
||||||
|
|
||||||
const updateContentOptions = () => {
|
const updateContentOptions = () => {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import React, { useState, useEffect } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import { useRouter } from "next/router";
|
import { useRouter } from "next/router";
|
||||||
import EditCourseForm from "@/components/forms/EditCourseForm";
|
import CourseForm from "@/components/forms/course/CourseForm";
|
||||||
import { useNDKContext } from "@/context/NDKContext";
|
import { useNDKContext } from "@/context/NDKContext";
|
||||||
import { useToast } from "@/hooks/useToast";
|
import { useToast } from "@/hooks/useToast";
|
||||||
|
|
||||||
@ -34,7 +34,7 @@ export default function Edit() {
|
|||||||
return (
|
return (
|
||||||
<div className="w-[80vw] max-w-[80vw] mx-auto my-8 flex flex-col justify-center">
|
<div className="w-[80vw] max-w-[80vw] mx-auto my-8 flex flex-col justify-center">
|
||||||
<h2 className="text-center mb-8">Edit Course Draft</h2>
|
<h2 className="text-center mb-8">Edit Course Draft</h2>
|
||||||
{draft && <EditCourseForm draft={draft} />}
|
{draft && <CourseForm draft={draft} />}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user