diff --git a/src/chrome/UserAccount.tsx b/src/chrome/UserAccount.tsx index 965c8a3ed..13fda40cc 100644 --- a/src/chrome/UserAccount.tsx +++ b/src/chrome/UserAccount.tsx @@ -7,7 +7,7 @@ * @format */ -import {User} from '../reducers/user'; +import {User, USER_UNAUTHORIZED, USER_NOT_SIGNEDIN} from '../reducers/user'; import {ActiveSheet} from '../reducers/application'; import {styled, FlexRow, Glyph, Text, colors} from 'flipper'; @@ -17,6 +17,8 @@ import {connect} from 'react-redux'; import electron from 'electron'; import {findDOMNode} from 'react-dom'; import React, {PureComponent} from 'react'; +import {getUser} from '../fb-stubs/user'; +import config from '../fb-stubs/config'; const Container = styled(FlexRow)({ alignItems: 'center', @@ -86,6 +88,18 @@ class UserAccount extends PureComponent { }); }; + openLogin = () => this.props.setActiveSheet(ACTIVE_SHEET_SIGN_IN); + + componentDidMount() { + if (config.showLogin) { + getUser().catch(error => { + if (error === USER_UNAUTHORIZED || error === USER_NOT_SIGNEDIN) { + this.openLogin(); + } + }); + } + } + render() { const {user} = this.props; const name = user ? user.name : null; @@ -98,8 +112,7 @@ class UserAccount extends PureComponent { ) : ( - this.props.setActiveSheet(ACTIVE_SHEET_SIGN_IN)}> + { @@ -17,7 +17,10 @@ export default (store: Store, logger: Logger) => { .then(user => { store.dispatch(login(user)); }) - .catch(console.debug); + .catch(e => { + store.dispatch(logout()); + console.error(e); + }); let prevUserName = store.getState().user.name; store.subscribe(() => { diff --git a/src/reducers/user.tsx b/src/reducers/user.tsx index fbbb909f8..5fc49fbbf 100644 --- a/src/reducers/user.tsx +++ b/src/reducers/user.tsx @@ -9,6 +9,9 @@ import {Actions} from './'; +export const USER_UNAUTHORIZED = 'Unauthorized.'; +export const USER_NOT_SIGNEDIN = 'Not signed in.'; + export type User = { name?: string; profile_picture?: {