balibabu
fix: fetch user by @tanstack/react-query #1306 (#1709)
598945f
raw
history blame
3.9 kB
import { useSaveSetting } from '@/hooks/user-setting-hooks';
import { rsaPsw } from '@/utils';
import { Button, Divider, Form, Input, Space } from 'antd';
import SettingTitle from '../components/setting-title';
import { useValidateSubmittable } from '../hooks';
import { useTranslate } from '@/hooks/common-hooks';
import styles from './index.less';
type FieldType = {
password?: string;
new_password?: string;
confirm_password?: string;
};
const tailLayout = {
wrapperCol: { offset: 20, span: 4 },
};
const UserSettingPassword = () => {
const { form, submittable } = useValidateSubmittable();
const { saveSetting, loading } = useSaveSetting();
const { t } = useTranslate('setting');
const onFinish = (values: any) => {
const password = rsaPsw(values.password) as string;
const new_password = rsaPsw(values.new_password) as string;
saveSetting({ password, new_password });
};
const onFinishFailed = (errorInfo: any) => {
console.log('Failed:', errorInfo);
};
return (
<section className={styles.passwordWrapper}>
<SettingTitle
title={t('password')}
description={t('passwordDescription')}
></SettingTitle>
<Divider />
<Form
colon={false}
name="basic"
labelAlign={'left'}
labelCol={{ span: 8 }}
wrapperCol={{ span: 16 }}
style={{ width: '100%' }}
initialValues={{ remember: true }}
onFinish={onFinish}
onFinishFailed={onFinishFailed}
form={form}
autoComplete="off"
// requiredMark={'optional'}
>
<Form.Item<FieldType>
label={t('currentPassword')}
name="password"
rules={[
{
required: true,
message: t('currentPasswordMessage'),
whitespace: true,
},
]}
>
<Input.Password />
</Form.Item>
<Divider />
<Form.Item label={t('newPassword')} required>
<Form.Item<FieldType>
noStyle
name="new_password"
rules={[
{
required: true,
message: t('newPasswordMessage'),
whitespace: true,
},
{ type: 'string', min: 8, message: t('newPasswordDescription') },
]}
>
<Input.Password />
</Form.Item>
</Form.Item>
<Divider />
<Form.Item<FieldType>
label={t('confirmPassword')}
name="confirm_password"
dependencies={['new_password']}
rules={[
{
required: true,
message: t('confirmPasswordMessage'),
whitespace: true,
},
{ type: 'string', min: 8, message: t('newPasswordDescription') },
({ getFieldValue }) => ({
validator(_, value) {
if (!value || getFieldValue('new_password') === value) {
return Promise.resolve();
}
return Promise.reject(
new Error(t('confirmPasswordNonMatchMessage')),
);
},
}),
]}
>
<Input.Password />
</Form.Item>
<Divider />
<Form.Item
{...tailLayout}
shouldUpdate={(prevValues, curValues) =>
prevValues.additional !== curValues.additional
}
>
<Space>
<Button htmlType="button">{t('cancel')}</Button>
<Button
type="primary"
htmlType="submit"
disabled={!submittable}
loading={loading}
>
{t('save', { keyPrefix: 'common' })}
</Button>
</Space>
</Form.Item>
</Form>
</section>
);
};
export default UserSettingPassword;