diff --git a/app/index.js b/app/index.js index d126f6544..492e1e14c 100644 --- a/app/index.js +++ b/app/index.js @@ -20,7 +20,7 @@ export const authenticated = WrappedComponent => class _p extends React.PureComp if (!this.login.token || this.login.failure) { return store.getState().navigator.resetTo({ screen: 'Login', - animationType: 'none' + animated: false }); } } @@ -57,7 +57,12 @@ export const HomeScreen = class extends React.PureComponent { navigator: PropTypes.object.isRequired } static navigatorStyle = { - navBarHidden: true + navBarHidden: true, + + rightButtons: [{ + id: 'close', + title: 'Cancel' + }] }; componentWillMount() { this.props.setNavigator(this.props.navigator); diff --git a/app/sagas/init.js b/app/sagas/init.js index ceedb0509..0308610f7 100644 --- a/app/sagas/init.js +++ b/app/sagas/init.js @@ -14,7 +14,8 @@ const restore = function* restore() { yield put(setServer(currentServer)); } else { navigator.resetTo({ - screen: 'ListServer' + screen: 'ListServer', + animated: false }); } } catch (e) { diff --git a/app/sagas/selectServer.js b/app/sagas/selectServer.js index f5db20fa6..88d6a0b8e 100644 --- a/app/sagas/selectServer.js +++ b/app/sagas/selectServer.js @@ -1,4 +1,4 @@ -import { put, takeEvery, call, takeLatest, all, race, take } from 'redux-saga/effects'; +import { put, takeEvery, call, takeLatest, race, take } from 'redux-saga/effects'; import { delay } from 'redux-saga'; import { AsyncStorage } from 'react-native'; import { Navigation } from 'react-native-navigation'; @@ -17,6 +17,9 @@ const selectServer = function* selectServer({ server }) { yield put(changedServer(server)); yield call([AsyncStorage, 'setItem'], 'currentServer', server); yield put(connectRequest(server)); + yield Navigation.dismissModal({ + animationType: 'slide-down' + }); }; diff --git a/app/views/login.js b/app/views/login.js index 1c70b5490..9144a7c26 100644 --- a/app/views/login.js +++ b/app/views/login.js @@ -34,17 +34,47 @@ class LoginView extends React.Component { username: '', password: '' }; - + this.props.navigator.setSubTitle({ + subtitle: this.props.server + }); this.props.navigator.setTitle({ title: 'Login' }); - } - - componentWillReceiveProps(nextProps) { - this.props.navigator.setSubTitle({ - subtitle: nextProps.server + this.props.navigator.setButtons({ + rightButtons: [{ + id: 'close', + title: 'Cancel' + }], + animated: true }); } + componentWillReceiveProps() { + this.props.navigator.setSubTitle({ + subtitle: this.props.server + }); + this.props.navigator.setTitle({ + title: 'Login' + }); + this.props.navigator.setButtons({ + rightButtons: [{ + id: 'close', + title: 'Cancel' + }], + animated: true + }); + this.props.navigator.setOnNavigatorEvent(this.onNavigatorEvent.bind(this)); + } + onNavigatorEvent = (event) => { + if (event.type === 'NavBarButtonPress') { + if (event.id === 'close') { + this.props.navigator.resetTo({ + screen: 'ListServer', + animated: false + + }); + } + } + } submit = () => { const { username, password, code } = this.state; this.props.loginSubmit({ username, password, code }); diff --git a/app/views/serverList.js b/app/views/serverList.js index 5bf276b08..37e1cb75b 100644 --- a/app/views/serverList.js +++ b/app/views/serverList.js @@ -65,7 +65,8 @@ const zeroconf = new Zeroconf(); @connect(state => ({ - server: state.server.server + server: state.server.server, + login: state.login }), dispatch => ({ selectServer: server => dispatch(setServer(server)) })) @@ -92,7 +93,7 @@ export default class ListServerView extends React.Component { id: 'add', title: 'Add' }], - leftButtons: props.server && Platform.select({ + leftButtons: props.login.isAuthenticated && props.server && Platform.select({ ios: [{ id: 'close', title: 'Close' diff --git a/package-lock.json b/package-lock.json index 2c14516f0..256f965ec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9599,6 +9599,14 @@ "prop-types": "15.5.10" } }, + "react-native-animatable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/react-native-animatable/-/react-native-animatable-1.2.3.tgz", + "integrity": "sha512-GcIKsSPy9A5VfAGCmivElYwBz/Ds7kawG3CkBDCMFf0fkDXKeHcVffqFe7rUR+5rR31Azvkbmp+tUP+N7kdjyw==", + "requires": { + "prop-types": "15.5.10" + } + }, "react-native-card-view": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/react-native-card-view/-/react-native-card-view-0.0.3.tgz", diff --git a/package.json b/package.json index 8b813f685..deb8dcec2 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "react-native-fetch-blob": "^0.10.8", "react-native-image-picker": "^0.26.4", "react-native-img-cache": "^1.4.0", - "react-native-loading-spinner-overlay": "^0.5.1", + "react-native-loading-spinner-overlay": "^0.5.2", "react-native-meteor": "^1.1.0", "react-native-navigation": "^1.1.193", "react-native-optimized-flatlist": "^1.0.1",