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