Fixes for Login screen

This commit is contained in:
Aman Chaturvedi
2022-12-08 11:24:39 +05:30
parent 314bb97cd4
commit 5678d910ec
10 changed files with 26 additions and 24 deletions

View File

@@ -13,6 +13,7 @@ import userData from './src/data/userData.json';
import {getUniqueId} from 'react-native-device-info';
import {useAppDispatch} from './src/hooks';
import {setAuthData} from './src/reducer/commonSlice';
import { _map } from './RN-UI-LIB/src/utlis/common';
const Stack = createNativeStackNavigator();
@@ -50,7 +51,7 @@ const ProtectedRouter = () => {
header: () => null,
}}
/>
{Object.keys(data.widgets).map(key => (
{_map(data.widgets, key => (
<Stack.Screen
key={key}
name={key}

View File

@@ -2,7 +2,7 @@ import {setAuthData} from '../reducer/commonSlice';
import axiosInstance, {ApiKeys, getApiUrl} from '../components/utlis/apiHelper';
import {
setFormLoading,
setGetOTPError,
setOTPError,
setShowOTPScreen,
setVerifyOTPError,
setVerifyOTPSuccess,
@@ -40,12 +40,13 @@ export const generateOTP =
}
})
.catch(err => {
// TODO: Fix status from BE
if (err.response.status === 404) {
dispatch(
setGetOTPError('Enter a registered mobile number'),
setOTPError('Enter a registered mobile number'),
);
} else {
dispatch(setGetOTPError(err.response?.data?.message));
dispatch(setOTPError(err.response?.data?.message));
}
});
};

View File

@@ -26,11 +26,11 @@ export const Countdown = (props: CountdownProps) => {
if (newTickerValue < stopAt) {
clearTimeout(intervalRef.current);
onComplete && onComplete();
onComplete && typeof onComplete === 'function' && onComplete();
return;
}
step && step(newTickerValue);
step && typeof onComplete === 'function' && step(newTickerValue);
setTicker(newTickerValue);
};

View File

@@ -20,6 +20,10 @@ const OtpText = () => {
dispatch(generateOTP({phoneNumber}, true));
};
const handleCountdownComplete = () => {
setCountDownComplete(true)
};
if (verifyOTPError) {
return (
<Text style={styles.errorText}>
@@ -44,12 +48,10 @@ const OtpText = () => {
<Text light>
Resend OTP in{' '}
<Countdown
onComplete={() => {
setCountDownComplete(true);
}}
onComplete={handleCountdownComplete}
startFrom={30}
/>{' '}
second
second(s)
</Text>
);
};

View File

@@ -52,7 +52,7 @@ const Login = () => {
keyboardType="phone-pad"
placeholder="Enter here"
onBlur={onBlur}
onChangeText={value => onChange(value)}
onChangeText={onChange}
value={value}
maxLength={10}
defaultValue={phoneNumber}
@@ -61,7 +61,7 @@ const Login = () => {
/>
)}
name="phoneNumber"
rules={{required: true, minLength: 10}}
rules={{required: true, minLength: 10, maxLength: 10}}
/>
<Button
title="Get OTP"

View File

@@ -3,7 +3,6 @@ import {createSlice} from '@reduxjs/toolkit';
const initialState = {
phoneNumber: '',
otpToken: '',
getOTPSuccess: {},
OTPError: '',
verifyOTPSuccess: '',
verifyOTPError: '',
@@ -22,7 +21,7 @@ const loginSlice = createSlice({
state.OTPError = '';
state.verifyOTPError = '';
},
setGetOTPError: (state, action) => {
setOTPError: (state, action) => {
state.OTPError = action.payload;
state.isLoading = false;
},
@@ -42,7 +41,7 @@ const loginSlice = createSlice({
});
export const {
setGetOTPError,
setOTPError,
setVerifyOTPError,
setVerifyOTPSuccess,
setShowOTPScreen,

View File

@@ -4,6 +4,8 @@ import {setAuthData} from '../../reducer/commonSlice';
import {toast} from '../../../RN-UI-LIB/src/components/toast';
import {navigateToScreen} from './navigationUtlis';
import {GLOBAL} from '../../constants/Global';
import {_map} from '../../../RN-UI-LIB/src/utlis/common';
import { BASE_AV_APP_URL } from '../../constants/config';
const MOCK_DIR = '__mocks__';
@@ -56,9 +58,7 @@ export function getApiUrl(
if (queryParams) {
apiUrl +=
'?' +
Object.keys(queryParams)
.map(key => `${key}=${queryParams[key]}`)
.join('&');
_map(queryParams, key => `${key}=${queryParams[key]}`).join('&');
}
return `${apiUrl}`;
@@ -75,7 +75,7 @@ axiosInstance.interceptors.request.use(request => {
request.retry = request?.retry < 4 ? request.retry : 3;
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
request.headers['request-start-time'] = new Date().getTime();
request.headers['request-start-time'] = Date.now();
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
request.headers['sessionToken'] = GLOBAL.SESSION_TOKEN || '';
@@ -89,7 +89,7 @@ axiosInstance.interceptors.response.use(
response => {
if (response.config.headers) {
const start = response.config.headers['request-start-time'];
const end = new Date().getTime();
const end = Date.now();
const milliseconds = end - Number(start);
response.headers['request-duration'] = String(milliseconds);
}
@@ -128,7 +128,7 @@ axiosInstance.interceptors.response.use(
);
axiosInstance.defaults.headers.common['Content-Type'] = 'application/json';
axiosInstance.defaults.baseURL = `https://dev-longhorn-server.np.navi-tech.in/av/`;
axiosInstance.defaults.baseURL = BASE_AV_APP_URL;
// TODO:: Ideally should happen through middlewares.
// export const registerNavigateAndDispatch = (

1
src/constants/config.js Normal file
View File

@@ -0,0 +1 @@
export const BASE_AV_APP_URL = 'https://dev-longhorn-server.np.navi-tech.in/av/';

View File

@@ -19,7 +19,6 @@ const initialState = {
} as User,
} as CommonState;
console.log('initialState', initialState);
export const commonSlice = createSlice({
name: 'common',
initialState,
@@ -31,7 +30,6 @@ export const commonSlice = createSlice({
state.userData.sessionToken,
state.userData.deviceId,
);
console.log("new global", GLOBAL);
}
},
},