import { useState, useEffect } from "react"; import { Image, StyleSheet } from "react-native"; import { Button, ButtonText } from "@/components/ui/button"; import { FormControl } from "@/components/ui/form-control"; import { Input, InputField } from "@/components/ui/input"; import { Text } from "@/components/ui/text"; import { VStack } from "@/components/ui/vstack"; import { Textarea, TextareaInput } from "@/components/ui/textarea"; import * as ImagePicker from 'expo-image-picker'; import { Select, SelectTrigger, SelectInput, SelectIcon, SelectPortal, SelectBackdrop, SelectContent, SelectDragIndicator, SelectDragIndicatorWrapper, SelectItem, } from "@/components/ui/select"; import { ChevronDownIcon } from "@/components/ui/icon"; import { useMutation } from "@tanstack/react-query"; import {createNotice} from "@/api/notices"; import {listCategories} from "@/api/categories"; export default function CreateNotice() { const [title, setTitle] = useState(""); const [description, setDescription] = useState(""); const [price, setPrice] = useState(""); const [category, setCategory] = useState(""); const [image, setImage] = useState(null); const [selectItems, setSelectItems] = useState([]); useEffect(() => { let isMounted = true; const fetchSelectItems = async () => { try { let data = await listCategories(); if (isMounted && Array.isArray(data)) { setSelectItems(data); } } catch (error) { console.error('Error fetching select items:', error); } }; fetchSelectItems(); return () => { isMounted = false; }; }, []); const [error, setError] = useState({ title: false, description: false, price: false, category: false, }); const styles = StyleSheet.create({ container: { flex: 1, alignItems: 'center', justifyContent: 'center', }, image: { width: 100, height: 100, }, }); const noticeMutation = useMutation({ mutationFn: () => createNotice({ title: title, clientId: 1, description: description, price: parseFloat(price), category: category, status: "ACTIVE", image: image, }), onSuccess: () => { console.log("Notice created successfully"); }, onError: (error) => { console.error("Error creating notice. Erroe message: ", error.message); }, }); const addNotice = () => { setError({ title: !title, description: !description, price: !price, category: !category, }); if (!title || !description || !price || !category) { console.log("Error in form"); return; } noticeMutation.mutate(); }; const pickImage = async () => { // No permissions request is necessary for launching the image library let result = await ImagePicker.launchImageLibraryAsync({ mediaTypes: ['images'], selectionLimit: 8, allowsEditing: false, allowsMultipleSelection: true, aspect: [4, 3], quality: 0.5, }); if (!result.canceled) { // await uploadImage(1, result.assets[0].uri); setImage(result.assets[0].uri); } }; return ( Zdjęcie {image && } Tytuł setTitle(value)} /> Opis Cena setPrice(value)} /> Kategoria ); }