import { useState } from "react"; import { StyleSheet, Platform, KeyboardAvoidingView, ScrollView, Image, } from "react-native"; import { TextInput, Button, Snackbar } from "react-native-paper"; import { requestCameraPermissionsAsync, launchCameraAsync } from 'expo-image-picker'; import useLocationStore from "@/locationStore"; export default function FormScreen() { const [formData, setFormData] = useState({ name: "", description: "", image: "", area: 0, population: 0, }); const [message, setMessage] = useState(""); const [visible, setVisible] = useState(false); const [picture, setPicture] = useState(null); const addLocation = useLocationStore((state) => state.addLocation); const handleAddLocation = async () => { if ( formData.name && formData.description && formData.image && formData.area && formData.population ) { const newLocation = { id: Date.now(), name: formData.name, description: formData.description, image: formData.image, area: parseFloat(formData.area), population: parseInt(formData.population), }; const added = await addLocation(newLocation); setFormData({ name: "", description: "", image: "", area: 0, population: 0, }); if (added != null) { setMessage("Lokalizacja została dodana!"); setVisible(true); } else { setMessage("Wystąpił błąd podczas dodawania lokalizacji!"); setVisible(true); } } else { setMessage("Wypełnij wszystkie pola!"); setVisible(true); } }; const takePicture = async () => { const {status} = await requestCameraPermissionsAsync(); if (status !== 'granted') { return; } const result = await launchCameraAsync({ allowsEditing: false, }); if (!result.canceled && result.assets && result.assets.length > 0) { setPicture(result.assets[0].uri); } } 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 })} /> {picture && ( )} ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: "#25292e", justifyContent: "flex-start", alignItems: "center", }, image: { width: 100, height: 100, borderStyle: "solid", borderColor: "#fff", borderWidth: 1, }, });