import { putUpdateProfile } from '@api/user' import TextInput from '@components/common/TextInput' import { useSiteContext } from '@context/SiteContext' import { createForm } from '@felte/solid' import { validator } from '@felte/validator-yup' import useLanguage from '@hooks/useLanguage' import useToast from '@hooks/useToast' import { IconKey, IconUser, IconUserCircle } from '@tabler/icons-solidjs' import { Helpers } from '@utils/helper' import * as yup from 'yup' const profileSchema = (language, isRequired) => yup.object({ name: yup.string().required(isRequired(language.ui.displayName)), password: yup.string().nullable().optional(), 'confirm-password': yup.string().when('password', { is: (val) => !!(val && val.length > 0), then: (schema) => schema.oneOf( [yup.ref('password'), null], language.message['PASSWORD_MUSTMATCH'], ), }), }) export default function Profile() { const { store: { userInfo }, setUser, } = useSiteContext() const { language, isRequired } = useLanguage() const notify = useToast() const { form, errors, reset } = createForm({ extend: [validator({ schema: profileSchema(language, isRequired) })], onSubmit: async (values) => { try { const { name, password } = values const clearObj = Helpers.clearObject({ name: name || null, password: password || null, }) const resp = await putUpdateProfile(clearObj) if (resp.status === 200) { setUser(resp.data) reset() notify.success({ title: language.ui.success, description: language.message[resp.data] || language.message['CREATE_USER_SUCCESS'], }) } } catch (error) { notify.error({ title: language.ui.error, description: language.message[error?.data] || language.message['API_CALL_FAIL'], closable: true, }) } }, }) return (