import { toast } from 'react-toastify'; import ReactModal from 'react-modal'; import { useState } from 'react'; import { submitFeedback } from '~/lib/replay/Problems'; import { getLastChatMessages } from '~/components/chat/Chat.client'; import { shouldUseSupabase } from '~/lib/supabase/client'; ReactModal.setAppElement('#root'); // Component for leaving feedback. export function Feedback() { const [isModalOpen, setIsModalOpen] = useState(false); const [formData, setFormData] = useState({ description: '', email: '', share: false, }); const [submitted, setSubmitted] = useState(false); const handleOpenModal = () => { setIsModalOpen(true); setFormData({ description: '', email: '', share: false, }); setSubmitted(false); }; const handleSubmitFeedback = async () => { if (!formData.description) { toast.error('Please fill in the feedback field'); return; } if (!shouldUseSupabase() && !formData.email) { toast.error('Please fill in the email field'); return; } toast.info('Submitting feedback...'); const feedbackData: any = shouldUseSupabase() ? { description: formData.description, share: formData.share, source: 'feedback_modal', } : { feedback: formData.description, email: formData.email, share: formData.share, }; if (feedbackData.share) { feedbackData.chatMessages = getLastChatMessages(); } try { const success = await submitFeedback(feedbackData); if (success) { setSubmitted(true); toast.success('Feedback submitted successfully!'); } else { toast.error('Failed to submit feedback'); } } catch (error) { console.error('Error submitting feedback:', error); toast.error('An error occurred while submitting feedback'); } }; console.log(shouldUseSupabase() ? 'supabase true' : 'supabase false'); return ( <> {isModalOpen && (
{submitted ? ( <>
Feedback Submitted

Thank you for your feedback! We appreciate your input.

) : ( <>

Share Your Feedback

Let us know how Nut is doing or report any issues you've encountered.