import { useEffect, useState, MouseEvent } from "react"; import toast from "react-hot-toast"; import { useUpdateAvatarMutation } from "../../app/services/user"; import AvatarUploader from "../../common/component/AvatarUploader"; import Button from "../../common/component/styled/Button"; import ProfileBasicEditModal from "./ProfileBasicEditModal"; import RemoveAccountConfirmModal from "./RemoveAccountConfirmModal"; import UpdatePasswordModal from "./UpdatePasswordModal"; import { useAppSelector } from "../../app/store"; import { useTranslation } from "react-i18next"; type EditField = "name" | "email" | ""; export default function MyAccount() { const { t } = useTranslation("member"); const { t: ct } = useTranslation(); const [passwordModal, setPasswordModal] = useState(false); const [editModal, setEditModal] = useState(""); const [removeConfirmVisible, setRemoveConfirmVisible] = useState(false); const [uploadAvatar, { isSuccess: uploadSuccess }] = useUpdateAvatarMutation(); const EditModalInfo = { name: { label: t("username"), title: t("change_name"), intro: t("change_name_desc") }, email: { label: t("email"), title: t("change_email"), intro: t("change_email_desc") } }; const loginUser = useAppSelector((store) => { return store.users.byId[store.authData.user?.uid || 0]; }); useEffect(() => { if (uploadSuccess) { toast.success(ct("tip.update")); } }, [uploadSuccess]); const handleBasicEdit = (evt: MouseEvent) => { const { edit } = evt.currentTarget.dataset as { edit: EditField }; setEditModal(edit); }; const closeBasicEditModal = () => { setEditModal(""); }; const togglePasswordModal = () => { setPasswordModal((prev) => !prev); }; const toggleRemoveAccountModalVisible = () => { setRemoveConfirmVisible((prev) => !prev); }; if (!loginUser) return null; const { uid, avatar, name, email } = loginUser; return ( <>
{name} #{uid}
{t("username")} {name} #{uid}
{t("email")} {email}
{t("password")} *********
{/* uid 1 是初始账户,不能删 */} {uid != 1 && ( )}
{editModal && ( )} {passwordModal && } {removeConfirmVisible && ( )} ); }