From a67bfda43f65d5745bb19f32a6f9e8a078cc49eb Mon Sep 17 00:00:00 2001 From: Julia Friesel <julia.friesel@gmail.com> Date: Sun, 19 Aug 2018 16:11:01 +0200 Subject: [PATCH] Handle back button presses --- app.js | 16 +++++++++++++++- components/calendar.js | 2 -- components/cycle-day/symptoms/index.js | 19 +++++++++++++++---- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/app.js b/app.js index ec6f3087..2cfc07e7 100644 --- a/app.js +++ b/app.js @@ -1,5 +1,5 @@ import React, { Component } from 'react' -import { View } from 'react-native' +import { View, BackHandler } from 'react-native' import Header from './components/header' import Menu from './components/menu' import Home from './components/home' @@ -21,6 +21,20 @@ export default class App extends Component { this.state = { currentPage: 'Home' } + + const handleBackButtonPress = function() { + if (this.state.currentPage === 'Home') return false + // this is handled in the SymptomView + if (this.state.currentPage === 'SymptomView') return true + this.navigate('Home') + return true + }.bind(this) + + this.backHandler = BackHandler.addEventListener('hardwareBackPress', handleBackButtonPress) + } + + componentWillUnmount() { + this.backHandler.remove() } navigate(pageName, props) { diff --git a/components/calendar.js b/components/calendar.js index 3159b0c1..07448729 100644 --- a/components/calendar.js +++ b/components/calendar.js @@ -10,7 +10,6 @@ export default class CalendarView extends Component { this.state = { bleedingDaysInCalFormat: toCalFormat(bleedingDaysSortedByDate) } - console.log(Object.keys(this.state.bleedingDaysInCalFormat)) this.setStateWithCalFormattedDays = (function (CalendarComponent) { return function(_, changes) { @@ -35,7 +34,6 @@ export default class CalendarView extends Component { } render() { - console.log('cal render') return ( <View> <View style={styles.container}> diff --git a/components/cycle-day/symptoms/index.js b/components/cycle-day/symptoms/index.js index 5b73d857..4ce40106 100644 --- a/components/cycle-day/symptoms/index.js +++ b/components/cycle-day/symptoms/index.js @@ -1,5 +1,5 @@ import React, { Component } from 'react' -import { ScrollView } from 'react-native' +import { ScrollView, BackHandler } from 'react-native' import Header from '../../header' import actionButtonModule from '../action-buttons' import BleedingEditView from './bleeding' @@ -34,13 +34,24 @@ export default class SymptomView extends Component { super(props) this.state = { - visibleComponent: props.navigation.state.params.symptom, - cycleDay: props.navigation.state.params.cycleDay + visibleComponent: props.symptom, + cycleDay: props.cycleDay } this.makeActionButtons = actionButtonModule(() => { - this.props.navigation.navigate('CycleDay', {cycleDay: this.state.cycleDay}) + this.props.navigate('CycleDay', {cycleDay: this.state.cycleDay}) }) + + const handleBackButtonPress = function() { + this.props.navigate('CycleDay', {cycleDay: this.state.cycleDay}) + return true + }.bind(this) + + this.backHandler = BackHandler.addEventListener('hardwareBackPress', handleBackButtonPress) + } + + componentWillUnmount() { + this.backHandler.remove() } render() { -- GitLab