1
0
Fork 0
mirror of https://github.com/muerwre/vault-frontend.git synced 2025-04-25 04:46:40 +07:00

made settings provider

This commit is contained in:
Fedor Katurov 2022-07-28 17:16:37 +07:00
parent ec9062c5b9
commit 001bdbb196
2 changed files with 21 additions and 5 deletions

View file

@ -12,7 +12,7 @@ import { ERROR_LITERAL } from '~/constants/errors';
import { ProfileAccounts } from '~/containers/profile/ProfileAccounts'; import { ProfileAccounts } from '~/containers/profile/ProfileAccounts';
import { usePatchUser } from '~/hooks/auth/usePatchUser'; import { usePatchUser } from '~/hooks/auth/usePatchUser';
import { useUser } from '~/hooks/auth/useUser'; import { useUser } from '~/hooks/auth/useUser';
import { useProfileForm } from '~/hooks/profile/useProfileForm'; import { useSettingsForm } from '~/utils/providers/SettingsProvider';
import { has } from '~/utils/ramda'; import { has } from '~/utils/ramda';
import styles from './styles.module.scss'; import styles from './styles.module.scss';
@ -23,7 +23,7 @@ const ProfileSettings: FC = () => {
const { user } = useUser(); const { user } = useUser();
const { save } = usePatchUser(); const { save } = usePatchUser();
const { handleSubmit, values, errors, handleChange } = useProfileForm( const { handleSubmit, values, errors, handleChange } = useSettingsForm(
{ ...user, password: '', newPassword: '' }, { ...user, password: '', newPassword: '' },
save save
); );

View file

@ -1,10 +1,12 @@
import { useCallback, useRef } from 'react'; import { FC, PropsWithChildren, useCallback, useRef } from 'react';
import { FormikConfig, useFormik } from 'formik'; import { FormikConfig, useFormik, FormikProvider, useFormikContext } from 'formik';
import { Asserts, object, string } from 'yup'; import { Asserts, object, string } from 'yup';
import { ERRORS } from '~/constants/errors'; import { ERRORS } from '~/constants/errors';
import { getRandomPhrase } from '~/constants/phrases'; import { getRandomPhrase } from '~/constants/phrases';
import { usePatchUser } from '~/hooks/auth/usePatchUser';
import { useUser } from '~/hooks/auth/useUser';
import { IUser } from '~/types/auth'; import { IUser } from '~/types/auth';
import { getValidationErrors } from '~/utils/errors/getValidationErrors'; import { getValidationErrors } from '~/utils/errors/getValidationErrors';
import { showErrorToast } from '~/utils/errors/showToast'; import { showErrorToast } from '~/utils/errors/showToast';
@ -25,7 +27,7 @@ const validationSchema = object({
export type ProfileFormData = Asserts<typeof validationSchema>; export type ProfileFormData = Asserts<typeof validationSchema>;
export const useProfileForm = ( export const useSettingsForm = (
values: ProfileFormData, values: ProfileFormData,
submitter: (data: ProfileFormData) => Promise<IUser> submitter: (data: ProfileFormData) => Promise<IUser>
) => { ) => {
@ -62,3 +64,17 @@ export const useProfileForm = (
validationSchema, validationSchema,
}); });
}; };
export const SettingsProvider: FC<PropsWithChildren<{}>> = ({ children }) => {
const { user } = useUser();
const { save } = usePatchUser();
const formik = useSettingsForm(
{ ...user, password: '', newPassword: '' },
save
);
return <FormikProvider value={formik}>{children}</FormikProvider>
}
export const useSettings = () => useFormikContext<ProfileFormData>();