import React, {PureComponent} from 'react'; import autobind from 'autobind-decorator'; import Link from '../base/link'; import Modal from '../base/modal'; import ModalBody from '../base/modal-body'; import ModalHeader from '../base/modal-header'; import ModalFooter from '../base/modal-footer'; import * as session from '../../../sync/session'; import * as sync from '../../../sync'; @autobind class LoginModal extends PureComponent { constructor (props) { super(props); this.state = { step: 1, loading: false, error: '', title: '', message: '' }; } _setModalRef (n) { this.modal = n; } _setPasswordInputRef (n) { this._passwordInput = n; } _setEmailInputRef (n) { this._emailInput = n; } 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}); } } show (options = {}) { const {title, message} = options; this.setState({step: 1, error: '', loading: false, title, message}); this.modal.show(); setTimeout(() => this._emailInput.focus(), 100); } hide () { this.modal.hide(); } render () { const {step, title, message, loading, error} = this.state; let inner; if (step === 1) { inner = [ {title || 'Login to Your Account'}, {message ?

{message}

: null}
{error ?
** {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 (
{inner}
); } } LoginModal.propTypes = {}; export default LoginModal;