import React, { useState } from 'react'; import axios from 'axios'; import { useRouter } from 'next/router'; import { InputText } from 'primereact/inputtext'; import { InputNumber } from 'primereact/inputnumber'; import { InputSwitch } from 'primereact/inputswitch'; import { Button } from 'primereact/button'; import { useToast } from '@/hooks/useToast'; import { useLocalStorageWithEffect } from '@/hooks/useLocalStorage'; import 'primeicons/primeicons.css'; const WorkshopForm = () => { const [title, setTitle] = useState(''); const [summary, setSummary] = useState(''); const [price, setPrice] = useState(0); const [isPaidResource, setIsPaidResource] = useState(false); const [videoUrl, setVideoUrl] = useState(''); const [coverImage, setCoverImage] = useState(''); const [topics, setTopics] = useState(['']); const router = useRouter(); const [user] = useLocalStorageWithEffect('user', {}); const { showToast } = useToast(); const handleSubmit = async (e) => { e.preventDefault(); let embedCode = ''; // Check if it's a YouTube video if (videoUrl.includes('youtube.com') || videoUrl.includes('youtu.be')) { const videoId = videoUrl.split('v=')[1] || videoUrl.split('/').pop(); embedCode = ``; } // Check if it's a Vimeo video else if (videoUrl.includes('vimeo.com')) { const videoId = videoUrl.split('/').pop(); embedCode = ``; } // Add more conditions here for other video services const userResponse = await axios.get(`/api/users/${user.pubkey}`); if (!userResponse.data) { showToast('error', 'Error', 'User not found', 'Please try again.'); return; } const payload = { title, summary, type: 'workshop', price: isPaidResource ? price : null, content: embedCode, image: coverImage, user: userResponse.data.id, topics: [...topics.map(topic => topic.trim().toLowerCase()), 'plebdevs', 'workshop'] }; if (payload && payload.user) { axios.post('/api/drafts', payload) .then(response => { if (response.status === 201) { showToast('success', 'Success', 'Workshop saved as draft.'); if (response.data?.id) { router.push(`/draft/${response.data.id}`); } } }) .catch(error => { console.error(error); }); } }; const onUpload = (event) => { showToast('success', 'Success', 'File Uploaded'); console.log(event.files[0]); } const handleTopicChange = (index, value) => { const updatedTopics = topics.map((topic, i) => i === index ? value : topic); setTopics(updatedTopics); }; const addTopic = () => { setTopics([...topics, '']); // Add an empty string to the topics array }; const removeTopic = (index) => { const updatedTopics = topics.filter((_, i) => i !== index); setTopics(updatedTopics); }; return (
); } export default WorkshopForm;