import { Building2, ChevronRight, MapPin, Search } from 'lucide-react-native'; import React, { useEffect, useState } from 'react'; import { Alert, RefreshControl, ScrollView, Text, TextInput, TouchableOpacity, View } from 'react-native'; import { useRouter } from 'expo-router'; import api from '@/utils/api'; import LoadingScreen from '@/components/LoadingScreen'; import { ConstructionSite } from '@/types/types'; export default function SitesScreen() { const [searchTerm, setSearchTerm] = useState(''); const [constructionSites, setConstructionSites] = useState([]); const [isLoading, setIsLoading] = useState(true); const [refreshing, setRefreshing] = useState(false); const router = useRouter(); // Fetch cantieri e documenti const fetchConstructionSites = async () => { try { if (!refreshing) setIsLoading(true); // Fetch Cantieri const response = await api.get('/construction-site/sites-attachments'); setConstructionSites(response.data); } catch (error) { console.error('Errore nel recupero dei cantieri:', error); Alert.alert('Errore', 'Impossibile recuperare i cantieri. Riprova più tardi.'); } finally { setIsLoading(false); setRefreshing(false); } }; useEffect(() => { fetchConstructionSites(); }, []); const onRefresh = () => { setRefreshing(true); fetchConstructionSites(); }; // Filtriamo i cantieri in base alla ricerca const filteredSites = constructionSites.filter(site => site.name.toLowerCase().includes(searchTerm.toLowerCase()) || site.code.toLowerCase().includes(searchTerm.toLowerCase()) ); if (isLoading && !refreshing) { return ; } return ( {/* Header */} Cantieri Seleziona un cantiere per vedere i documenti {/* Search Bar */} {/* Lista Cantieri */} {/* TODO: Rimuovere lo ScrollIndicator? */} } > {filteredSites.map((site, index) => ( router.push({ pathname: '/(protected)/sites/[id]', params: { id: site.id , siteData: JSON.stringify(site), } })} className="bg-white p-5 rounded-3xl shadow-sm flex-row items-center justify-between border border-gray-100 active:bg-gray-50" > {site.code} {site.name} {site.attachments_count} Documenti disponibili {/* Freccia al posto del download */} ))} {filteredSites.length === 0 && ( Nessun cantiere trovato )} ); }