"use client"; import React, { useEffect, useState } from "react"; const API_BASE = process.env.NEXT_PUBLIC_API_BASE_URL; const VolunteerRequestDetailsModal = ({ request, onClose }) => { const [details, setDetails] = useState(null); const [loading, setLoading] = useState(true); const [loadError, setLoadError] = useState(""); const normalizedStatus = String(request.rawStatus || request.status || "").toLowerCase(); const isAccepted = normalizedStatus === "accepted"; const isInProgress = normalizedStatus === "in_progress" || normalizedStatus === "inprogress" || isAccepted; const isDone = normalizedStatus === "completed"; 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.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.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 || "не указаны"}