Betöltés...
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...
Nem sikerült betölteni a profilt
{user.fname} {user.lname}
{user.email}
Telefon
{user.phone || "Nincs megadva"}
{s.value}
{s.label}
Ez a művelet nem visszavonható!