"use client"; import React, { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import { FaUserCircle, FaStar } from "react-icons/fa"; import TabBar from "../components/TabBar"; const API_BASE = process.env.NEXT_PUBLIC_API_BASE_URL; const ModeratorProfilePage = () => { const router = useRouter(); const [profile, setProfile] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(""); 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 fetchProfile = async () => { if (!API_BASE) { setError("API_BASE_URL не задан"); setLoading(false); return; } const token = getAccessToken(); if (!token) { setError("Вы не авторизованы"); setLoading(false); return; } try { const res = await fetch(`${API_BASE}/users/me`, { headers: { Accept: "application/json", Authorization: `Bearer ${token}`, }, }); if (!res.ok) { let msg = "Не удалось загрузить профиль"; try { const data = await res.json(); if (data.error) msg = data.error; } catch { const text = await res.text(); if (text) msg = text; } setError(msg); setLoading(false); return; } const data = await res.json(); // UserProfile[web:598] setProfile(data); setLoading(false); } catch (e) { setError(e.message || "Ошибка сети"); setLoading(false); } }; fetchProfile(); }, []); const fullName = profile && ([profile.first_name, profile.last_name].filter(Boolean).join(" ") || profile.email); const rating = profile && profile.volunteer_rating != null ? Number(profile.volunteer_rating) : null; const birthDateText = profile?.created_at ? new Date(profile.created_at).toLocaleDateString("ru-RU") : "—"; const email = profile?.email || "—"; const phone = profile?.phone || "—"; return (
{/* Header с кнопкой назад и заголовком по центру */}

Профиль

{/* Карточка профиля */}
{loading && (

Загрузка профиля...

)} {error && !loading && (

{error}

)} {!loading && profile && ( <> {/* Аватар */} {profile.avatar_url ? ( // eslint-disable-next-line @next/next/no-img-element Аватар ) : ( )} {/* ФИО и рейтинг */}

{fullName}

{rating != null && (
Рейтинг: {rating.toFixed(1)}
{[1, 2, 3, 4, 5].map((star) => ( ))}
)}
{/* Контакты и «дата рождения» как дата регистрации */}

Дата регистрации: {birthDateText}

Почта: {email}

Телефон: {phone}

{/* Кнопки */}
)}
); }; export default ModeratorProfilePage;