51 lines
1.4 KiB
TypeScript
51 lines
1.4 KiB
TypeScript
import React, { useEffect } from "react";
|
|
import { Formik } from "formik";
|
|
import useAuthState from "../../zustand/AuthState";
|
|
import { useLoginAdmin } from "../../api/auth";
|
|
import FormField from "./FormField";
|
|
import { initialValues, validationSchema } from "./formUtils";
|
|
import { FormValues } from "../../types/Auth";
|
|
import { useTranslation } from "react-i18next";
|
|
import { getLocalStorage } from "../../utils/LocalStorage";
|
|
import { USER_KEY } from "../../config/AppKey";
|
|
import { toast } from "react-toastify";
|
|
|
|
const LoginForm = () => {
|
|
const { mutate, isLoading, isSuccess, data } = useLoginAdmin();
|
|
const [t] = useTranslation();
|
|
const handelSubmit = (values: FormValues) => {
|
|
mutate(values);
|
|
|
|
// localStorage.setItem('type',)
|
|
};
|
|
|
|
const { login } = useAuthState();
|
|
|
|
const LoginData = {
|
|
...data,
|
|
} as any;
|
|
|
|
const LocalType = getLocalStorage(USER_KEY)?.type ?? false;
|
|
useEffect(() => {
|
|
if (isSuccess) {
|
|
login(LoginData?.data as any);
|
|
}
|
|
}, [isSuccess]);
|
|
|
|
useEffect(() => {
|
|
if (LocalType) {
|
|
window.location.href = "/";
|
|
}
|
|
}, [LocalType]);
|
|
|
|
return (
|
|
<div className="LoginForm">
|
|
<Formik initialValues={initialValues} onSubmit={handelSubmit} validateOnMount={true} validationSchema={validationSchema} >
|
|
{(formikProps) => <FormField isLoading={isLoading} />}
|
|
</Formik>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default LoginForm;
|