import React, { useEffect, useState } from 'react'; import { useParams } from 'react-router-dom'; import { supabase } from '../../lib/supabase'; import { Story } from '../../types/database'; import { AudioRecorder } from '../../components/story/AudioRecorder'; import { Loader2 } from 'lucide-react'; interface StoryPageProps { demo?: boolean; } export function StoryPage({ demo = false }: StoryPageProps): JSX.Element { const { storyId } = useParams(); const [story, setStory] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const [currentPage, setCurrentPage] = useState(0); useEffect(() => { const fetchStory = async () => { try { if (!storyId && !demo) { throw new Error('ID da história não fornecido'); } if (demo) { setStory({ id: 'demo', student_id: 'demo', class_id: 'demo', school_id: 'demo', title: 'Uma Aventura Educacional', theme: 'Demo', content: { pages: [ { text: 'Bem-vindo à demonstração do Histórias Mágicas! Aqui você pode ver como funciona nossa plataforma...', image: 'https://images.unsplash.com/photo-1472162072942-cd5147eb3902?auto=format&fit=crop&q=80&w=800&h=600', }, { text: 'Com histórias interativas e educativas, seus alunos aprenderão de forma divertida e envolvente...', image: 'https://images.unsplash.com/photo-1519681393784-d120267933ba?auto=format&fit=crop&q=80&w=800&h=600', } ], currentPage: 0 }, status: 'published', created_at: new Date().toISOString(), updated_at: new Date().toISOString() }); setLoading(false); return; } const { data, error } = await supabase .from('stories') .select('*') .eq('id', storyId) .single(); if (error) throw error; setStory(data); } catch (err) { console.error('Erro ao buscar história:', err); setError(err instanceof Error ? err.message : 'Erro ao carregar história'); } finally { setLoading(false); } }; fetchStory(); }, [storyId, demo]); const handleAudioUploaded = async (audioUrl: string) => { try { if (demo) return; // Não salva gravações no modo demo const { data: { session } } = await supabase.auth.getSession(); if (!session?.user?.id) throw new Error('Usuário não autenticado'); const { error } = await supabase .from('story_recordings') .insert({ story_id: storyId, student_id: session.user.id, audio_url: audioUrl, status: 'pending_analysis' }); if (error) throw error; } catch (err) { console.error('Erro ao salvar gravação:', err); setError('Erro ao salvar gravação de áudio'); } }; if (loading) { return (
); } if (error || !story) { return (

Ops!

{error || 'História não encontrada'}

); } return (

{story.title}

{story.content.pages[currentPage].image && ( {`Ilustração )}

{story.content.pages[currentPage].text}

); }