import React, { useState, useEffect } from "react" import HandleNavigate from "../../utils/HandleNavigate/HandleNavigate" import { FaCommentDots, FaUserFriends, FaBriefcase, FaMedal, FaEdit, FaSave, FaTimes, FaTrash, FaEye, FaEyeSlash } from "react-icons/fa" import Navbar from "../Navbar/Navbar" import Footer from "../Footer/Footer" import Background from "../../assets/backgrounds/Background" import { getUserProfile, updateUserProfile, deleteUserProfile } from "../../api/userApi" import { notifySuccess, notifyError, notifyWarning } from "../Toastify/toastifyServices" const ProfileCard = () => { const { goLanding } = HandleNavigate() // State const [user, setUser] = useState(null) const [isLoading, setIsLoading] = useState(true) const [isEditing, setIsEditing] = useState(false) const [showPassword, setShowPassword] = useState(false) const [showDeleteModal, setShowDeleteModal] = useState(false) // Edit form state const [editForm, setEditForm] = useState({ username: "", email: "", fname: "", lname: "", phone: "", password: "" }) // Load user profile on mount useEffect(() => { loadUserProfile() }, []) const loadUserProfile = async () => { setIsLoading(true) try { const data = await getUserProfile() setUser(data) setEditForm({ username: data.username || "", email: data.email || "", fname: data.fname || "", lname: data.lname || "", phone: data.phone || "", password: "" }) } catch (error) { console.error('Failed to load user profile:', error) notifyError('Hiba történt a profil betöltése során') } finally { setIsLoading(false) } } const handleEditToggle = () => { if (isEditing) { setEditForm({ username: user.username || "", email: user.email || "", fname: user.fname || "", lname: user.lname || "", phone: user.phone || "", password: "" }) } setIsEditing(!isEditing) } const handleInputChange = (e) => { const { name, value } = e.target setEditForm(prev => ({ ...prev, [name]: value })) } const handleSaveProfile = async () => { try { const updates = {} if (editForm.username !== user.username) updates.username = editForm.username if (editForm.email !== user.email) updates.email = editForm.email if (editForm.fname !== user.fname) updates.fname = editForm.fname if (editForm.lname !== user.lname) updates.lname = editForm.lname if (editForm.phone !== user.phone) updates.phone = editForm.phone if (editForm.password && editForm.password.trim() !== "") updates.password = editForm.password if (Object.keys(updates).length === 0) { notifyWarning('Nincs változtatás') return } const updatedUser = await updateUserProfile(updates) setUser(updatedUser) setIsEditing(false) setEditForm(prev => ({ ...prev, password: "" })) notifySuccess('Profil sikeresen frissítve!') } catch (error) { console.error('Failed to update profile:', error) const errorMessage = error?.response?.data?.error || error.message || 'Ismeretlen hiba' notifyError('Hiba történt a mentés során: ' + errorMessage) } } const handleDeleteProfile = () => { setShowDeleteModal(true) } const handleConfirmDelete = async () => { try { await deleteUserProfile() notifySuccess("Profil sikeresen törölve!") localStorage.removeItem("authLevel") localStorage.removeItem("username") goLanding() } catch (err) { console.error("Profil törlési hiba:", err) notifyError(err.response?.data?.message || "Hiba a profil törlésekor!") } finally { setShowDeleteModal(false) } } const handleCancelDelete = () => { setShowDeleteModal(false) } if (isLoading) { return (

Betöltés...

) } if (!user) { return (
😢

Nem sikerült betölteni a profilt

) } const isPremium = user.state === 2 const activityLevel = user.activity_level || 65 let activityColor = "" let activityEmoji = "" let blocksToColor = 1 if (activityLevel <= 24) { activityColor = "error" activityEmoji = "😞" blocksToColor = 1 } else if (activityLevel <= 49) { activityColor = "warning" activityEmoji = "😐" blocksToColor = 2 } else if (activityLevel <= 74) { activityColor = "secondary" activityEmoji = "🙂" blocksToColor = 3 } else { activityColor = "success" activityEmoji = "😄" blocksToColor = 4 } const colorMap = { success: "#5fa985", warning: "#e6c04f", error: "#e15b64", secondary: "#8d8e83" } const getBlockStyle = (index) => ({ backgroundColor: index < blocksToColor ? colorMap[activityColor] : "#314045" }) const stats = [ { label: "Játékok", value: 1256, icon: }, { label: "Barátok", value: 8562, icon: }, { label: "Győzelmek", value: 189, icon: }, { label: "Badge-ek", value: 6, icon: } ] const badges = ["🏆", "🔥", "🎯", "🧠", "💎", "🚀"] return (
{/* Hero Section - Cover Photo */}
{/* Main Profile Card */}
{/* Avatar & Name Section */}
{/* Avatar */}
{user.lname?.[0]?.toUpperCase() || ''}.{user.fname?.[0]?.toUpperCase() || ''}
{/* Name & Status */}

{user.username}

{isPremium ? "👑 Premium" : user.state === 1 ? "✓ Verified" : "Free"}

{user.fname} {user.lname}

{/* Action Buttons */} {!isEditing && (
)}
{/* Content Grid */}
{!isEditing ? ( <> {/* Contact Info & Activity Row */}
{/* Contact Information */}

📋 Kapcsolati adatok

📧

Email

{user.email}

📱

Telefon

{user.phone || "Nincs megadva"}

{/* Activity Level */}

⚡ Aktivitás

Szint {activityLevel}% {activityEmoji}
{[0, 1, 2, 3].map((i) => (
))}
{/* Stats Grid */}

📊 Statisztikák

{stats.map((s, i) => (
{s.icon}

{s.value}

{s.label}

))}
{/* Badges */}

🏆 Badge-ek

{badges.map((badge, i) => (
{badge}
))}
) : ( <> {/* Edit Mode */}

✏️ Profil szerkesztése

{/* Save/Cancel buttons */}
)}
{/* Delete Confirmation Modal */} {showDeleteModal && (

Biztosan törölni szeretnéd a profilodat?

Ez a művelet nem visszavonható!

)}
) } export default ProfileCard