import { useFetchUserInfo, useSaveSetting } from '@/hooks/user-setting-hooks'; import { getBase64FromUploadFileList, getUploadFileListFromBase64, normFile, } from '@/utils/file-util'; import { PlusOutlined } from '@ant-design/icons'; import { Button, Divider, Form, Input, Select, Space, Spin, Upload, UploadFile, } from 'antd'; import camelCase from 'lodash/camelCase'; import { useEffect } from 'react'; import SettingTitle from '../components/setting-title'; import { TimezoneList } from '../constants'; import { useValidateSubmittable } from '../hooks'; import { LanguageList } from '@/constants/common'; import { useTranslate } from '@/hooks/common-hooks'; import { useChangeLanguage } from '@/hooks/logic-hooks'; import parentStyles from '../index.less'; import styles from './index.less'; const { Option } = Select; type FieldType = { nickname?: string; language?: string; email?: string; color_schema?: string; timezone?: string; avatar?: string; }; const tailLayout = { wrapperCol: { offset: 20, span: 4 }, }; const UserSettingProfile = () => { const { data: userInfo, loading } = useFetchUserInfo(); const { saveSetting, loading: submitLoading } = useSaveSetting(); const { form, submittable } = useValidateSubmittable(); const { t } = useTranslate('setting'); const changeLanguage = useChangeLanguage(); const onFinish = async (values: any) => { const avatar = await getBase64FromUploadFileList(values.avatar); saveSetting({ ...values, avatar }); }; const onFinishFailed = (errorInfo: any) => { console.log('Failed:', errorInfo); }; useEffect(() => { const fileList: UploadFile[] = getUploadFileListFromBase64(userInfo.avatar); form.setFieldsValue({ ...userInfo, avatar: fileList }); }, [form, userInfo]); return (
label={t('username')} name="nickname" rules={[ { required: true, message: t('usernameMessage'), whitespace: true, }, ]} > label={
{t('photo')}
{t('photoDescription')}
} name="avatar" valuePropName="fileList" getValueFromEvent={normFile} > { return false; }} showUploadList={{ showPreviewIcon: false, showRemoveIcon: false }} > label={t('colorSchema')} name="color_schema" rules={[{ required: true, message: t('colorSchemaMessage') }]} > label={t('language', { keyPrefix: 'common' })} name="language" rules={[ { required: true, message: t('languageMessage', { keyPrefix: 'common' }), }, ]} > label={t('timezone')} name="timezone" rules={[{ required: true, message: t('timezoneMessage') }]} > name="email" noStyle>

{t('emailDescription')}

prevValues.additional !== curValues.additional } >
); }; export default UserSettingProfile;