import { UserService } from '@/services/userService'; import { useUserSelector } from '@/store/userStore'; import { UserUpdate } from '@/types/user'; import { LoadingOutlined } from '@ant-design/icons'; import { Button, Form, Input, message, Select, Spin } from 'antd'; import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; const { Option } = Select; interface UserEditProps { userId?: number; closeDrawer: () => void; } export default function UserEdit({ userId, closeDrawer }: UserEditProps) { const currentUser = useUserSelector(); const [form] = Form.useForm(); const { t } = useTranslation(); const [user, setUser] = useState({ id: 0, name: '', login: '', email: '', password: '', bindTenantId: '', role: 'VIEWER', meta: {}, createdAt: '', status: 'ACTIVE', }); const [loading, setLoading] = useState(false); useEffect(() => { async function getUser() { if (typeof userId === 'undefined') { return; } const user = await UserService.getUserById(userId); setUser(user); form.setFieldsValue({ ...user }); } getUser(); }, []); const onFinish = async (values: UserUpdate) => { setLoading(true); let updatedUser: Partial = {}; (Object.keys(values) as Array).forEach((key) => { if (values[key] !== user[key]) { updatedUser = { ...updatedUser, [key]: values[key] }; } }); if (Object.keys(updatedUser).length > 0) { console.log('updateUser', userId, updatedUser); await UserService.updateUser(userId!, updatedUser); } setLoading(false); message.info(t('editAccountMessage'), 4); closeDrawer(); }; return (
{user?.id === currentUser?.id ? undefined : ( )} {user?.id === currentUser?.id ? undefined : ( )}
); }