PLT-5606 Pre-fill the server URL from async storage if you have it. (#326)

This commit is contained in:
enahum 2017-03-06 13:04:45 -03:00 committed by Harrison Healey
parent c01035ac38
commit ba582b2edc
3 changed files with 35 additions and 21 deletions

View file

@ -106,7 +106,13 @@ async function saveStorage(data) {
export function removeStorage() {
return async (dispatch, getState) => {
try {
await AsyncStorage.removeItem('storage');
// Keep the server Url if we have it
const {url} = JSON.parse(await AsyncStorage.getItem('storage'));
if (url) {
await saveStorage({url});
} else {
await AsyncStorage.removeItem('storage');
}
} catch (error) {
// TODO: Error removing data
}

View file

@ -1,25 +1,25 @@
// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
import React from 'react';
import {AppState} from 'react-native';
import React, {PropTypes, PureComponent} from 'react';
import {AppState, AsyncStorage} from 'react-native';
import Loading from 'app/components/loading';
import {RequestStatus} from 'service/constants';
export default class Root extends React.Component {
export default class Root extends PureComponent {
static propTypes = {
credentials: React.PropTypes.object,
logoutRequest: React.PropTypes.object,
loginRequest: React.PropTypes.object,
actions: React.PropTypes.shape({
goToLoadTeam: React.PropTypes.func,
goToSelectServer: React.PropTypes.func,
flushToStorage: React.PropTypes.func,
loadStorage: React.PropTypes.func,
removeStorage: React.PropTypes.func,
setStoreFromLocalData: React.PropTypes.func,
resetLogout: React.PropTypes.func
credentials: PropTypes.object,
logoutRequest: PropTypes.object.isRequired,
loginRequest: PropTypes.object.isRequired,
actions: PropTypes.shape({
goToLoadTeam: PropTypes.func.isRequired,
goToSelectServer: PropTypes.func.isRequired,
handleServerUrlChanged: PropTypes.func.isRequired,
flushToStorage: PropTypes.func.isRequired,
loadStorage: PropTypes.func.isRequired,
removeStorage: PropTypes.func.isRequired,
setStoreFromLocalData: PropTypes.func.isRequired
}).isRequired
};
@ -48,7 +48,7 @@ export default class Root extends React.Component {
if (event === 'inactive') {
this.props.actions.flushToStorage();
}
}
};
init = () => {
if (this.props.logoutRequest.status === RequestStatus.SUCCESS) {
@ -67,15 +67,23 @@ export default class Root extends React.Component {
if (this.props.loginRequest.status === RequestStatus.SUCCESS) {
this.props.actions.goToLoadTeam();
} else {
this.props.actions.goToSelectServer();
this.selectServer();
}
});
} else {
this.props.actions.goToSelectServer();
this.selectServer();
}
});
};
selectServer = async () => {
const {url} = JSON.parse(await AsyncStorage.getItem('storage'));
if (url) {
await this.props.actions.handleServerUrlChanged(url);
}
this.props.actions.goToSelectServer();
};
render() {
return <Loading/>;
}

View file

@ -7,8 +7,8 @@ import navigationSceneConnect from '../navigationSceneConnect';
import {flushToStorage, loadStorage, removeStorage} from 'app/actions/storage';
import {goToSelectServer, setStoreFromLocalData} from 'app/actions/views/root';
import {handleServerUrlChanged} from 'app/actions/views/select_server';
import {goToLoadTeam} from 'app/actions/navigation';
import {resetLogout} from 'service/actions/users';
import Root from './root';
@ -26,11 +26,11 @@ function mapDispatchToProps(dispatch) {
actions: bindActionCreators({
goToLoadTeam,
goToSelectServer,
handleServerUrlChanged,
flushToStorage,
loadStorage,
removeStorage,
setStoreFromLocalData,
resetLogout
setStoreFromLocalData
}, dispatch)
};
}