import React, {Component} from 'react'; import Link from '../base/Link'; import Modal from '../base/Modal'; import ModalBody from '../base/ModalBody'; import ModalHeader from '../base/ModalHeader'; import ModalFooter from '../base/ModalFooter'; import * as session from '../../../sync/session'; import {showModal} from './index'; import SignupModal from './SignupModal'; import * as sync from '../../../sync'; import {trackEvent} from '../../../analytics'; class LoginModal extends Component { constructor (props) { super(props); this.state = { step: 1, loading: false, error: '', title: '', message: '', } } async _handleLogin (e) { e.preventDefault(); this.setState({error: '', loading: true}); const email = this._emailInput.value; const password = this._passwordInput.value; try { await session.login(email, password); // Clear all existing sync data that might be there and enable sync process.nextTick(async () => { await sync.resetLocalData(); await sync.doInitialSync(); }); this.setState({step: 2, loading: false}); } catch (e) { this.setState({error: e.message, loading: false}); } } _handleSignup (e) { e.preventDefault(); this.modal.hide(); showModal(SignupModal); trackEvent('Auth', 'Switch', 'To Signup'); } show (options = {}) { const {title, message} = options; this.setState({step: 1, error: '', loading: false, title, message}); this.modal.show(); setTimeout(() => this._emailInput.focus(), 100); } render () { const {step, title, message} = this.state; let inner; if (step === 1) { inner = [ {title || "Login to Your Account"}, {message ? (

{message}

) : null}
this._emailInput = n}/>
this._passwordInput = n}/>
{this.state.error ? (
** {this.state.error}
) : null}
,
Don't have an account yet? {" "} Signup
] } else { inner = [ Login Success,

Enjoy your stay!

If you have any questions or concerns, send you email to {" "} support@insomnia.rest

, ] } return (
this.modal = m} {...this.props}> {inner}
) } } LoginModal.propTypes = {}; export default LoginModal;