"use client"; import React, { useEffect, useState } from "react"; const API_BASE = process.env.NEXT_PUBLIC_API_BASE_URL; // Статус ИМЕННО ОТКЛИКА волонтёра (ResponseStatus) const responseStatusMap = { pending: { label: "Ожидает ответа", color: "#E9D171" }, accepted: { label: "Принят", color: "#94E067" }, rejected: { label: "Отклонён", color: "#FF8282" }, cancelled: { label: "Отменён", color: "#FF8282" }, }; const VolunteerRequestDetailsModal = ({ request, onClose }) => { const [details, setDetails] = useState(null); const [loading, setLoading] = useState(true); const [loadError, setLoadError] = useState(""); // статус отклика (из списка /responses/my) const responseRawStatus = String( request.rawStatus || request.status || "" ).toLowerCase(); const responseStatus = responseStatusMap[responseRawStatus] || { label: "Неизвестен", color: "#E2E2E2" }; const isAccepted = responseRawStatus === "accepted"; const isDone = false; // для волонтёра нет completed в ResponseStatus const isInProgress = isAccepted; // принятый отклик ~ «в процессе» const getAccessToken = () => { if (typeof window === "undefined") return null; const saved = localStorage.getItem("authUser"); const authUser = saved ? JSON.parse(saved) : null; return authUser?.accessToken || null; }; useEffect(() => { const fetchDetails = async () => { if (!API_BASE) { setLoadError("API_BASE_URL не задан"); setLoading(false); return; } const token = getAccessToken(); if (!token) { setLoadError("Вы не авторизованы"); setLoading(false); return; } try { const res = await fetch( `${API_BASE}/requests/${request.requestId || request.request_id || request.id}`, { headers: { Accept: "application/json", Authorization: `Bearer ${token}`, }, } ); const text = await res.text(); let data = null; if (text) { try { data = JSON.parse(text); } catch { data = null; } } if (!res.ok) { let msg = "Не удалось загрузить заявку"; if (data && typeof data === "object" && data.error) { msg = data.error; } else if (text) { msg = text; } setLoadError(msg); setLoading(false); return; } setDetails(data); setLoading(false); } catch (e) { setLoadError(e.message || "Ошибка сети"); setLoading(false); } }; fetchDetails(); }, [request.requestId, request.request_id, request.id]); if (loading) { return (
Загрузка заявки...
{loadError || "Заявка не найдена"}
Заявка от {createdDate}
{createdDate}
{createdTime}
{details.title}
{/* Полная информация о заявке */}Тип: {requestTypeName}
Заявитель: {requesterName}
Адрес: {place || "Не указан"}
{urgencyText &&Срочность: {urgencyText}
} {details.contact_phone &&Телефон: {details.contact_phone}
} {details.contact_notes && (Комментарий к контакту: {details.contact_notes}
)}Выполнить до: {deadlineText}
{details.description}
Вы назначены волонтёром
Контакты заявителя: {details.contact_phone || "не указаны"}