From 8a8b1310644f17cc5628e45bb048b35e380118af Mon Sep 17 00:00:00 2001
From: Julia Friesel <julia.friesel@gmail.com>
Date: Fri, 13 Jul 2018 09:10:00 +0200
Subject: [PATCH] Use new smpto module in day view

---
 components/cycle-day.js | 15 +++++++++++----
 lib/cycle.js            | 16 ++++++++++++++--
 lib/sympto-adapter.js   | 31 ++++++++++---------------------
 3 files changed, 35 insertions(+), 27 deletions(-)

diff --git a/components/cycle-day.js b/components/cycle-day.js
index aafb0996..194b1456 100644
--- a/components/cycle-day.js
+++ b/components/cycle-day.js
@@ -4,7 +4,7 @@ import {
   Text
 } from 'react-native'
 import cycleModule from '../lib/cycle'
-import { getTemperatureFertilityStatus } from '../lib/sympto-adapter'
+import getFertilityStatus from '../lib/sympto-adapter'
 import DayView from './cycle-day-overview'
 import BleedingEditView from './bleeding'
 import TemperatureEditView from './temperature'
@@ -29,7 +29,7 @@ export default class Day extends Component {
 
   render() {
     const cycleDayNumber = getCycleDayNumber(this.cycleDay.date)
-    const temperatureFertilityStatus = getTemperatureFertilityStatus(this.cycleDay.date)
+    const fertilityStatus = getFertilityStatus(this.cycleDay.date)
     return (
       <View style={ styles.cycleDayOuterView }>
         <View style={ styles.cycleDayDateView }>
@@ -38,8 +38,15 @@ export default class Day extends Component {
           </Text>
         </View >
         <View style={ styles.cycleDayNumberView }>
-          { cycleDayNumber && <Text style={styles.cycleDayNumber} >Cycle day {cycleDayNumber}</Text> }
-          { cycleDayNumber && <Text style={styles.cycleDayNumber} >Temperature status: {temperatureFertilityStatus}</Text> }
+          { cycleDayNumber &&
+            <Text style={styles.cycleDayNumber} >
+              Cycle day {cycleDayNumber}
+            </Text> }
+
+          { cycleDayNumber &&
+          <Text style={styles.cycleDayNumber} >
+            {fertilityStatus}
+          </Text> }
         </View >
         <View style={ styles.cycleDaySymptomsView }>
           {
diff --git a/lib/cycle.js b/lib/cycle.js
index ec334276..15fca158 100644
--- a/lib/cycle.js
+++ b/lib/cycle.js
@@ -4,16 +4,20 @@ const LocalDate = joda.LocalDate
 export default function config(opts) {
   let bleedingDaysSortedByDate
   let temperatureDaysSortedByDate
+  let cycleDaysSortedByDate
   let maxBreakInBleeding
 
   if (!opts) {
-    // we only want to require (and run) the db module when not running the tests
+    // we only want to require (and run) the db module
+    // when not running the tests
     bleedingDaysSortedByDate = require('../db').bleedingDaysSortedByDate
     temperatureDaysSortedByDate = require('../db').temperatureDaysSortedByDate
+    cycleDaysSortedByDate = require('../db').cycleDaysSortedByDate
     maxBreakInBleeding = 1
   } else {
     bleedingDaysSortedByDate = opts.bleedingDaysSortedByDate || []
     temperatureDaysSortedByDate = opts.temperatureDaysSortedByDate || []
+    cycleDaysSortedByDate = opts.cycleDaysSortedByDate || []
     maxBreakInBleeding = opts.maxBreakInBleeding || 1
   }
 
@@ -67,9 +71,17 @@ export default function config(opts) {
       .map(day => day.temperature.value)
   }
 
+  function getCycleDaysBeforeDay(targetDateString) {
+    const firstCycleDay = getLastMensesStart(targetDateString)
+    return cycleDaysSortedByDate.filter(({date}) => {
+      return date >= firstCycleDay.date && date <= targetDateString
+    })
+  }
+
   return {
     getCycleDayNumber,
     getLastMensesStart,
-    getPreviousTemperaturesInCycle
+    getPreviousTemperaturesInCycle,
+    getCycleDaysBeforeDay
   }
 }
diff --git a/lib/sympto-adapter.js b/lib/sympto-adapter.js
index d2f1ffb0..e9e384d7 100644
--- a/lib/sympto-adapter.js
+++ b/lib/sympto-adapter.js
@@ -1,29 +1,18 @@
-import getTemperatureStatus from './sympto/temperature'
+import getFertilityStatus from './sympto'
 import cycleModule from './cycle'
 
-const getLastMensesStart = cycleModule().getLastMensesStart
-const getPreviousTemperaturesInCycle = cycleModule().getPreviousTemperaturesInCycle
+const { getCycleDaysBeforeDay } = cycleModule()
+
+export default function (dateString) {
+  // we get earliest last, but sympto wants earliest first
+  const cycle = getCycleDaysBeforeDay(dateString).reverse()
+  // const previousCycles = getPreviousCycles()
+  const status = getFertilityStatus({cycle})
 
-function getTemperatureFertilityStatus(targetDateString) {
-  const lastMensesStart = getLastMensesStart(targetDateString)
-  if (!lastMensesStart) return formatStatusForApp({ detected: false })
-  const previousTemperaturesInCycle = getPreviousTemperaturesInCycle(targetDateString, lastMensesStart)
-  // we get temps with latest first, but sympto module expects latest last
-  previousTemperaturesInCycle.reverse()
-  const status = getTemperatureStatus(previousTemperaturesInCycle)
   return formatStatusForApp(status)
 }
 
 function formatStatusForApp(status) {
-  if (!status.detected) return 'fertile'
-  const dict = [
-    "regular temperature",
-    "first exception",
-    "second exception"
-  ]
-  return `infertile according to the ${dict[status.rule]} rule`
-}
-
-export {
-  getTemperatureFertilityStatus
+  const fertileStatus = status.assumeFertility ? 'fertile' : 'infertile'
+  return `You are currently ${fertileStatus}`
 }
\ No newline at end of file
-- 
GitLab