import React, { useState, useEffect } from 'react'; import { Text, View, TextInput, TouchableOpacity, KeyboardAvoidingView, Platform, ScrollView, } from 'react-native'; import { useNavigation } from '@react-navigation/native'; import Icon from 'react-native-vector-icons/Ionicons'; import { getStyles } from './login.styles'; import { useTheme } from '../../theme'; import { useAppDispatch, useAppSelector } from '../../store/store'; import { login } from '../../store/commonReducers/auth/thunk'; import { LoginRequest } from '@interfaces'; import { RootState } from '../../store/rootReducer'; export const LoginScreen = () => { const dispatch = useAppDispatch(); const navigation = useNavigation(); const { theme: colors } = useTheme(); const styles = getStyles(colors); const [tenancy, setTenancy] = useState(''); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [localError, setLocalError] = useState(''); const { loginLoading, loginError, loginSuccess, token, user_data } = useAppSelector((state: RootState) => state.auth); const handleLogin = async () => { setLocalError(''); if (!tenancy.trim()) { setLocalError('Tenancy name is required'); return; } if (!email.trim()) { setLocalError('Email address is required'); return; } if (!password.trim()) { setLocalError('Password is required'); return; } const payload: LoginRequest = { email, password, device_token: '', }; await dispatch(login(payload)); }; useEffect(() => { if (loginSuccess && token && user_data) { navigation.reset({ index: 0, routes: [{ name: 'DrawerStack' }], }); } }, [loginSuccess, token, user_data, navigation]); return ( Convex CRM Enter details to access your workspace {localError || loginError ? ( {localError || loginError} ) : null} {/* Tenancy Field */} Tenancy Name {/* Email Field */} Email Address {/* Password Field */} Password {/* Sign In Button */} {loginLoading ? 'Signing In...' : 'Sign In'} Secure SSL encrypted workspace ); };