[FIX] Back button closing activity when on root stack screen (#2804)

* Make hardware back button to behave as home button on root screens

* Remove unnecessary code

* Remove handleBackPress from OnboardingView

* Fix lint
This commit is contained in:
Diego Mello 2021-01-15 14:49:00 -03:00 committed by GitHub
parent b77603c729
commit a51a98513d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 10 additions and 44 deletions

View File

@ -29,7 +29,7 @@
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:exported="true"
android:label="@string/app_name"
android:launchMode="singleTask"
android:launchMode="singleTop"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.DOWNLOAD_COMPLETE" />

View File

@ -37,6 +37,11 @@ public class MainActivity extends ReactFragmentActivity {
RNBootSplash.init(R.drawable.launch_screen, MainActivity.this);
}
@Override
public void invokeDefaultOnBackPressed() {
moveTaskToBack(true);
}
/**
* Returns the name of the main component registered from JavaScript. This is used to schedule
* rendering of the component.

View File

@ -7,7 +7,7 @@ import { connect } from 'react-redux';
import Navigation from './lib/Navigation';
import { defaultHeader, getActiveRouteName, navigationTheme } from './utils/navigation';
import {
ROOT_LOADING, ROOT_OUTSIDE, ROOT_NEW_SERVER, ROOT_INSIDE, ROOT_SET_USERNAME, ROOT_BACKGROUND
ROOT_LOADING, ROOT_OUTSIDE, ROOT_NEW_SERVER, ROOT_INSIDE, ROOT_SET_USERNAME
} from './actions/app';
// Stacks
@ -65,7 +65,7 @@ const App = React.memo(({ root, isMasterDetail }) => {
>
<Stack.Navigator screenOptions={{ headerShown: false, animationEnabled: false }}>
<>
{root === ROOT_LOADING || root === ROOT_BACKGROUND ? (
{root === ROOT_LOADING ? (
<Stack.Screen
name='AuthLoading'
component={AuthLoadingView}

View File

@ -5,7 +5,6 @@ export const ROOT_INSIDE = 'inside';
export const ROOT_LOADING = 'loading';
export const ROOT_NEW_SERVER = 'newServer';
export const ROOT_SET_USERNAME = 'setUsername';
export const ROOT_BACKGROUND = 'background';
export function appStart({ root, ...args }) {
return {

View File

@ -1,12 +1,10 @@
import React from 'react';
import {
View, Text, Image, BackHandler, Linking
View, Text, Image, Linking
} from 'react-native';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import Orientation from 'react-native-orientation-locker';
import { appStart as appStartAction, ROOT_BACKGROUND } from '../../actions/app';
import I18n from '../../i18n';
import Button from '../../containers/Button';
import styles from './styles';
@ -23,7 +21,6 @@ class OnboardingView extends React.Component {
static propTypes = {
navigation: PropTypes.object,
appStart: PropTypes.func,
theme: PropTypes.string
}
@ -34,18 +31,6 @@ class OnboardingView extends React.Component {
}
}
componentDidMount() {
const { navigation } = this.props;
this.unsubscribeFocus = navigation.addListener('focus', () => {
this.backHandler = BackHandler.addEventListener('hardwareBackPress', this.handleBackPress);
});
this.unsubscribeBlur = navigation.addListener('blur', () => {
if (this.backHandler && this.backHandler.remove) {
this.backHandler.remove();
}
});
}
shouldComponentUpdate(nextProps) {
const { theme } = this.props;
if (theme !== nextProps.theme) {
@ -54,21 +39,6 @@ class OnboardingView extends React.Component {
return false;
}
componentWillUnmount() {
if (this.unsubscribeFocus) {
this.unsubscribeFocus();
}
if (this.unsubscribeBlur) {
this.unsubscribeBlur();
}
}
handleBackPress = () => {
const { appStart } = this.props;
appStart({ root: ROOT_BACKGROUND });
return false;
}
connectServer = () => {
logEvent(events.ONBOARD_JOIN_A_WORKSPACE);
const { navigation } = this.props;
@ -116,8 +86,4 @@ class OnboardingView extends React.Component {
}
}
const mapDispatchToProps = dispatch => ({
appStart: params => dispatch(appStartAction(params))
});
export default connect(null, mapDispatchToProps)(withTheme(OnboardingView));
export default withTheme(OnboardingView);

View File

@ -29,7 +29,6 @@ import {
roomsRequest as roomsRequestAction,
closeServerDropdown as closeServerDropdownAction
} from '../../actions/rooms';
import { appStart as appStartAction, ROOT_BACKGROUND } from '../../actions/app';
import debounce from '../../utils/debounce';
import { isIOS, isTablet } from '../../utils/deviceInfo';
import RoomsListHeaderView from './Header';
@ -549,12 +548,10 @@ class RoomsListView extends React.Component {
handleBackPress = () => {
const { searching } = this.state;
const { appStart } = this.props;
if (searching) {
this.cancelSearch();
return true;
}
appStart({ root: ROOT_BACKGROUND });
return false;
};
@ -1044,7 +1041,6 @@ const mapDispatchToProps = dispatch => ({
toggleSortDropdown: () => dispatch(toggleSortDropdownAction()),
openSearchHeader: () => dispatch(openSearchHeaderAction()),
closeSearchHeader: () => dispatch(closeSearchHeaderAction()),
appStart: params => dispatch(appStartAction(params)),
roomsRequest: params => dispatch(roomsRequestAction(params)),
selectServerRequest: server => dispatch(selectServerRequestAction(server)),
closeServerDropdown: () => dispatch(closeServerDropdownAction())