import React, { useState } from 'react'; import { IonHeader, IonToolbar, IonTitle, IonContent, IonPage, IonButtons, IonMenuButton, IonRow, IonCol, IonButton, IonList, IonItem, IonInput, IonText, IonIcon, useIonRouter, IonToast, } from '@ionic/react'; import './Login.scss'; import { setIsLoggedIn, setUsername, setData, setPartyUserMeta, } from '../../data/user/user.actions'; import { connect } from '../../data/connect'; import { RouteComponentProps } from 'react-router'; import { chevronBackOutline } from 'ionicons/icons'; import PATHS from '../../PATHS'; import axios from 'axios'; import * as selectors from '../../data/selectors'; import { UserState } from '../../data/user/user.state'; import constants from '../../constants'; interface OwnProps extends RouteComponentProps {} interface StateProps { partyUserState: UserState; } interface DispatchProps { setIsLoggedIn: typeof setIsLoggedIn; setUsername: typeof setUsername; setData: typeof setData; setPartyUserMeta: typeof setPartyUserMeta; } interface LoginProps extends OwnProps, DispatchProps {} const Login: React.FC = ({ setIsLoggedIn, history, setUsername: setUsernameAction, setData, setPartyUserMeta, }) => { const [username, setUsername] = useState('demo@minimals.cc'); const [email, setEmail] = useState('demo@minimals.cc'); const [password, setPassword] = useState('@2Minimal'); const [formSubmitted, setFormSubmitted] = useState(false); // const [usernameError, setUsernameError] = useState(false); const [passwordError, setPasswordError] = useState(false); const [emailError, setEmailError] = useState(false); const login = async (e: React.FormEvent) => { e.preventDefault(); setFormSubmitted(true); // if (!username) { // setUsernameError(true); // } // if (!password) { // setPasswordError(true); // } const emailAndPassword = { email, password }; const result = await axios.post(constants.SIGN_IN, emailAndPassword); const { data, status } = result; const { accessToken, user } = data; if (status == 200) { // if username and password ok setData({ isLoggedin: true, accessToken }); setPartyUserMeta(user); await setIsLoggedIn(true); await setUsernameAction(username); setShowLoginOkToast(true); router.push(PATHS.PROFILE); } else { // if username or password failed console.log({ result }); } }; const router = useIonRouter(); function handleBackClick() { router.goBack(); } const [showLoginOkToast, setShowLoginOkToast] = useState(false); return ( PartyUser Login Page
Ionic logo
setEmail(e.detail.value as string)} required > {formSubmitted && emailError && (

Email is required

)}
setPassword(e.detail.value as string)} > {formSubmitted && passwordError && (

Password is required

)}
email and password prefilled for demo
Login Signup
setShowLoginOkToast(false)} />
); }; export default connect({ mapDispatchToProps: { setIsLoggedIn, setUsername, setData, setPartyUserMeta, }, mapStateToProps: (state) => ({ partyUserState: selectors.getPartyUserState(state), }), component: Login, });