import { useState, useEffect } from 'react'; import { StyleSheet, Platform, ScrollView, KeyboardAvoidingView, View, ActivityIndicator } from 'react-native'; import { TextInput, Button, Snackbar, useTheme } from 'react-native-paper'; import { useLocalSearchParams, useRouter } from 'expo-router'; import { getLocation, updateLocation } from '@/api/locations'; export default function EditLocation() { const theme = useTheme(); const { id } = useLocalSearchParams(); const router = useRouter(); const [loading, setLoading] = useState(true); const [formData, setFormData] = useState({ name: '', description: '', image: '', area: '', population: '', }); const [message, setMessage] = useState(''); const [visible, setVisible] = useState(false); useEffect(() => { const fetchLocation = async () => { try { const data = await getLocation(id) if (data) { setFormData({ name: data.name, description: data.description, image: data.image, area: data.area.toString(), population: data.population.toString(), }); } } catch (error) { console.error("Error fetching location:", error); } finally { setLoading(false); } } fetchLocation(); }, [id]); const handleEditLocation = () => { if ( formData.name && formData.description && formData.image && formData.area && formData.population ) { const response = updateLocation(id, { name: formData.name, description: formData.description, image: formData.image, area: parseFloat(formData.area), population: parseInt(formData.population, 10), }); if (response) { setMessage('Lokalizacja została zaktualizowana!'); setVisible(true); while (router.canGoBack()) { // Pop from stack until one element is left router.back(); } router.replace("/"); // Replace the last remaining stack element } else { setMessage('Wystąpił błąd podczas aktualizacji lokalizacji!'); setVisible(true); } } else { setMessage('Wypełnij wszystkie pola!'); setVisible(true); } }; if (loading) { return ( ); } return ( setVisible(false)} duration={3000} > {message} setFormData({ ...formData, name: e })} /> setFormData({ ...formData, description: e })} /> setFormData({ ...formData, image: e })} /> setFormData({ ...formData, area: e })} /> setFormData({ ...formData, population: e })} /> ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#25292e', justifyContent: 'flex-start', alignItems: 'center', }, });