import { CSSProperties, FormEventHandler, useEffect, useState } from 'react' import { Form, Button } from 'react-bootstrap' import { MapContainer, TileLayer } from 'react-leaflet' import { latLng } from 'leaflet' import { useNavigate } from 'react-router-dom' import { ClickHandler, LocationMarker } from '../components' import { useAddAnnouncement } from '../hooks/api' import { categories, categoryNames } from '../assets/category' import { stations, lines, lineNames } from '../assets/metro' import { fallbackError, gotResponse } from '../hooks/useFetch' import { useOsmAddresses } from '../hooks/api' import CardLayout from '../components/CardLayout' const styles = { map: { width: '100%', height: 400, } as CSSProperties, } function AddPage() { const [addressPosition, setAddressPosition] = useState(latLng(59.972, 30.3227)) const address = useOsmAddresses(addressPosition) const { handleAdd, addButton } = useAddAnnouncement() const navigate = useNavigate() const handleSubmit: FormEventHandler = (event) => { event.preventDefault() event.stopPropagation() const formData = new FormData(event.currentTarget) formData.append('latitude', addressPosition.lat.toString()) formData.append('longtitude', addressPosition.lng.toString()) formData.append('address', address.data || '') // if address.error formData.set('bestBy', new Date((formData.get('bestBy') as number | null) || 0).getTime().toString()) handleAdd(formData) } useEffect(() => { if (addButton.children === 'Опубликовано') { navigate('/') } }, [addButton.children, navigate]) return (
Заголовок объявления Категория {categories.map(category => )} Срок годности Адрес выдачи
{gotResponse(address) && }

Адрес: {gotResponse(address) ? fallbackError(address) : 'Загрузка...'}

Описание Иллюстрация (фото или видео) Станция метро {lines.map( line => {Array.from(stations[line]).map(metro => )} )}