/* * @Author: ZhaoYing * @Date: 2026-02-03 18:33:21 * @Last Modified by: ZhaoYing * @Last Modified time: 2026-03-24 17:58:43 */ /** * End User Profile Modal * Modal for editing end user profile information */ import { forwardRef, useImperativeHandle, useState } from 'react'; import { Form, Input, App } from 'antd'; import { useTranslation } from 'react-i18next'; import type { EndUser, EndUserProfileModalRef } from '../types' import RbModal from '@/components/RbModal' import { updatedEndUserInfo } from '@/api/memory' const FormItem = Form.Item; /** * Component props */ interface EndUserProfileModalProps { refresh: () => void; } const EndUserProfileModal = forwardRef(({ refresh }, ref) => { const { t } = useTranslation(); const { message } = App.useApp(); const [visible, setVisible] = useState(false); const [form] = Form.useForm(); const [loading, setLoading] = useState(false) const [editVo, setEditVo] = useState(null) const values = Form.useWatch([], form); /** Close modal and reset form */ const handleClose = () => { setVisible(false); form.resetFields(); setLoading(false) }; /** Open modal with user data */ const handleOpen = (user: EndUser) => { setEditVo(user) form.setFieldsValue(user); setVisible(true); }; /** Save profile changes */ const handleSave = () => { form .validateFields() .then(() => { setLoading(true) updatedEndUserInfo({ ...editVo, ...values, // hire_date: values.hire_date?.valueOf() || null }) .then(() => { setLoading(false) refresh() handleClose() message.success(t('common.saveSuccess')) }) .catch(() => { setLoading(false) }); }) .catch((err) => { console.log('err', err) }); } /** Expose methods to parent component */ useImperativeHandle(ref, () => ({ handleOpen, handleClose })); return (
{/* */}
); }); export default EndUserProfileModal;