import { useState, useEffect } from 'react'; import styles from './DashboardPromptSet.module.css'; import { useUserPrompts } from '../../../auth/Hooks/use-user-prompts'; import { useUserFiles } from '../../../auth/Hooks/use-user-files'; import { FaEdit, FaRedo, FaChevronRight } from 'react-icons/fa'; import PromptItemDelete from './PromptItemDelete'; import PromptItemShare from './PromptItemShare'; import NewPromptButton from './NewPromptButton'; import { motion, AnimatePresence } from 'framer-motion'; import { useSearchParams } from 'react-router-dom'; import { useFileOperations } from '../../../hooks/use-file-operations'; import { FileList } from './FileList'; const formatPromptText = (text: string) => { // Split text at 5 or more consecutive spaces const parts = text.split(/\s{4,}/g); // Join with line breaks return parts.join('\n'); }; function DashboardPromptSet() { const { prompts, loading, error, refetch } = useUserPrompts(); const { files, loading: filesLoading } = useUserFiles(); const [expandedPrompts, setExpandedPrompts] = useState>(new Set()); const [searchParams] = useSearchParams(); const { downloadingFiles, downloadError, handleFileDownload } = useFileOperations(); useEffect(() => { if (!loading && prompts.length > 0) { const expandedPrompt = searchParams.get('expandedPrompt'); console.log('URL Parameter expandedPrompt:', expandedPrompt); console.log('Available prompts:', prompts.map(p => ({ id: p.id, title: p.prompt_title }))); console.log('Current expandedPrompts:', Array.from(expandedPrompts)); if (expandedPrompt) { const matchingPrompt = prompts.find(p => p.id.toString() === expandedPrompt.toString()); console.log('Matching prompt:', matchingPrompt); if (matchingPrompt) { console.log('Setting expanded prompt:', matchingPrompt.id); setExpandedPrompts(new Set([matchingPrompt.id])); } } } }, [searchParams, prompts, loading]); const toggleExpand = (promptId: string) => { console.log('Toggling prompt:', promptId); setExpandedPrompts(prev => { const newSet = new Set(prev); if (newSet.has(promptId)) { newSet.delete(promptId); } else { newSet.add(promptId); } return newSet; }); }; const handleDelete = async () => { try { await refetch(); // Refetch prompts after successful deletion } catch (error) { console.error('Error deleting prompt:', error); } }; const getPromptFiles = (promptId: string | null) => { if (!files || !promptId) return { uploadedFiles: [], downloadFiles: [] }; const promptFiles = files.filter(file => { // Check if either file.prompt_id or promptId is null if (file.prompt_id === null || promptId === null) return false; return file.prompt_id.toString() === promptId.toString(); }); return { uploadedFiles: promptFiles.filter(file => file.action === 'upload'), downloadFiles: promptFiles.filter(file => file.action === 'download') }; }; return (
{loading || filesLoading ? (
Loading...
) : error ? (
Error: {error}
) : (
{prompts.map(prompt => (
toggleExpand(prompt.id)} animate={{ rotate: expandedPrompts.has(prompt.id) ? 90 : 0 }} transition={{ duration: 0.2 }} >

{prompt.prompt_title}

{expandedPrompts.has(prompt.id) && (
{formatPromptText(prompt.user_prompt).split('\n').map((line, index) => (

{line}

))}
{downloadError && (
{downloadError}
)}
)}
))}
)}
); } export default DashboardPromptSet;