import React, { useState, useEffect } from 'react'; import { useRouter } from 'next/router'; import { useNDKContext } from '@/context/NDKContext'; import { useSession } from 'next-auth/react'; import { parseCourseEvent } from '@/utils/nostr'; import { ProgressSpinner } from 'primereact/progressspinner'; import PublishedCourseForm from '@/components/forms/course/PublishedCourseForm'; import { useToast } from '@/hooks/useToast'; const EditCourse = () => { const [course, setCourse] = useState(null); const [loading, setLoading] = useState(true); const router = useRouter(); const { ndk } = useNDKContext(); const { data: session } = useSession(); const { showToast } = useToast(); useEffect(() => { if (!router.isReady || !session) return; const fetchCourse = async () => { try { const { slug } = router.query; await ndk.connect(); const event = await ndk.fetchEvent({ '#d': [slug] }); if (!event) { showToast('error', 'Error', 'Course not found'); router.push('/dashboard'); return; } // Check if user is the author if (event.pubkey !== session.user.pubkey) { showToast('error', 'Error', 'Unauthorized'); router.push('/dashboard'); return; } const parsedCourse = parseCourseEvent(event); setCourse(parsedCourse); } catch (error) { console.error('Error fetching course:', error); showToast('error', 'Error', 'Failed to fetch course'); } finally { setLoading(false); } }; fetchCourse(); }, [router.isReady, router.query, ndk, session, showToast, router]); if (loading) { return (