Compare commits

..

1 Commits

Author SHA1 Message Date
wunderfisch 4212906917 addding condriputers 2024-02-29 17:54:25 +01:00
14 changed files with 65 additions and 278 deletions
+2 -2
View File
@@ -134,8 +134,8 @@ android {
applicationId "com.drip" applicationId "com.drip"
minSdkVersion rootProject.ext.minSdkVersion minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 29 versionCode 27
versionName "1.2402.23" versionName "1.2402.15"
ndk { ndk {
abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64" abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
} }
+3 -7
View File
@@ -14,10 +14,7 @@ import {
determinePredictionText, determinePredictionText,
formatWithOrdinalSuffix, formatWithOrdinalSuffix,
} from './helpers/home' } from './helpers/home'
import { import { periodPredictionObservable } from '../local-storage'
fertilityTrackingObservable,
periodPredictionObservable,
} from '../local-storage'
import { Colors, Fonts, Sizes, Spacing } from '../styles' import { Colors, Fonts, Sizes, Spacing } from '../styles'
import { LocalDate } from '@js-joda/core' import { LocalDate } from '@js-joda/core'
@@ -31,12 +28,11 @@ const Home = ({ navigate, setDate }) => {
navigate('CycleDay') navigate('CycleDay')
} }
const isFertilityTrackingEnabled = fertilityTrackingObservable.value
const todayDateString = LocalDate.now().toString() const todayDateString = LocalDate.now().toString()
const { getCycleDayNumber, getPredictedMenses } = cycleModule() const { getCycleDayNumber, getPredictedMenses } = cycleModule()
const cycleDayNumber = getCycleDayNumber(todayDateString) const cycleDayNumber = getCycleDayNumber(todayDateString)
const { status, phase, statusText } = const { status, phase, statusText } =
isFertilityTrackingEnabled && getFertilityStatusForDay(todayDateString) getFertilityStatusForDay(todayDateString)
const isPeriodPredictionEnabled = periodPredictionObservable.value const isPeriodPredictionEnabled = periodPredictionObservable.value
const prediction = determinePredictionText(getPredictedMenses(), t) const prediction = determinePredictionText(getPredictedMenses(), t)
@@ -59,7 +55,7 @@ const Home = ({ navigate, setDate }) => {
</AppText> </AppText>
</View> </View>
)} )}
{isFertilityTrackingEnabled && phase && ( {phase && (
<View style={styles.line}> <View style={styles.line}>
<AppText style={styles.whiteSubtitle}> <AppText style={styles.whiteSubtitle}>
{formatWithOrdinalSuffix(phase)} {formatWithOrdinalSuffix(phase)}
-6
View File
@@ -22,8 +22,6 @@ import {
painTrackingCategoryObservable, painTrackingCategoryObservable,
sexTrackingCategoryObservable, sexTrackingCategoryObservable,
temperatureTrackingCategoryObservable, temperatureTrackingCategoryObservable,
mucusTrackingCategoryObservable,
cervixTrackingCategoryObservable,
} from '../../local-storage' } from '../../local-storage'
import { makeColumnInfo } from '../helpers/chart' import { makeColumnInfo } from '../helpers/chart'
@@ -74,10 +72,6 @@ const CycleChart = ({ navigate, setDate }) => {
const symptomRowEnabledSymptoms = symptomRowSymptoms.filter((symptom) => { const symptomRowEnabledSymptoms = symptomRowSymptoms.filter((symptom) => {
if (symptom === 'sex') { if (symptom === 'sex') {
return sexTrackingCategoryObservable.value ? symptom : null return sexTrackingCategoryObservable.value ? symptom : null
} else if (symptom === 'mucus') {
return mucusTrackingCategoryObservable.value ? symptom : null
} else if (symptom === 'cervix') {
return cervixTrackingCategoryObservable.value ? symptom : null
} else if (symptom === 'desire') { } else if (symptom === 'desire') {
return desireTrackingCategoryObservable.value ? symptom : null return desireTrackingCategoryObservable.value ? symptom : null
} else if (symptom === 'pain') { } else if (symptom === 'pain') {
+2 -7
View File
@@ -1,10 +1,10 @@
import React from 'react' import React from 'react'
import { Platform, StyleSheet, Switch, View } from 'react-native' import { StyleSheet, Switch, View } from 'react-native'
import PropTypes from 'prop-types' import PropTypes from 'prop-types'
import AppText from './app-text' import AppText from './app-text'
import { Colors, Containers, Spacing } from '../../styles' import { Colors, Containers } from '../../styles'
const AppSwitch = ({ onToggle, text, value, disabled }) => { const AppSwitch = ({ onToggle, text, value, disabled }) => {
const trackColor = { true: Colors.turquoiseDark } const trackColor = { true: Colors.turquoiseDark }
@@ -34,14 +34,9 @@ AppSwitch.propTypes = {
const styles = StyleSheet.create({ const styles = StyleSheet.create({
container: { container: {
...Containers.rowContainer, ...Containers.rowContainer,
marginTop: Spacing.tiny,
}, },
switch: { switch: {
flex: 1, flex: 1,
transform:
Platform.OS === 'ios'
? [{ scaleX: 0.8 }, { scaleY: 0.8 }]
: [{ scaleX: 1 }, { scaleY: 1 }],
}, },
textContainer: { textContainer: {
flex: 4, flex: 4,
@@ -16,8 +16,6 @@ import {
painTrackingCategoryObservable, painTrackingCategoryObservable,
sexTrackingCategoryObservable, sexTrackingCategoryObservable,
temperatureTrackingCategoryObservable, temperatureTrackingCategoryObservable,
mucusTrackingCategoryObservable,
cervixTrackingCategoryObservable,
} from '../../local-storage' } from '../../local-storage'
import { Spacing } from '../../styles' import { Spacing } from '../../styles'
import { SYMPTOMS } from '../../config' import { SYMPTOMS } from '../../config'
@@ -42,10 +40,6 @@ const CycleDayOverView = ({ date, setDate, isTemperatureEditView }) => {
return temperatureTrackingCategoryObservable.value ? symptom : null return temperatureTrackingCategoryObservable.value ? symptom : null
} else if (symptom === 'sex') { } else if (symptom === 'sex') {
return sexTrackingCategoryObservable.value ? symptom : null return sexTrackingCategoryObservable.value ? symptom : null
} else if (symptom === 'mucus') {
return mucusTrackingCategoryObservable.value ? symptom : null
} else if (symptom === 'cervix') {
return cervixTrackingCategoryObservable.value ? symptom : null
} else if (symptom === 'desire') { } else if (symptom === 'desire') {
return desireTrackingCategoryObservable.value ? symptom : null return desireTrackingCategoryObservable.value ? symptom : null
} else if (symptom === 'pain') { } else if (symptom === 'pain') {
+3 -27
View File
@@ -5,29 +5,14 @@ import { StyleSheet, TouchableOpacity, View } from 'react-native'
import AppText from '../common/app-text' import AppText from '../common/app-text'
import { Colors, Containers } from '../../styles' import { Colors, Containers } from '../../styles'
import labels from '../../i18n/en/settings'
export default function SelectTabGroup({ activeButton, buttons, onSelect }) { export default function SelectTabGroup({ activeButton, buttons, onSelect }) {
const oneTimeTransformIntoNumber =
typeof activeButton === 'boolean' && Number(activeButton)
const isSecondarySymptomSwitch =
buttons[0]['label'] === labels.secondarySymptom.mucus
return ( return (
<View style={styles.container}> <View style={styles.container}>
{buttons.map(({ label, value }, i) => { {buttons.map(({ label, value }, i) => {
const isActive = const isActive = value === activeButton
value === activeButton || value === oneTimeTransformIntoNumber const boxStyle = [styles.box, isActive && styles.boxActive]
const boxStyle = [ const textStyle = [styles.text, isActive && styles.textActive]
styles.box,
isActive && styles.boxActive,
isSecondarySymptomSwitch && styles.purpleBox,
isSecondarySymptomSwitch && isActive && styles.activePurpleBox,
]
const textStyle = [
styles.text,
isSecondarySymptomSwitch && styles.purpleText,
isActive && styles.textActive,
]
return ( return (
<TouchableOpacity <TouchableOpacity
@@ -65,13 +50,4 @@ const styles = StyleSheet.create({
textActive: { textActive: {
color: 'white', color: 'white',
}, },
purpleBox: {
borderColor: Colors.purple,
},
activePurpleBox: {
backgroundColor: Colors.purple,
},
purpleText: {
color: Colors.purple,
},
}) })
+2 -7
View File
@@ -1,10 +1,6 @@
import { LocalDate } from '@js-joda/core' import { LocalDate } from '@js-joda/core'
import { import { scaleObservable, unitObservable } from '../../local-storage'
fertilityTrackingObservable,
scaleObservable,
unitObservable,
} from '../../local-storage'
import { getCycleStatusForDay } from '../../lib/sympto-adapter' import { getCycleStatusForDay } from '../../lib/sympto-adapter'
import { getCycleDay, getAmountOfCycleDays } from '../../db' import { getCycleDay, getAmountOfCycleDays } from '../../db'
@@ -274,8 +270,7 @@ export function nfpLines() {
if (dateString < cycle.startDate) updateCurrentCycle(dateString) if (dateString < cycle.startDate) updateCurrentCycle(dateString)
if (cycle.noMoreCycles) return ret if (cycle.noMoreCycles) return ret
const tempShift = const tempShift = cycle.status.temperatureShift
fertilityTrackingObservable.value && cycle.status.temperatureShift
if (tempShift) { if (tempShift) {
if (tempShift.firstHighMeasurementDay.date === dateString) { if (tempShift.firstHighMeasurementDay.date === dateString) {
+36 -142
View File
@@ -1,4 +1,4 @@
import React, { useEffect, useState } from 'react' import React, { useState } from 'react'
import { Alert, Pressable } from 'react-native' import { Alert, Pressable } from 'react-native'
import AppPage from '../../common/app-page' import AppPage from '../../common/app-page'
@@ -6,38 +6,32 @@ import AppSwitch from '../../common/app-switch'
import AppText from '../../common/app-text' import AppText from '../../common/app-text'
import TemperatureSlider from './temperature-slider' import TemperatureSlider from './temperature-slider'
import Segment from '../../common/segment' import Segment from '../../common/segment'
import SelectTabGroup from '../../cycle-day/select-tab-group'
import { import {
desireTrackingCategoryObservable, desireTrackingCategoryObservable,
fertilityTrackingObservable,
moodTrackingCategoryObservable, moodTrackingCategoryObservable,
noteTrackingCategoryObservable, noteTrackingCategoryObservable,
painTrackingCategoryObservable, painTrackingCategoryObservable,
sexTrackingCategoryObservable, sexTrackingCategoryObservable,
temperatureTrackingCategoryObservable, temperatureTrackingCategoryObservable,
mucusTrackingCategoryObservable,
cervixTrackingCategoryObservable,
saveDesireTrackingCategory, saveDesireTrackingCategory,
saveFertilityTrackingEnabled,
saveMoodTrackingCategory, saveMoodTrackingCategory,
saveNoteTrackingCategory, saveNoteTrackingCategory,
savePainTrackingCategory, savePainTrackingCategory,
saveMucusTrackingCategory,
saveCervixTrackingCategory,
savePeriodPrediction, savePeriodPrediction,
saveSexTrackingCategory, saveSexTrackingCategory,
saveTemperatureTrackingCategory, saveTemperatureTrackingCategory,
saveUseCervixAsSecondarySymptom, saveUseCervix,
periodPredictionObservable, periodPredictionObservable,
useCervixAsSecondarySymptomObservable, useCervixObservable,
} from '../../../local-storage' } from '../../../local-storage'
import labels from '../../../i18n/en/settings' import labels from '../../../i18n/en/settings'
import { SYMPTOMS } from '../../../config' import { SYMPTOMS } from '../../../config'
const Settings = () => { const Settings = () => {
const [useCervixAsSecondarySymptom, setUseCervixAsSecondarySymptom] = const [shouldUseCervix, setShouldUseCervix] = useState(
useState(useCervixAsSecondarySymptomObservable.value) useCervixObservable.value
)
const [isPeriodPredictionEnabled, setPeriodPrediction] = useState( const [isPeriodPredictionEnabled, setPeriodPrediction] = useState(
periodPredictionObservable.value periodPredictionObservable.value
@@ -46,14 +40,6 @@ const Settings = () => {
const [isTemperatureTrackingCategoryEnabled, setTemperatureTrackingCategory] = const [isTemperatureTrackingCategoryEnabled, setTemperatureTrackingCategory] =
useState(temperatureTrackingCategoryObservable.value) useState(temperatureTrackingCategoryObservable.value)
const [isMucusTrackingCategoryEnabled, setMucusTrackingCategory] = useState(
mucusTrackingCategoryObservable.value
)
const [isCervixTrackingCategoryEnabled, setCervixTrackingCategory] = useState(
cervixTrackingCategoryObservable.value
)
const [isSexTrackingCategoryEnabled, setSexTrackingCategory] = useState( const [isSexTrackingCategoryEnabled, setSexTrackingCategory] = useState(
sexTrackingCategoryObservable.value sexTrackingCategoryObservable.value
) )
@@ -74,32 +60,19 @@ const Settings = () => {
noteTrackingCategoryObservable.value noteTrackingCategoryObservable.value
) )
const [isFertilityTrackingEnabled, setFertilityTrackingEnabled] = useState( const [isEnabled, setIsEnabled] = useState(false)
fertilityTrackingObservable.value const toggleSwitch = () => setIsEnabled((previousState) => !previousState)
)
const fertilityTrackingToggle = (value) => {
setFertilityTrackingEnabled(value)
saveFertilityTrackingEnabled(value)
}
const temperatureTrackingCategoryToggle = (value) => { const temperatureTrackingCategoryToggle = (value) => {
setTemperatureTrackingCategory(value) setTemperatureTrackingCategory(value)
saveTemperatureTrackingCategory(value) saveTemperatureTrackingCategory(value)
if (!value) {
setFertilityTrackingEnabled(false)
saveFertilityTrackingEnabled(false)
}
}
const mucusTrackingCategoryToggle = (value) => {
manageSecondarySymptom(cervixTrackingCategoryObservable.value, value)
}
const cervixTrackingCategoryToggle = (value) => {
manageSecondarySymptom(value, mucusTrackingCategoryObservable.value)
} }
const sexTrackingCategoryToggle = (value) => { const sexTrackingCategoryToggle = (value) => {
setSexTrackingCategory(value) setSexTrackingCategory(value)
saveSexTrackingCategory(value) saveSexTrackingCategory(value)
} }
const desireTrackingCategoryToggle = (value) => { const desireTrackingCategoryToggle = (value) => {
setDesireTrackingCategory(value) setDesireTrackingCategory(value)
saveDesireTrackingCategory(value) saveDesireTrackingCategory(value)
@@ -116,83 +89,30 @@ const Settings = () => {
setNoteTrackingCategory(value) setNoteTrackingCategory(value)
saveNoteTrackingCategory(value) saveNoteTrackingCategory(value)
} }
const onPeriodPredictionToggle = (value) => { const onPeriodPredictionToggle = (value) => {
setPeriodPrediction(value) setPeriodPrediction(value)
savePeriodPrediction(value) savePeriodPrediction(value)
} }
const fertilityTrackingText = isFertilityTrackingEnabled
? labels.fertilityTracking.on
: labels.fertilityTracking.off
const periodPredictionText = isPeriodPredictionEnabled const periodPredictionText = isPeriodPredictionEnabled
? labels.periodPrediction.on ? labels.periodPrediction.on
: labels.periodPrediction.off : labels.periodPrediction.off
const secondarySymptomButtons = [ const onCervixToggle = (value) => {
{ setShouldUseCervix(value)
label: labels.secondarySymptom.mucus, saveUseCervix(value)
value: 0,
},
{
label: labels.secondarySymptom.cervix,
value: 1,
},
]
const onSelectTab = (value) => {
if (isMucusTrackingCategoryEnabled && isCervixTrackingCategoryEnabled) {
setUseCervixAsSecondarySymptom(value)
saveUseCervixAsSecondarySymptom(value)
} else {
secondarySymptomDisabledPrompt()
}
} }
// is needed so secondary symptom is set correct on load const cervixText = shouldUseCervix
useEffect(() => { ? labels.useCervix.cervixModeOn
manageSecondarySymptom( : labels.useCervix.cervixModeOff
cervixTrackingCategoryObservable.value,
mucusTrackingCategoryObservable.value
)
}, [])
const manageSecondarySymptom = (cervix, mucus) => {
if (!cervix && mucus) {
setUseCervixAsSecondarySymptom(0)
saveUseCervixAsSecondarySymptom(0)
} else if (cervix && !mucus) {
setUseCervixAsSecondarySymptom(1)
saveUseCervixAsSecondarySymptom(1)
} else if (!cervix && !mucus) {
setFertilityTrackingEnabled(false)
saveFertilityTrackingEnabled(false)
}
setMucusTrackingCategory(mucus)
saveMucusTrackingCategory(mucus)
setCervixTrackingCategory(cervix)
saveCervixTrackingCategory(cervix)
}
const secondarySymptomDisabledPrompt = () => {
if (!isMucusTrackingCategoryEnabled == isCervixTrackingCategoryEnabled) {
Alert.alert(
labels.secondarySymptom.disabled.title,
labels.secondarySymptom.disabled.noSecondaryEnabled
)
}
}
const cervixText = useCervixAsSecondarySymptom
? labels.secondarySymptom.cervixModeOn
: labels.secondarySymptom.cervixModeOff
const sliderDisabledPrompt = () => { const sliderDisabledPrompt = () => {
if (!isTemperatureTrackingCategoryEnabled) { if (!isTemperatureTrackingCategoryEnabled) {
Alert.alert(labels.disabled.title, labels.disabled.message) Alert.alert(labels.disabled.title, labels.disabled.message)
} }
} }
return ( return (
<AppPage title={'Customization'}> <AppPage title={'Customization'}>
<Segment title={'Tracking categories'}> <Segment title={'Tracking categories'}>
@@ -201,20 +121,6 @@ const Settings = () => {
text={SYMPTOMS[1]} text={SYMPTOMS[1]}
value={isTemperatureTrackingCategoryEnabled} value={isTemperatureTrackingCategoryEnabled}
/> />
<AppSwitch
onToggle={(enabled) => {
mucusTrackingCategoryToggle(enabled)
}}
text={SYMPTOMS[2]}
value={isMucusTrackingCategoryEnabled}
/>
<AppSwitch
onToggle={(enabled) => {
cervixTrackingCategoryToggle(enabled)
}}
text={SYMPTOMS[3]}
value={isCervixTrackingCategoryEnabled}
/>
<AppSwitch <AppSwitch
onToggle={sexTrackingCategoryToggle} onToggle={sexTrackingCategoryToggle}
text={SYMPTOMS[4]} text={SYMPTOMS[4]}
@@ -241,24 +147,14 @@ const Settings = () => {
value={isNoteTrackingCategoryEnabled} value={isNoteTrackingCategoryEnabled}
/> />
</Segment> </Segment>
<Pressable onPress={sliderDisabledPrompt}>
<Segment title={labels.fertilityTracking.title}> <Segment title={'Fertility feature'}>
{isTemperatureTrackingCategoryEnabled && <AppSwitch
(isMucusTrackingCategoryEnabled || onToggle={toggleSwitch}
isCervixTrackingCategoryEnabled) ? ( text={'If turned on ...'}
<> value={isEnabled}
<AppText>{labels.fertilityTracking.message}</AppText> />
<AppSwitch </Segment>
onToggle={fertilityTrackingToggle}
text={fertilityTrackingText}
value={isFertilityTrackingEnabled}
/>
</>
) : (
<AppText>{labels.disabled.message}</AppText>
)}
</Segment>
</Pressable>
<Pressable onPress={sliderDisabledPrompt}> <Pressable onPress={sliderDisabledPrompt}>
<Segment title={labels.tempScale.segmentTitle}> <Segment title={labels.tempScale.segmentTitle}>
@@ -274,19 +170,17 @@ const Settings = () => {
</Segment> </Segment>
</Pressable> </Pressable>
<Pressable onPress={secondarySymptomDisabledPrompt}> <Pressable onPress={sliderDisabledPrompt}>
<Segment title={labels.secondarySymptom.title}> <Segment title={labels.useCervix.title}>
{!isFertilityTrackingEnabled ? ( {isTemperatureTrackingCategoryEnabled && (
<AppText>{labels.secondarySymptom.disabled.message}</AppText> <AppSwitch
) : ( onToggle={onCervixToggle}
<> text={cervixText}
<AppText>{cervixText}</AppText> value={shouldUseCervix}
<SelectTabGroup />
activeButton={useCervixAsSecondarySymptom} )}
buttons={secondarySymptomButtons} {!isTemperatureTrackingCategoryEnabled && (
onSelect={(value) => onSelectTab(value)} <AppText>{labels.disabled.message}</AppText>
/>
</>
)} )}
</Segment> </Segment>
</Pressable> </Pressable>
+1 -1
View File
@@ -4,7 +4,7 @@ import { scale, verticalScale } from 'react-native-size-matters'
export const SYMPTOMS = [ export const SYMPTOMS = [
'bleeding', 'bleeding',
'temperature', 'temperature',
'cervical mucus', 'mucus',
'cervix', 'cervix',
'sex', 'sex',
'desire', 'desire',
+3 -19
View File
@@ -41,7 +41,7 @@ export default {
disabled: { disabled: {
title: 'This feature is turned off', title: 'This feature is turned off',
message: message:
'To use the temperature scale please first enable the temperature tracking category above.', 'Please first enable the temperature tracking category in the customization settings.',
}, },
tempReminder: { tempReminder: {
title: 'Temperature reminder', title: 'Temperature reminder',
@@ -66,32 +66,16 @@ export default {
'To use the period reminder please first enable period predictions in the customization settings.', 'To use the period reminder please first enable period predictions in the customization settings.',
}, },
}, },
fertilityTracking: { useCervix: {
title: 'Fertility phases calculation',
message:
'If you enter menstrual bleeding, temperature and cervical mucus or cervix data according to the sympto-thermal rules, drip will calculate cycle phases with the provided data.',
on: 'If you switch this off, drip will not show fertility related information.',
off: 'If you switch this on, drip will show fertility related information.',
},
secondarySymptom: {
title: 'Secondary symptom', title: 'Secondary symptom',
cervixModeOn: cervixModeOn:
'Cervix values are being used for symptothermal fertility detection. You can switch here to use cervical mucus values for symptothermal fertility detection', 'Cervix values are being used for symptothermal fertility detection. You can switch here to use cervical mucus values for symptothermal fertility detection',
cervixModeOff: cervixModeOff:
'By default, cervical mucus values are being used for symptothermal fertility detection. You can switch here to use cervix values for symptothermal fertility detection', 'By default, cervical mucus values are being used for symptothermal fertility detection. You can switch here to use cervix values for symptothermal fertility detection',
disabled: {
title: 'Disabled',
message:
'To set a secondary symptom please first enable the temperature, cervical mucus or cervix tracking category as well as the fertility feature above.',
noSecondaryEnabled:
'To switch the secondary symptom both cervical mucus and cervix need to be enabled above.',
},
mucus: 'cervical mucus',
cervix: 'cervix',
}, },
periodPrediction: { periodPrediction: {
title: 'Period predictions', title: 'Period predictions',
on: 'drip predicts your 3 next menstrual bleedings based on statistics if you previously tracked at least 3 complete cycles.', on: 'drip predicts your 3 next menstrual bleedings based on the statistics of your previously tracked cycles, min 3 complete cycles.',
off: 'There are no predictions for menstrual cycles displayed. If turned on the calendar and the home screen will display period predictions.', off: 'There are no predictions for menstrual cycles displayed. If turned on the calendar and the home screen will display period predictions.',
}, },
passwordSettings: { passwordSettings: {
+1 -1
View File
@@ -19,7 +19,7 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.2402.23</string> <string>1.2401.17</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
+2 -12
View File
@@ -1,15 +1,9 @@
import getFertilityStatus from 'sympto' import getFertilityStatus from 'sympto'
import cycleModule from './cycle' import cycleModule from './cycle'
import { fertilityTrackingObservable, useCervixAsSecondarySymptomObservable } from '../local-storage' import { useCervixObservable } from '../local-storage'
import { fertilityStatus as labels } from '../i18n/en/labels' import { fertilityStatus as labels } from '../i18n/en/labels'
const isFertilityTrackingEnabled = fertilityTrackingObservable.value
export function getFertilityStatusForDay(dateString) { export function getFertilityStatusForDay(dateString) {
if (!isFertilityTrackingEnabled) {
return
}
const status = getCycleStatusForDay(dateString) const status = getCycleStatusForDay(dateString)
if (!status) return { if (!status) return {
status: labels.fertile, status: labels.fertile,
@@ -40,10 +34,6 @@ export function getFertilityStatusForDay(dateString) {
} }
export function getCycleStatusForDay(dateString, opts = {}) { export function getCycleStatusForDay(dateString, opts = {}) {
if (!isFertilityTrackingEnabled) {
return
}
const { const {
getCycleForDay, getCycleForDay,
getCyclesBefore, getCyclesBefore,
@@ -67,7 +57,7 @@ export function getCycleStatusForDay(dateString, opts = {}) {
} }
} }
cycleInfo.secondarySymptom = useCervixAsSecondarySymptomObservable.value ? 'cervix' : 'mucus' cycleInfo.secondarySymptom = useCervixObservable.value ? 'cervix' : 'mucus'
return getFertilityStatus(cycleInfo) return getFertilityStatus(cycleInfo)
} }
+7 -39
View File
@@ -59,19 +59,12 @@ export async function savePeriodPrediction(bool) {
} }
} }
export const useCervixAsSecondarySymptomObservable = Observable() export const useCervixObservable = Observable()
setObvWithInitValue( setObvWithInitValue('useCervix', useCervixObservable, false)
'useCervixAsSecondarySymptom',
useCervixAsSecondarySymptomObservable,
0
)
export async function saveUseCervixAsSecondarySymptom(value) { export async function saveUseCervix(bool) {
await AsyncStorage.setItem( await AsyncStorage.setItem('useCervix', JSON.stringify(bool))
'useCervixAsSecondarySymptom', useCervixObservable.set(bool)
JSON.stringify(value)
)
useCervixAsSecondarySymptomObservable.set(value)
} }
export const hasEncryptionObservable = Observable() export const hasEncryptionObservable = Observable()
@@ -107,30 +100,13 @@ export async function saveTemperatureTrackingCategory(bool) {
temperatureTrackingCategoryObservable.set(bool) temperatureTrackingCategoryObservable.set(bool)
if (!temperatureTrackingCategoryObservable.value) { if (!temperatureTrackingCategoryObservable.value) {
// if temperature tracking is turned off, the temperature reminder gets disabled const result = await AsyncStorage.getItem('tempReminder')
const tempReminderResult = await AsyncStorage.getItem('tempReminder') if (JSON.parse(result).enabled) {
if (tempReminderResult && JSON.parse(tempReminderResult).enabled) {
tempReminderObservable.set(false) tempReminderObservable.set(false)
} }
} }
} }
export const mucusTrackingCategoryObservable = Observable()
setObvWithInitValue('mucus', mucusTrackingCategoryObservable, true)
export async function saveMucusTrackingCategory(bool) {
await AsyncStorage.setItem('mucus', JSON.stringify(bool))
mucusTrackingCategoryObservable.set(bool)
}
export const cervixTrackingCategoryObservable = Observable()
setObvWithInitValue('cervix', cervixTrackingCategoryObservable, true)
export async function saveCervixTrackingCategory(bool) {
await AsyncStorage.setItem('cervix', JSON.stringify(bool))
cervixTrackingCategoryObservable.set(bool)
}
export const sexTrackingCategoryObservable = Observable() export const sexTrackingCategoryObservable = Observable()
setObvWithInitValue('sex', sexTrackingCategoryObservable, true) setObvWithInitValue('sex', sexTrackingCategoryObservable, true)
@@ -171,14 +147,6 @@ export async function saveNoteTrackingCategory(bool) {
noteTrackingCategoryObservable.set(bool) noteTrackingCategoryObservable.set(bool)
} }
export const fertilityTrackingObservable = Observable()
setObvWithInitValue('fertilityTracking', fertilityTrackingObservable, true)
export async function saveFertilityTrackingEnabled(bool) {
await AsyncStorage.setItem('fertilityTracking', JSON.stringify(bool))
fertilityTrackingObservable.set(bool)
}
async function setObvWithInitValue(key, obv, defaultValue) { async function setObvWithInitValue(key, obv, defaultValue) {
const result = await AsyncStorage.getItem(key) const result = await AsyncStorage.getItem(key)
let value let value
+3 -2
View File
@@ -1,13 +1,14 @@
{ {
"name": "drip.", "name": "drip.",
"version": "1.2402.23", "version": "1.2402.15",
"contributors": [ "contributors": [
"Julia Friesel <julia.friesel@gmail.com>", "Julia Friesel <julia.friesel@gmail.com>",
"Marie Kochsiek", "Marie Kochsiek",
"Tina Baumann", "Tina Baumann",
"Sofiya Tepikin", "Sofiya Tepikin",
"Mariya Zadnepryanets", "Mariya Zadnepryanets",
"Lisa Hillebrand" "Lisa Hillebrand",
"Martha Dörfler"
], ],
"scripts": { "scripts": {
"start": "react-native start", "start": "react-native start",