import React, { useState } from 'react';
import { useNavigate } from 'react-router-dom';
import logoImage from '../assets/images/logo.jpg';
import '../Styles.css';
const Header = ({ authStatus }) => {
const navigate = useNavigate();
// State Modal & Logout
const [showProfileModal, setShowProfileModal] = useState(false);
const [showLogoutConfirm, setShowLogoutConfirm] = useState(false);
// State Mode Edit
const [editMode, setEditMode] = useState('none'); // 'none', 'name', 'password'
const [tempName, setTempName] = useState('');
const [passData, setPassData] = useState({ newPass: '', confirmPass: '' });
const [isLoading, setIsLoading] = useState(false);
const safeAuth = authStatus || {};
const isLoggedIn = safeAuth.isLoggedIn || false;
const user = safeAuth.user || { name: 'Pengguna', role: 'user' };
// Gunakan email asli jika ada, jika tidak kosong
const userEmail = localStorage.getItem('user_email') || "";
const openModal = () => {
setTempName(user.name);
setEditMode('none');
setPassData({ newPass: '', confirmPass: '' });
setShowProfileModal(true);
};
const onLogoutClick = () => {
setShowProfileModal(false);
setShowLogoutConfirm(true);
};
const confirmLogout = () => {
localStorage.removeItem('token');
localStorage.removeItem('user_fullname');
localStorage.removeItem('user_role');
localStorage.removeItem('user_email');
setShowLogoutConfirm(false);
window.location.href = '/';
};
const getInitials = (name) => {
return name ? name.charAt(0).toUpperCase() : 'U';
};
const handleMainNavigation = () => {
if (!isLoggedIn) {
navigate('/login');
} else if (user.role === 'admin') {
navigate('/admin');
} else {
navigate('/diagnosis');
}
};
const handleSaveChanges = async () => {
setIsLoading(true);
const token = localStorage.getItem('token');
let payload = {};
if (editMode === 'name') {
if (!tempName.trim()) { alert("Nama tidak boleh kosong"); setIsLoading(false); return; }
payload = { full_name: tempName };
} else if (editMode === 'password') {
if (passData.newPass.length < 6) { alert("Password minimal 6 karakter"); setIsLoading(false); return; }
if (passData.newPass !== passData.confirmPass) { alert("Konfirmasi password tidak cocok"); setIsLoading(false); return; }
payload = { new_password: passData.newPass };
}
try {
const response = await fetch('/api/users/me', {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify(payload)
});
if (response.ok) {
alert("Berhasil diperbarui! Silakan login ulang untuk melihat perubahan.");
confirmLogout();
} else {
alert("Gagal memperbarui profil.");
}
} catch (error) {
console.error(error);
alert("Terjadi kesalahan koneksi.");
} finally {
setIsLoading(false);
}
};
return (
<>
Apakah Anda yakin ingin keluar dari sesi ini?