import { Dialog, DialogContent, DialogTitle, InputAdornment, TextField, Tooltip } from '@mui/material'; import { useForm, Controller } from 'react-hook-form'; import { Button } from '@mui/material'; import { useUserStore } from '../store'; import { useEffect, useRef, useState } from 'react'; import { useShallow } from 'zustand/react/shallow'; import { isObjectNull } from '@/utils/is-null'; import { useLayoutStore } from '@/modules/layout/store'; import UploadOutlined from '@ant-design/icons/UploadOutlined'; import PandaPNG from '@/assets/panda.png'; import { FileUpload } from '../module/FileUpload'; import { useTranslation } from 'react-i18next'; import { Edit, UserCog } from 'lucide-react'; import { toast } from 'react-toastify'; import { useAdminStore } from '../admin/store/admin-store'; import { IconButton } from '@kevisual/components/button/index.tsx'; export const CheckUserExistModal = () => { const { t } = useTranslation(); const userStore = useUserStore( useShallow((state) => { return { showCheckUserExist: state.showCheckUserExist, setShowCheckUserExist: state.setShowCheckUserExist, }; }), ); const adminStore = useAdminStore( useShallow((state) => { return { checkUserExist: state.checkUserExist, }; }), ); const onClose = () => { userStore.setShowCheckUserExist(false); }; const [username, setUsername] = useState('@'); const onCheck = async () => { const res = await adminStore.checkUserExist(username); console.log(res); if (res === false) { toast.info('当前用户名可以修改,点击右上角关注公众号联系客服修改。', { autoClose: 20000, }); // toast.success(t('Check success')); } else { toast.error('当前用户名已存在,请更换其他用户名。'); } }; return ( {t('Tips')}
{t('Check username introduction')}
setUsername(e.target.value)} />
); }; export const ChangePasswordModal = () => { const { t } = useTranslation(); const userStore = useUserStore( useShallow((state) => { return { showChangePassword: state.showChangePassword, setShowChangePassword: state.setShowChangePassword, updateSelf: state.updateSelf, }; }), ); const [newPassword, setNewPassword] = useState(''); const [confirmPassword, setConfirmPassword] = useState(''); const onSubmit = async () => { if (newPassword !== confirmPassword) { toast.error('两次密码不一致'); return; } const res = await userStore.updateSelf({ password: newPassword, }); if (res.code === 200) { onClose(); } }; const onClose = () => { setNewPassword(''); setConfirmPassword(''); userStore.setShowChangePassword(false); }; return ( {t('Change Password')}
{/* */} setNewPassword(e.target.value)} /> setConfirmPassword(e.target.value)} />
); }; export const Profile = () => { const { t } = useTranslation(); const { control, handleSubmit, setValue, reset, formState, getValues } = useForm({ defaultValues: { username: '', avatar: '', description: '', }, }); const ref = useRef(null); const userStore = useUserStore( useShallow((state) => { return { showEdit: state.showEdit, setShowEdit: state.setShowEdit, formData: state.formData, updateData: state.updateData, setFormData: state.setFormData, updateSelf: state.updateSelf, setShowCheckUserExist: state.setShowCheckUserExist, setShowChangePassword: state.setShowChangePassword, }; }), ); const [avatar, setAvatar] = useState(''); const layoutStore = useLayoutStore( useShallow((state) => { return { me: state.me, setMe: state.setMe, }; }), ); useEffect(() => { const fromData = layoutStore.me; if (isObjectNull(fromData)) { reset({ username: '', avatar: '', description: '', }); } else { reset({ username: fromData.username, avatar: fromData.avatar || '', description: fromData.description || '', }); } setAvatar(fromData.avatar || ''); }, [layoutStore.me, setValue]); const onChange = (path: string) => { const url = path + '?t=' + new Date().getTime(); setAvatar(url); setValue('avatar', url); const values = getValues(); onFinish(values); }; const onFinish = async (values) => { const newMe = await userStore.updateSelf(values); if (newMe) { layoutStore.setMe(newMe); } }; return (
{t('Profile')}
{t('Edit your profile')}
{avatar && avatar} {!avatar && avatar}
( { console.log('onClick edit'); userStore.setShowCheckUserExist(true); }} /> ), onKeyDown: (event) => { if (event.key === 'Enter') { // setSearch(field.value); } }, }, }} /> )} /> ( { ref.current?.open?.(); }} />
), }, }} /> )} /> } />
userStore.setShowChangePassword(true)}>
); };