// AccountCard.jsx import { useEffect, useState } from "react"; import PropTypes from "prop-types"; import dayjs from "dayjs"; import { CONSTANTS } from "@/util/constants.js"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faPen, faCheck, faXmark } from "@fortawesome/free-solid-svg-icons"; const getServiceName = (serviceId) => { switch (serviceId) { case CONSTANTS.CORE_ID: return "Miarma"; case CONSTANTS.HUERTOS_ID: return "Huertos Bellavista"; case CONSTANTS.MINECRAFT_ID: return "MiarmaCraft"; case CONSTANTS.CINE_ID: return "Huertos de Cine"; case CONSTANTS.MPASTE_ID: return "MPaste"; default: return "Desconocido"; } }; const AccountCard = ({ identity, onUpdate, onRequestStatusChange, confirmedStatusChange }) => { const [editMode, setEditMode] = useState(false); const [formData, setFormData] = useState({ username: identity.username, email: identity.email, status: identity.status }); useEffect(() => { if (!editMode) { setFormData({ username: identity.username, email: identity.email, status: identity.status }); } }, [identity, editMode]); // Aplica la desactivación confirmada useEffect(() => { if (confirmedStatusChange?.credentialId === identity.credentialId) { setFormData(prev => ({ ...prev, status: confirmedStatusChange.status })); } }, [confirmedStatusChange, identity.credentialId]); const handleChange = (field, value) => { setFormData(prev => ({ ...prev, [field]: value })); }; const handleSave = () => { onUpdate?.({ ...identity, ...formData }); setEditMode(false); }; const handleCancel = () => setEditMode(false); return (
{getServiceName(identity.serviceId)} {identity.status == 0 && (   (Se eliminará en 2 meses tras desactivación) )} {identity.credentialId}
{identity.status != 0 && ( !editMode ? ( setEditMode(true)} /> ) : ( <> ) )}
Usuario {editMode ? ( handleChange("username", e.target.value)} /> ) :
{identity.username}
}
Email {editMode ? ( handleChange("email", e.target.value)} /> ) :
{identity.email}
}
{editMode ? ( ) : ( {identity.status === 1 ? "Activa" : "Inactiva"} )} Creada el: {dayjs(identity.updatedAt).format("DD/MM/YYYY")}
); }; AccountCard.propTypes = { identity: PropTypes.object.isRequired, onUpdate: PropTypes.func, onRequestStatusChange: PropTypes.func, confirmedStatusChange: PropTypes.object }; export default AccountCard;