From aab64a433fc0f32bcfca1324adba5276a6ca88fa Mon Sep 17 00:00:00 2001
From: Sofiya Tepikin <sofiya.tepikin@gmail.com>
Date: Sun, 1 Mar 2020 14:29:29 +0100
Subject: [PATCH] Gets rid of a top level prop passed down through a tree of
 components

---
 components/app.js                             |  1 -
 components/cycle-day/symptoms/bleeding.js     |  2 --
 components/cycle-day/symptoms/cervix.js       |  2 --
 components/cycle-day/symptoms/desire.js       |  2 --
 components/cycle-day/symptoms/mood.js         |  2 --
 components/cycle-day/symptoms/mucus.js        |  2 --
 components/cycle-day/symptoms/note.js         |  1 -
 components/cycle-day/symptoms/pain.js         |  2 --
 components/cycle-day/symptoms/sex.js          |  2 --
 components/cycle-day/symptoms/symptom-view.js | 19 +++++++++++++------
 components/cycle-day/symptoms/temperature.js  |  2 --
 components/home.js                            |  3 +--
 12 files changed, 14 insertions(+), 26 deletions(-)

diff --git a/components/app.js b/components/app.js
index 4953678d..6ae3e860 100644
--- a/components/app.js
+++ b/components/app.js
@@ -63,7 +63,6 @@ class App extends Component {
     const pageProps = {
       cycleDay: date && getCycleDay(date),
       date,
-      handleBackButtonPress: goBack,
     }
 
     return (
diff --git a/components/cycle-day/symptoms/bleeding.js b/components/cycle-day/symptoms/bleeding.js
index a8ae7093..f0579c17 100644
--- a/components/cycle-day/symptoms/bleeding.js
+++ b/components/cycle-day/symptoms/bleeding.js
@@ -14,7 +14,6 @@ class Bleeding extends Component {
 
   static propTypes = {
     cycleDay: PropTypes.object,
-    handleBackButtonPress: PropTypes.func,
     date: PropTypes.string.isRequired,
   }
 
@@ -54,7 +53,6 @@ class Bleeding extends Component {
       <SymptomView
         symptom={this.symptom}
         values={this.state}
-        handleBackButtonPress={this.props.handleBackButtonPress}
         date={this.props.date}
       >
         <SymptomSection
diff --git a/components/cycle-day/symptoms/cervix.js b/components/cycle-day/symptoms/cervix.js
index 18513c6e..9966d71f 100644
--- a/components/cycle-day/symptoms/cervix.js
+++ b/components/cycle-day/symptoms/cervix.js
@@ -14,7 +14,6 @@ class Cervix extends Component {
 
   static propTypes = {
     cycleDay: PropTypes.object,
-    handleBackButtonPress: PropTypes.func,
     date: PropTypes.string.isRequired,
   }
 
@@ -62,7 +61,6 @@ class Cervix extends Component {
       <SymptomView
         symptom={this.symptom}
         values={this.state}
-        handleBackButtonPress={this.props.handleBackButtonPress}
         date={this.props.date}
       >
         <SymptomSection
diff --git a/components/cycle-day/symptoms/desire.js b/components/cycle-day/symptoms/desire.js
index b6567dc2..18983669 100644
--- a/components/cycle-day/symptoms/desire.js
+++ b/components/cycle-day/symptoms/desire.js
@@ -13,7 +13,6 @@ class Desire extends Component {
 
   static propTypes = {
     cycleDay: PropTypes.object,
-    handleBackButtonPress: PropTypes.func,
     date: PropTypes.string.isRequired,
   }
 
@@ -50,7 +49,6 @@ class Desire extends Component {
       <SymptomView
         symptom={this.symptom}
         values={this.state}
-        handleBackButtonPress={this.props.handleBackButtonPress}
         date={this.props.date}
       >
         <SymptomSection
diff --git a/components/cycle-day/symptoms/mood.js b/components/cycle-day/symptoms/mood.js
index 6bd34da2..228d2ce0 100644
--- a/components/cycle-day/symptoms/mood.js
+++ b/components/cycle-day/symptoms/mood.js
@@ -13,7 +13,6 @@ class Mood extends Component {
 
   static propTypes = {
     cycleDay: PropTypes.object,
-    handleBackButtonPress: PropTypes.func,
     date: PropTypes.string.isRequired,
   }
 
@@ -64,7 +63,6 @@ class Mood extends Component {
       <SymptomView
         symptom={this.symptom}
         values={this.state}
-        handleBackButtonPress={this.props.handleBackButtonPress}
         date={this.props.date}
       >
         <SymptomSection
diff --git a/components/cycle-day/symptoms/mucus.js b/components/cycle-day/symptoms/mucus.js
index 03074521..2a57362b 100644
--- a/components/cycle-day/symptoms/mucus.js
+++ b/components/cycle-day/symptoms/mucus.js
@@ -15,7 +15,6 @@ class Mucus extends Component {
 
   static propTypes = {
     cycleDay: PropTypes.object,
-    handleBackButtonPress: PropTypes.func,
     date: PropTypes.string.isRequired,
   }
 
@@ -63,7 +62,6 @@ class Mucus extends Component {
       <SymptomView
         symptom={this.symptom}
         values={this.state}
-        handleBackButtonPress={this.props.handleBackButtonPress}
         date={this.props.date}
       >
         <SymptomSection
diff --git a/components/cycle-day/symptoms/note.js b/components/cycle-day/symptoms/note.js
index 158ae0b9..17cfef17 100644
--- a/components/cycle-day/symptoms/note.js
+++ b/components/cycle-day/symptoms/note.js
@@ -39,7 +39,6 @@ class Note extends Component {
       <SymptomView
         symptom={this.symptom}
         values={this.state}
-        handleBackButtonPress={this.props.handleBackButtonPress}
         date={this.props.date}
       >
         <SymptomSection
diff --git a/components/cycle-day/symptoms/pain.js b/components/cycle-day/symptoms/pain.js
index 9dd1e2ce..218eb38f 100644
--- a/components/cycle-day/symptoms/pain.js
+++ b/components/cycle-day/symptoms/pain.js
@@ -14,7 +14,6 @@ class Pain extends Component {
 
   static propTypes = {
     cycleDay: PropTypes.object,
-    handleBackButtonPress: PropTypes.func,
     date: PropTypes.string.isRequired,
   }
 
@@ -65,7 +64,6 @@ class Pain extends Component {
       <SymptomView
         symptom={this.symptom}
         values={this.state}
-        handleBackButtonPress={this.props.handleBackButtonPress}
         date={this.props.date}
       >
         <SymptomSection
diff --git a/components/cycle-day/symptoms/sex.js b/components/cycle-day/symptoms/sex.js
index d4dd170d..5cb636ea 100644
--- a/components/cycle-day/symptoms/sex.js
+++ b/components/cycle-day/symptoms/sex.js
@@ -14,7 +14,6 @@ class Sex extends Component {
 
   static propTypes = {
     cycleDay: PropTypes.object,
-    handleBackButtonPress: PropTypes.func,
     date: PropTypes.string.isRequired,
   }
 
@@ -65,7 +64,6 @@ class Sex extends Component {
       <SymptomView
         symptom={this.symptom}
         values={this.state}
-        handleBackButtonPress={this.props.handleBackButtonPress}
         date={this.props.date}
       >
         <SymptomSection
diff --git a/components/cycle-day/symptoms/symptom-view.js b/components/cycle-day/symptoms/symptom-view.js
index a84d93dd..82bb86bf 100644
--- a/components/cycle-day/symptoms/symptom-view.js
+++ b/components/cycle-day/symptoms/symptom-view.js
@@ -4,6 +4,7 @@ import PropTypes from 'prop-types'
 
 import { connect } from 'react-redux'
 import { getDate } from '../../../slices/date'
+import { goBack } from '../../../slices/navigation'
 
 import { saveSymptom } from '../../../db'
 import formatDate from '../../helpers/format-date'
@@ -27,8 +28,8 @@ class SymptomView extends Component {
     symptom: PropTypes.string.isRequired,
     values: PropTypes.object,
     date: PropTypes.string,
-    handleBackButtonPress: PropTypes.func,
     children: PropTypes.node,
+    goBack: PropTypes.func,
   }
 
   constructor(props) {
@@ -52,7 +53,7 @@ class SymptomView extends Component {
 
   onDeleteConfirmation = () => {
     this.deleteSymptomEntry()
-    this.props.handleBackButtonPress()
+    this.props.goBack()
   }
 
   showConfirmationAlert = () => {
@@ -75,13 +76,13 @@ class SymptomView extends Component {
   }
 
   render() {
-    const { symptom, date } = this.props
+    const { symptom, date, goBack } = this.props
     return (
       <View style={{flex: 1}}>
         <Header
           title={headerTitles[symptom]}
           subtitle={formatDate(date)}
-          handleBack={this.props.handleBackButtonPress}
+          handleBack={goBack}
           handleDelete={
             this.state.shouldShowDelete && this.showConfirmationAlert
           }
@@ -99,11 +100,17 @@ class SymptomView extends Component {
 
 const mapStateToProps = (state) => {
   return({
-    date: getDate(state)
+    date: getDate(state),
+  })
+}
+
+const mapDispatchToProps = (dispatch) => {
+  return({
+    goBack: () => dispatch(goBack()),
   })
 }
 
 export default connect(
   mapStateToProps,
-  null
+  mapDispatchToProps,
 )(SymptomView)
diff --git a/components/cycle-day/symptoms/temperature.js b/components/cycle-day/symptoms/temperature.js
index f7350011..5c033c92 100644
--- a/components/cycle-day/symptoms/temperature.js
+++ b/components/cycle-day/symptoms/temperature.js
@@ -20,7 +20,6 @@ class Temperature extends Component {
 
   static propTypes = {
     cycleDay: PropTypes.object,
-    handleBackButtonPress: PropTypes.func,
     date: PropTypes.string.isRequired,
   }
 
@@ -90,7 +89,6 @@ class Temperature extends Component {
       <SymptomView
         symptom={'temperature'}
         values={this.state}
-        handleBackButtonPress={this.props.handleBackButtonPress}
         date={this.props.date}
       >
         <SymptomSection
diff --git a/components/home.js b/components/home.js
index 0b300cba..2b900d58 100644
--- a/components/home.js
+++ b/components/home.js
@@ -30,11 +30,10 @@ class Home extends Component {
   static propTypes = {
     navigate: PropTypes.func,
     setDate: PropTypes.func,
-    // The following three is not being used,
+    // The following are not being used,
     // we could see if it's possible to not pass them from the <App />
     cycleDay: PropTypes.object,
     date: PropTypes.string,
-    handleBackButtonPress: PropTypes.func,
   }
 
   constructor(props) {
-- 
GitLab