import { useEffect, useState } from "react" import { Form, Button, Card } from "react-bootstrap" import { MapContainer, TileLayer } from 'react-leaflet' import { latLng } from "leaflet" import { ClickHandler, LocationMarker, TrashboxMarkers } from "../components" import { useAddAnnouncement, useTrashboxes } from "../hooks/api" import { categoryNames } from "../assets/category" import { stations, lines } from "../assets/metro" function AddPage() { const [addressPosition, setAddressPosition] = useState(latLng(59.972, 30.3227)) const [address, setAddress] = useState('') const { data: trashboxes, trashboxes_loading, trashboxes_error } = useTrashboxes(addressPosition) const [selectedTrashbox, setSelectedTrashbox] = useState({ index: -1, category: '' }) useEffect(() => { (async () => { try { const res = await fetch(location.protocol + "//nominatim.openstreetmap.org/search?format=json&q=" + address) const fetchData = await res.json() console.log("f", fetchData) } catch (err) { console.error(err) } })() }, [address]) useEffect(() => { (async () => { try { const res = await fetch(location.protocol + "//nominatim.openstreetmap.org/reverse?format=json&accept-language=ru&lat=" + addressPosition.lat + "&lon=" + addressPosition.lng) const fetchData = await res.json() setAddress(fetchData.display_name) } catch (err) { console.error(err) } })() }, [addressPosition]) const { doAdd, status } = useAddAnnouncement() const handleSubmit = (event) => { event.preventDefault() event.stopPropagation() const formData = new FormData(event.target) formData.append("latitude", addressPosition.lat) formData.append("longtitude", addressPosition.lng) formData.append("address", address) formData.set("bestBy", new Date(formData.get("bestBy")).getTime()) doAdd(formData) } return (
Заголовок объявления Категория {Array.from(categoryNames).map( ([category, categoryName]) => )} Срок годности Адрес выдачи

Адрес: {address}

Описание Иллюстрация (фото или видео) Станция метро {Object.entries(stations).map( ([line, stations]) => {Array.from(stations).map(metro => )} )} Пункт сбора мусора
{trashboxes_loading ? (

Загрузка

) : ( trashboxes_error ? (

{trashboxes_error}

) : ( ) ) }
{selectedTrashbox.index > -1 ? (

Выбран пункт сбора мусора на { trashboxes[selectedTrashbox.index].Address } с категорией {selectedTrashbox.category}

) : (

Выберите пунк сбора мусора и категорию

)}
) } export default AddPage