diff --git a/app/views/OAuthView.js b/app/views/OAuthView.js index d418b8dad..ab28c3f73 100644 --- a/app/views/OAuthView.js +++ b/app/views/OAuthView.js @@ -2,7 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { WebView } from 'react-native-webview'; import { connect } from 'react-redux'; - +import { ActivityIndicator, StyleSheet } from 'react-native'; import RocketChat from '../lib/rocketchat'; import { isIOS } from '../utils/deviceInfo'; import { CloseModalButton } from '../containers/HeaderButton'; @@ -12,6 +12,18 @@ const userAgent = isIOS ? 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1' : 'Mozilla/5.0 (Linux; Android 6.0.1; SM-G920V Build/MMB29K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.98 Mobile Safari/537.36'; +const styles = StyleSheet.create({ + loading: { + position: 'absolute', + left: 0, + right: 0, + top: 0, + bottom: 0, + alignItems: 'center', + justifyContent: 'center' + } +}); + @connect(state => ({ server: state.server.server })) @@ -29,7 +41,8 @@ export default class OAuthView extends React.PureComponent { constructor(props) { super(props); this.state = { - logging: false + logging: false, + loading: false }; this.redirectRegex = new RegExp(`(?=.*(${ props.server }))(?=.*(credentialToken))(?=.*(credentialSecret))`, 'g'); } @@ -58,6 +71,7 @@ export default class OAuthView extends React.PureComponent { render() { const { navigation } = this.props; + const { loading } = this.state; const oAuthUrl = navigation.getParam('oAuthUrl'); return ( @@ -74,7 +88,15 @@ export default class OAuthView extends React.PureComponent { this.login({ oauth: { ...credentials } }); } }} + onLoadStart={() => { + this.setState({ loading: true }); + }} + + onLoadEnd={() => { + this.setState({ loading: false }); + }} /> + { loading ? : null } ); }