"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 ProfilePage = () => { const router = useRouter(); const [profile, setProfile] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(""); useEffect(() => { const fetchProfile = async () => { if (!API_BASE) { setError("API_BASE_URL не задан"); setLoading(false); return; } const saved = typeof window !== "undefined" ? localStorage.getItem("authUser") : null; const authUser = saved ? JSON.parse(saved) : null; const accessToken = authUser?.accessToken; if (!accessToken) { setError("Вы не авторизованы"); setLoading(false); return; } try { const res = await fetch(`${API_BASE}/users/me`, { headers: { Accept: "application/json", Authorization: `Bearer ${accessToken}`, }, }); 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[file:519] setProfile(data); setLoading(false); } catch (e) { setError(e.message || "Ошибка сети"); setLoading(false); } }; fetchProfile(); }, []); const handleLogout = () => { // опционально: запрос /auth/logout, если используешь[file:519] localStorage.removeItem("authUser"); router.push("/"); }; const fullName = profile && [profile.first_name, profile.last_name].filter(Boolean).join(" ").trim(); const rating = profile?.volunteer_rating ?? 0; const email = profile?.email || "—"; const phone = profile?.phone || "—"; const address = profile?.address || "Адрес не указан"; const city = profile?.city || ""; return (
{/* Header с кнопкой назад и заголовком по центру */}

Профиль

{/* Карточка профиля */}
{/* Ошибка / загрузка */} {error && (

{error}

)} {loading && !error && (

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

)} {/* Аватар */} {/* ФИО и рейтинг */}

{fullName || email}

{/* Рейтинг + звезды */}
Рейтинг: {rating.toFixed(1)}
{[1, 2, 3, 4, 5].map((star) => ( ))}
{/* Контакты и адрес */}

Почта: {email}

Телефон: {phone}

Адрес: {address} {city ? `, ${city}` : ""}

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