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 } from "@/api/locations"; import useLocationStore from "@/locationStore"; 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); const updateLocation = useLocationStore((state) => state.updateLocation); const getLocation = useLocationStore((state) => state.getLocation); useEffect(() => { const data = getLocation(id); if (data) { setFormData({ name: data.name, description: data.description, image: data.image, area: data.area.toString(), population: data.population.toString(), }); } setLoading(false); }, [id, getLocation]); const handleEditLocation = async () => { if ( formData.name && formData.description && formData.image && formData.area && formData.population ) { // console.log("Form data:", formData); const response = await 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(); // } setTimeout(() => { router.replace("/"); }, 300); // 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", }, });