diff --git a/app/screens/settings/display_settings/display_settings.js b/app/screens/settings/display_settings/display_settings.js index 19d135d35..a4ca423c5 100644 --- a/app/screens/settings/display_settings/display_settings.js +++ b/app/screens/settings/display_settings/display_settings.js @@ -18,8 +18,10 @@ import ClockDisplay from 'app/screens/clock_display'; export default class DisplaySettings extends PureComponent { static propTypes = { + actions: PropTypes.shape({ + goToScreen: PropTypes.func.isRequired, + }).isRequired, componentId: PropTypes.string, - navigator: PropTypes.object.isRequired, theme: PropTypes.object.isRequired, enableTheme: PropTypes.bool.isRequired, enableTimezone: PropTypes.bool.isRequired, @@ -38,22 +40,13 @@ export default class DisplaySettings extends PureComponent { }; goToClockDisplaySettings = preventDoubleTap(() => { - const {navigator, theme} = this.props; + const {actions} = this.props; const {intl} = this.context; if (Platform.OS === 'ios') { - navigator.push({ - screen: 'ClockDisplay', - title: intl.formatMessage({id: 'user.settings.display.clockDisplay', defaultMessage: 'Clock Display'}), - animated: true, - backButtonTitle: '', - navigatorStyle: { - navBarTextColor: theme.sidebarHeaderTextColor, - navBarBackgroundColor: theme.sidebarHeaderBg, - navBarButtonColor: theme.sidebarHeaderTextColor, - screenBackgroundColor: theme.centerChannelBg, - }, - }); + const screen = 'ClockDisplay'; + const title = intl.formatMessage({id: 'user.settings.display.clockDisplay', defaultMessage: 'Clock Display'}); + actions.goToScreen(screen, title); return; } @@ -61,39 +54,21 @@ export default class DisplaySettings extends PureComponent { }); goToTimezoneSettings = preventDoubleTap(() => { - const {navigator, theme} = this.props; + const {actions} = this.props; const {intl} = this.context; + const screen = 'TimezoneSettings'; + const title = intl.formatMessage({id: 'mobile.advanced_settings.timezone', defaultMessage: 'Timezone'}); - navigator.push({ - screen: 'TimezoneSettings', - title: intl.formatMessage({id: 'mobile.advanced_settings.timezone', defaultMessage: 'Timezone'}), - animated: true, - backButtonTitle: '', - navigatorStyle: { - navBarTextColor: theme.sidebarHeaderTextColor, - navBarBackgroundColor: theme.sidebarHeaderBg, - navBarButtonColor: theme.sidebarHeaderTextColor, - screenBackgroundColor: theme.centerChannelBg, - }, - }); + actions.goToScreen(screen, title); }); goToThemeSettings = preventDoubleTap(() => { - const {navigator, theme} = this.props; + const {actions} = this.props; const {intl} = this.context; + const screen = 'ThemeSettings'; + const title = intl.formatMessage({id: 'mobile.display_settings.theme', defaultMessage: 'Theme'}); - navigator.push({ - screen: 'ThemeSettings', - title: intl.formatMessage({id: 'mobile.display_settings.theme', defaultMessage: 'Theme'}), - animated: true, - backButtonTitle: '', - navigatorStyle: { - navBarTextColor: theme.sidebarHeaderTextColor, - navBarBackgroundColor: theme.sidebarHeaderBg, - navBarButtonColor: theme.sidebarHeaderTextColor, - screenBackgroundColor: theme.centerChannelBg, - }, - }); + actions.goToScreen(screen, title); }); render() { diff --git a/app/screens/settings/display_settings/display_settings.test.js b/app/screens/settings/display_settings/display_settings.test.js index bd401a916..54ae73fd7 100644 --- a/app/screens/settings/display_settings/display_settings.test.js +++ b/app/screens/settings/display_settings/display_settings.test.js @@ -12,12 +12,12 @@ jest.mock('react-intl'); describe('DisplaySettings', () => { const baseProps = { + actions: { + goToScreen: jest.fn(), + }, theme: Preferences.THEMES.default, enableTheme: false, enableTimezone: false, - navigator: { - push: jest.fn(), - }, componentId: 'component-id', }; diff --git a/app/screens/settings/display_settings/index.js b/app/screens/settings/display_settings/index.js index 9c9a6c80c..12d4b321f 100644 --- a/app/screens/settings/display_settings/index.js +++ b/app/screens/settings/display_settings/index.js @@ -1,15 +1,17 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. +import {bindActionCreators} from 'redux'; import {connect} from 'react-redux'; import {getTheme} from 'mattermost-redux/selectors/entities/preferences'; import {isTimezoneEnabled} from 'mattermost-redux/selectors/entities/timezone'; +import {goToScreen} from 'app/actions/navigation'; +import {getAllowedThemes} from 'app/selectors/theme'; import {isThemeSwitchingEnabled} from 'app/utils/theme'; import DisplaySettings from './display_settings'; -import {getAllowedThemes} from 'app/selectors/theme'; function mapStateToProps(state) { const enableTimezone = isTimezoneEnabled(state); @@ -22,4 +24,12 @@ function mapStateToProps(state) { }; } -export default connect(mapStateToProps)(DisplaySettings); +function mapDispatchToProps(dispatch) { + return { + actions: bindActionCreators({ + goToScreen, + }, dispatch), + }; +} + +export default connect(mapStateToProps, mapDispatchToProps)(DisplaySettings); diff --git a/app/screens/timezone/index.js b/app/screens/timezone/index.js index fb2901c89..8b015bc5a 100644 --- a/app/screens/timezone/index.js +++ b/app/screens/timezone/index.js @@ -10,6 +10,7 @@ import {getTheme} from 'mattermost-redux/selectors/entities/preferences'; import {getUserTimezone} from 'mattermost-redux/selectors/entities/timezone'; import {getCurrentUser} from 'mattermost-redux/selectors/entities/users'; +import {goToScreen} from 'app/actions/navigation'; import {updateUser} from 'app/actions/views/edit_profile'; import Timezone from './timezone'; @@ -32,6 +33,7 @@ function mapDispatchToProps(dispatch) { actions: bindActionCreators({ getSupportedTimezones, updateUser, + goToScreen, }, dispatch), }; } diff --git a/app/screens/timezone/select_timezone/index.js b/app/screens/timezone/select_timezone/index.js index 5fb95760f..4def5ad3e 100644 --- a/app/screens/timezone/select_timezone/index.js +++ b/app/screens/timezone/select_timezone/index.js @@ -1,11 +1,14 @@ // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. +import {bindActionCreators} from 'redux'; import {connect} from 'react-redux'; import {getTheme} from 'mattermost-redux/selectors/entities/preferences'; import {getSupportedTimezones} from 'mattermost-redux/selectors/entities/general'; +import {popTopScreen} from 'app/actions/navigation'; + import SelectTimezone from './select_timezone'; function mapStateToProps(state, props) { @@ -26,4 +29,12 @@ function mapStateToProps(state, props) { }; } -export default connect(mapStateToProps)(SelectTimezone); +function mapDispatchToProps(dispatch) { + return { + actions: bindActionCreators({ + popTopScreen, + }, dispatch), + }; +} + +export default connect(mapStateToProps, mapDispatchToProps)(SelectTimezone); diff --git a/app/screens/timezone/select_timezone/select_timezone.js b/app/screens/timezone/select_timezone/select_timezone.js index f52559010..79f3a20ce 100644 --- a/app/screens/timezone/select_timezone/select_timezone.js +++ b/app/screens/timezone/select_timezone/select_timezone.js @@ -23,10 +23,12 @@ const VIEWABILITY_CONFIG = ListTypes.VISIBILITY_CONFIG_DEFAULTS; export default class Timezone extends PureComponent { static propTypes = { + actions: PropTypes.shape({ + popTopScreen: PropTypes.func.isRequired, + }).isRequired, selectedTimezone: PropTypes.string.isRequired, initialScrollIndex: PropTypes.number.isRequired, timezones: PropTypes.array.isRequired, - navigator: PropTypes.object, onBack: PropTypes.func.isRequired, theme: PropTypes.object.isRequired, }; @@ -59,7 +61,7 @@ export default class Timezone extends PureComponent { timezoneSelected = (timezone) => { this.props.onBack(timezone); - this.props.navigator.pop(); + this.props.actions.popTopScreen(); }; handleTextChanged = (value) => { diff --git a/app/screens/timezone/timezone.js b/app/screens/timezone/timezone.js index 52ff47116..1badd938e 100644 --- a/app/screens/timezone/timezone.js +++ b/app/screens/timezone/timezone.js @@ -21,7 +21,6 @@ import {getDeviceTimezone} from 'app/utils/timezone'; export default class Timezone extends PureComponent { static propTypes = { - navigator: PropTypes.object.isRequired, theme: PropTypes.object.isRequired, timezones: PropTypes.array.isRequired, user: PropTypes.object.isRequired, @@ -116,29 +115,20 @@ export default class Timezone extends PureComponent { goToSelectTimezone = () => { const { + actions, userTimezone: {manualTimezone}, - navigator, - theme, } = this.props; const {intl} = this.context; + const screen = 'SelectTimezone'; + const title = intl.formatMessage({id: 'mobile.timezone_settings.select', defaultMessage: 'Select Timezone'}); + const passProps = { + selectedTimezone: manualTimezone, + onBack: this.updateManualTimezone, + }; + this.goingBack = false; - navigator.push({ - backButtonTitle: '', - screen: 'SelectTimezone', - title: intl.formatMessage({id: 'mobile.timezone_settings.select', defaultMessage: 'Select Timezone'}), - animated: true, - navigatorStyle: { - navBarTextColor: theme.sidebarHeaderTextColor, - navBarBackgroundColor: theme.sidebarHeaderBg, - navBarButtonColor: theme.sidebarHeaderTextColor, - screenBackgroundColor: theme.centerChannelBg, - }, - passProps: { - selectedTimezone: manualTimezone, - onBack: this.updateManualTimezone, - }, - }); + actions.goToScreen(screen, title, passProps); }; render() {