|
@@ -1,6 +1,6 @@
|
|
|
-import { FC, useState } from 'react';
|
|
|
+import { FC } from 'react';
|
|
|
import { View } from 'react-native';
|
|
|
-import { NavigationProp } from '@react-navigation/native';
|
|
|
+import { NavigationProp, useNavigation, CommonActions } from '@react-navigation/native';
|
|
|
import { Formik } from 'formik';
|
|
|
import * as yup from 'yup';
|
|
|
|
|
@@ -10,7 +10,7 @@ import { ButtonVariants } from '../../types/components';
|
|
|
import { storageSet } from '../../storage';
|
|
|
import { NAVIGATION_PAGES } from '../../types';
|
|
|
|
|
|
-import { usePostLogin } from '../../modules/auth/api/queries/use-post-login';
|
|
|
+import { useLoginMutation } from '../../modules/auth/api/queries/use-post-login';
|
|
|
|
|
|
type Props = {
|
|
|
navigation: NavigationProp<any>;
|
|
@@ -22,15 +22,19 @@ const LoginSchema = yup.object({
|
|
|
});
|
|
|
|
|
|
const LoginScreen: FC<Props> = ({ navigation }) => {
|
|
|
- const [login, setLogin] = useState('');
|
|
|
- const [pass, setPass] = useState('');
|
|
|
+ const { dispatch, navigate } = useNavigation();
|
|
|
|
|
|
- const { data, refetch } = usePostLogin({ login, pass }, false);
|
|
|
+ const { data, mutate: userLogin } = useLoginMutation();
|
|
|
|
|
|
if (data) {
|
|
|
if (data.token) {
|
|
|
storageSet('token', data.token);
|
|
|
- // TODO: navigate to app
|
|
|
+ dispatch(
|
|
|
+ CommonActions.reset({
|
|
|
+ index: 1,
|
|
|
+ routes: [{ name: NAVIGATION_PAGES.IN_APP }]
|
|
|
+ })
|
|
|
+ );
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -42,11 +46,11 @@ const LoginScreen: FC<Props> = ({ navigation }) => {
|
|
|
login: '',
|
|
|
pass: ''
|
|
|
}}
|
|
|
- onSubmit={(values) => {
|
|
|
- setLogin(values.login);
|
|
|
- setPass(values.pass);
|
|
|
-
|
|
|
- refetch();
|
|
|
+ onSubmit={({ login, pass }) => {
|
|
|
+ userLogin({
|
|
|
+ login,
|
|
|
+ pass
|
|
|
+ });
|
|
|
}}
|
|
|
validationSchema={LoginSchema}
|
|
|
>
|
|
@@ -61,7 +65,9 @@ const LoginScreen: FC<Props> = ({ navigation }) => {
|
|
|
onChange={props.handleChange('login')}
|
|
|
value={props.values.login}
|
|
|
onBlur={props.handleBlur('login')}
|
|
|
- formikError={props.touched.login && props.errors.login}
|
|
|
+ formikError={
|
|
|
+ data?.result_description || (props.touched.login && props.errors.login)
|
|
|
+ }
|
|
|
/>
|
|
|
<Input
|
|
|
header={'Password'}
|
|
@@ -70,7 +76,7 @@ const LoginScreen: FC<Props> = ({ navigation }) => {
|
|
|
onChange={props.handleChange('pass')}
|
|
|
value={props.values.pass}
|
|
|
onBlur={props.handleBlur('pass')}
|
|
|
- formikError={props.touched.pass && props.errors.pass}
|
|
|
+ formikError={data?.result_description || (props.touched.pass && props.errors.pass)}
|
|
|
/>
|
|
|
</View>
|
|
|
<View style={{ gap: 30, marginTop: '5%' }}>
|