Handle back button presses

This commit is contained in:
Julia Friesel
2018-08-19 16:11:01 +02:00
parent 86f26e3814
commit a67bfda43f
3 changed files with 30 additions and 7 deletions
+15 -1
View File
@@ -1,5 +1,5 @@
import React, { Component } from 'react' import React, { Component } from 'react'
import { View } from 'react-native' import { View, BackHandler } from 'react-native'
import Header from './components/header' import Header from './components/header'
import Menu from './components/menu' import Menu from './components/menu'
import Home from './components/home' import Home from './components/home'
@@ -21,6 +21,20 @@ export default class App extends Component {
this.state = { this.state = {
currentPage: 'Home' 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) { navigate(pageName, props) {
-2
View File
@@ -10,7 +10,6 @@ export default class CalendarView extends Component {
this.state = { this.state = {
bleedingDaysInCalFormat: toCalFormat(bleedingDaysSortedByDate) bleedingDaysInCalFormat: toCalFormat(bleedingDaysSortedByDate)
} }
console.log(Object.keys(this.state.bleedingDaysInCalFormat))
this.setStateWithCalFormattedDays = (function (CalendarComponent) { this.setStateWithCalFormattedDays = (function (CalendarComponent) {
return function(_, changes) { return function(_, changes) {
@@ -35,7 +34,6 @@ export default class CalendarView extends Component {
} }
render() { render() {
console.log('cal render')
return ( return (
<View> <View>
<View style={styles.container}> <View style={styles.container}>
+15 -4
View File
@@ -1,5 +1,5 @@
import React, { Component } from 'react' import React, { Component } from 'react'
import { ScrollView } from 'react-native' import { ScrollView, BackHandler } from 'react-native'
import Header from '../../header' import Header from '../../header'
import actionButtonModule from '../action-buttons' import actionButtonModule from '../action-buttons'
import BleedingEditView from './bleeding' import BleedingEditView from './bleeding'
@@ -34,13 +34,24 @@ export default class SymptomView extends Component {
super(props) super(props)
this.state = { this.state = {
visibleComponent: props.navigation.state.params.symptom, visibleComponent: props.symptom,
cycleDay: props.navigation.state.params.cycleDay cycleDay: props.cycleDay
} }
this.makeActionButtons = actionButtonModule(() => { 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() { render() {