diff options
| author | Erik Larkö <erik@mullvad.net> | 2017-10-02 07:42:14 +0200 |
|---|---|---|
| committer | Erik Larkö <erik@mullvad.net> | 2017-10-02 07:42:14 +0200 |
| commit | 284f3dd5a8526a4292c2ce8ecab3491d576c4ac2 (patch) | |
| tree | c99db0836e279287b19fdd3299192b6f7ea0aa75 | |
| parent | be7250fade3c007132a69304d1cc68bc819d3e06 (diff) | |
| parent | 5ace2e6a5db0be1024aad18606313d7aab1ffa27 (diff) | |
| download | mullvadvpn-284f3dd5a8526a4292c2ce8ecab3491d576c4ac2.tar.xz mullvadvpn-284f3dd5a8526a4292c2ce8ecab3491d576c4ac2.zip | |
Merge branch 'partial-account-token-in-redux'
| -rw-r--r-- | app/components/Login.js | 15 | ||||
| -rw-r--r-- | app/containers/LoginPage.js | 3 | ||||
| -rw-r--r-- | app/redux/account/actions.js | 24 | ||||
| -rw-r--r-- | app/redux/account/reducers.js | 4 | ||||
| -rw-r--r-- | test/components/Login.spec.js | 6 |
5 files changed, 37 insertions, 15 deletions
diff --git a/app/components/Login.js b/app/components/Login.js index 1e1d7dbb5f..784d92daa8 100644 --- a/app/components/Login.js +++ b/app/components/Login.js @@ -13,6 +13,7 @@ export type LoginPropTypes = { onSettings: ?(() => void), onFirstChangeAfterFailure: () => void, onExternalLink: (type: string) => void, + onAccountTokenChange: (string) => void, }; export default class Login extends Component { @@ -20,19 +21,15 @@ export default class Login extends Component { state = { notifyOnFirstChangeAfterFailure: false, isActive: false, - unsubmittedAccountToken: '', }; onCreateAccount = () => this.props.onExternalLink('createAccount'); onFocus = () => this.setState({ isActive: true }); onBlur = () => this.setState({ isActive: false }); onLogin = () => { - const accountToken = this.state.unsubmittedAccountToken; + const accountToken = this.props.account.accountToken; if(accountToken && accountToken.length > 0) { this.props.onLogin(accountToken); - this.setState({ - unsubmittedAccountToken: '', - }); } } @@ -42,9 +39,7 @@ export default class Login extends Component { this.setState({ notifyOnFirstChangeAfterFailure: false }); this.props.onFirstChangeAfterFailure(); } - this.setState({ - unsubmittedAccountToken: val, - }); + this.props.onAccountTokenChange(val); } formTitle(s: LoginState): string { @@ -168,9 +163,7 @@ export default class Login extends Component { _createLoginForm(): React.Element<*> { const { status, error } = this.props.account; - const accountToken = status === 'logging in' - ? this.props.account.accountToken - : this.state.unsubmittedAccountToken; + const accountToken = this.props.account.accountToken; const inputDisabled = status === 'logging in'; diff --git a/app/containers/LoginPage.js b/app/containers/LoginPage.js index ef4698fad1..457be7a6f2 100644 --- a/app/containers/LoginPage.js +++ b/app/containers/LoginPage.js @@ -14,7 +14,8 @@ const mapDispatchToProps = (dispatch, props) => { onSettings: () => dispatch(push('/settings')), onLogin: (account) => login(backend, account), onFirstChangeAfterFailure: () => dispatch(accountActions.resetLoginError()), - onExternalLink: (type) => shell.openExternal(links[type]) + onExternalLink: (type) => shell.openExternal(links[type]), + onAccountTokenChange: (token) => dispatch(accountActions.updateAccountToken(token)), }; }; diff --git a/app/redux/account/actions.js b/app/redux/account/actions.js index 30089b1d56..d528f4f3d0 100644 --- a/app/redux/account/actions.js +++ b/app/redux/account/actions.js @@ -23,6 +23,11 @@ type ResetLoginErrorAction = { type: 'RESET_LOGIN_ERROR', }; +type UpdateAccountTokenAction = { + type: 'UPDATE_ACCOUNT_TOKEN', + token: string, +}; + export type AccountAction = StartLoginAction | LoginSuccessfulAction | LoginFailedAction @@ -66,7 +71,24 @@ function resetLoginError(): ResetLoginErrorAction { }; } +function updateAccountToken(token: string): UpdateAccountTokenAction { + return { + type: 'UPDATE_ACCOUNT_TOKEN', + token: token, + }; +} + const login = (backend: Backend, account: string) => () => backend.login(account); const logout = (backend: Backend) => () => backend.logout(); -export default { login, logout, startLogin, loginSuccessful, loginFailed, loggedOut, autoLoginFailed, resetLoginError }; +export default { + login, + logout, + startLogin, + loginSuccessful, + loginFailed, + loggedOut, + autoLoginFailed, + resetLoginError, + updateAccountToken, +}; diff --git a/app/redux/account/reducers.js b/app/redux/account/reducers.js index 6107f08195..27530499c9 100644 --- a/app/redux/account/reducers.js +++ b/app/redux/account/reducers.js @@ -53,6 +53,10 @@ export default function(state: AccountReduxState = initialState, action: ReduxAc status: 'none', error: null, }}; + case 'UPDATE_ACCOUNT_TOKEN': + return { ...state, ...{ + accountToken: action.token, + }}; } return state; diff --git a/test/components/Login.spec.js b/test/components/Login.spec.js index d3d38be410..9918dc6e1c 100644 --- a/test/components/Login.spec.js +++ b/test/components/Login.spec.js @@ -67,6 +67,9 @@ describe('components/Login', () => { it('logs in with the entered account number when clicking the login icon', (done) => { const component = renderNotLoggedIn(); component.setProps({ + account: { + accountToken: '12345', + }, onLogin: (an) => { try { expect(an).to.equal('12345'); @@ -76,8 +79,6 @@ describe('components/Login', () => { } }, }); - const accountInput = component.find(AccountInput); - setInputText(accountInput, '12345'); component.find('.login-form__submit').simulate('click'); }); @@ -97,6 +98,7 @@ const defaultProps = { onChange: () => {}, onFirstChangeAfterFailure: () => {}, onExternalLink: () => {}, + onAccountTokenChange: () => {}, }; function renderLoggedIn() { |
