import { toast } from "react-toastify"; import ReactModal from 'react-modal'; import { useState } from "react"; import { submitFeedback } from "~/lib/replay/Problems"; import { getLastProjectContents, getLastChatMessages } from "../chat/Chat.client"; ReactModal.setAppElement('#root'); // Component for leaving feedback. export function Feedback() { const [isModalOpen, setIsModalOpen] = useState(false); const [formData, setFormData] = useState({ feedback: '', email: '', share: false }); const [submitted, setSubmitted] = useState(false); const handleOpenModal = () => { setIsModalOpen(true); setFormData({ feedback: '', email: '', share: false }); setSubmitted(false); }; const handleSubmitFeedback = async () => { // Add validation here if (!formData.feedback) { toast.error('Please fill in feedback field'); return; } if (!formData.email) { toast.error('Please fill in email field'); return; } toast.info("Submitting feedback..."); console.log("SubmitFeedback", formData); const feedbackData: any = { feedback: formData.feedback, email: formData.email, share: formData.share }; if (feedbackData.share) { // Note: We don't just use the workbench store here because wrangler generates a strange error. feedbackData.repositoryContents = getLastProjectContents(); feedbackData.chatMessages = getLastChatMessages(); } await submitFeedback(feedbackData); setSubmitted(true); } return ( <> Feedback setIsModalOpen(false)} className="absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 bg-white rounded-lg p-6 max-w-2xl w-full z-50" overlayClassName="fixed inset-0 bg-black bg-opacity-50 z-40" > {submitted && ( <>
Feedback Submitted
)} {!submitted && ( <>
Let us know how Nut is doing.
Feedback: