import PinIcon from "./icons/PinIcon"; import CalendarIcon from "./icons/CalendarIcon"; import PhoneIcon from "./icons/PhoneIcon"; import MapIcon from "./icons/MapIcon"; import HeartIcon from "./icons/HeartIcon"; import TrashIcon from "./icons/TrashIcon"; import { useState } from "react"; import { useNavigate } from "react-router-dom"; import { useChats } from "../hooks/useChats"; import { useAuthContext } from "../context/AuthContext"; import { API_URL } from "../config/authConstants"; import DateCalendarPopup from "./DateCalendarPopup"; import { useTranslation } from 'react-i18next'; export default function PostOnFeed({ ad, liked, onLike, onEdit, onDelete, onMarkFound, isOwner, onImageClick, onAuthRequired }) { const { t } = useTranslation(); const [showCalendar, setShowCalendar] = useState(false); const navigate = useNavigate(); const { createOrGetChat } = useChats(); const { isAuthenticated } = useAuthContext(); const handleContact = async (e) => { e.stopPropagation(); if (!isAuthenticated) { if (onAuthRequired) onAuthRequired(); return; } try { const chat = await createOrGetChat(ad.userId, ad.id, { title: ad.title, images: ad.images, emoji: ad.emoji, }); navigate(`/chats/${chat.id}`); } catch (err) { console.error(err); } }; const imageUrl = ad.images?.[0] ? `${API_URL}${ad.images[0]}` : null; // ✅ Формируем строку адреса из city + district const address = [ad.city, ad.district].filter(Boolean).join(", "); const createdAt = ad.createdAt ? new Date(ad.createdAt).toLocaleDateString("ru-RU") : null; // Проверяем, закрыт ли пост (вещь найдена) const isClosed = ad.status === 'CLOSED'; const roleClass = ad.userRole === 'LOST_AND_FOUND' ? 'f-card-role-lost-found' : ad.userRole === 'METRO' ? 'f-card-role-metro' : ''; const roleBadge = ad.userRole === 'LOST_AND_FOUND' ? (