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:
parent
ec9062c5b9
commit
001bdbb196
2 changed files with 21 additions and 5 deletions
|
@ -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
|
||||||
);
|
);
|
||||||
|
|
|
@ -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>();
|
Loading…
Add table
Add a link
Reference in a new issue