// app/(tabs)/library/exercises.tsx import React, { useState } from 'react'; import { View, ActivityIndicator } from 'react-native'; import { Text } from '@/components/ui/text'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Search, Dumbbell } from 'lucide-react-native'; import { FloatingActionButton } from '@/components/shared/FloatingActionButton'; import { NewExerciseSheet } from '@/components/library/NewExerciseSheet'; import { SimplifiedExerciseList } from '@/components/exercises/SimplifiedExerciseList'; import { ExerciseDetails } from '@/components/exercises/ExerciseDetails'; import { ExerciseDisplay, ExerciseType, BaseExercise } from '@/types/exercise'; import { useExercises } from '@/lib/hooks/useExercises'; export default function ExercisesScreen() { const [showNewExercise, setShowNewExercise] = useState(false); const [searchQuery, setSearchQuery] = useState(''); const [activeFilter, setActiveFilter] = useState(null); const [selectedExercise, setSelectedExercise] = useState(null); const { exercises, loading, error, createExercise, deleteExercise, refreshExercises, updateFilters, clearFilters } = useExercises(); // Filter exercises based on search query React.useEffect(() => { if (searchQuery) { updateFilters({ searchQuery }); } else { updateFilters({ searchQuery: undefined }); } }, [searchQuery, updateFilters]); // Update type filter when activeFilter changes React.useEffect(() => { if (activeFilter) { updateFilters({ type: [activeFilter] }); } else { clearFilters(); } }, [activeFilter, updateFilters, clearFilters]); const handleExercisePress = (exercise: ExerciseDisplay) => { setSelectedExercise(exercise); }; const handleEdit = async () => { // TODO: Implement edit functionality setSelectedExercise(null); }; const handleCreateExercise = async (exerciseData: BaseExercise) => { // Convert BaseExercise to include required source information const exerciseWithSource: Omit = { ...exerciseData, availability: { source: ['local'] } }; await createExercise(exerciseWithSource); setShowNewExercise(false); }; if (loading) { return ( Loading exercises... ); } if (error) { return ( {error.message} ); } return ( {/* Search bar */} {/* Exercises list */} {/* Exercise details sheet */} {selectedExercise && ( { if (!open) setSelectedExercise(null); }} onEdit={handleEdit} /> )} {/* FAB for adding new exercise */} setShowNewExercise(true)} /> {/* New exercise sheet */} setShowNewExercise(false)} onSubmit={handleCreateExercise} /> ); }