Disable and switch secondary symptom depending on cervical mucus and cervix turned on or off.
This commit is contained in:
@@ -22,6 +22,8 @@ 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'
|
||||||
|
|
||||||
@@ -72,6 +74,10 @@ 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') {
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ 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'
|
||||||
@@ -40,6 +42,10 @@ 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') {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import React, { useState } from 'react'
|
import React, { useEffect, 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'
|
||||||
@@ -14,10 +14,14 @@ import {
|
|||||||
painTrackingCategoryObservable,
|
painTrackingCategoryObservable,
|
||||||
sexTrackingCategoryObservable,
|
sexTrackingCategoryObservable,
|
||||||
temperatureTrackingCategoryObservable,
|
temperatureTrackingCategoryObservable,
|
||||||
|
mucusTrackingCategoryObservable,
|
||||||
|
cervixTrackingCategoryObservable,
|
||||||
saveDesireTrackingCategory,
|
saveDesireTrackingCategory,
|
||||||
saveMoodTrackingCategory,
|
saveMoodTrackingCategory,
|
||||||
saveNoteTrackingCategory,
|
saveNoteTrackingCategory,
|
||||||
savePainTrackingCategory,
|
savePainTrackingCategory,
|
||||||
|
saveMucusTrackingCategory,
|
||||||
|
saveCervixTrackingCategory,
|
||||||
savePeriodPrediction,
|
savePeriodPrediction,
|
||||||
saveSexTrackingCategory,
|
saveSexTrackingCategory,
|
||||||
saveTemperatureTrackingCategory,
|
saveTemperatureTrackingCategory,
|
||||||
@@ -41,6 +45,14 @@ 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
|
||||||
)
|
)
|
||||||
@@ -61,6 +73,9 @@ const Settings = () => {
|
|||||||
noteTrackingCategoryObservable.value
|
noteTrackingCategoryObservable.value
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const [isSecondarySymptomDisabled, setIsSecondarySymptomDisabled] =
|
||||||
|
useState(false)
|
||||||
|
|
||||||
const [isEnabled, setIsEnabled] = useState(false)
|
const [isEnabled, setIsEnabled] = useState(false)
|
||||||
const toggleSwitch = () => setIsEnabled((previousState) => !previousState)
|
const toggleSwitch = () => setIsEnabled((previousState) => !previousState)
|
||||||
|
|
||||||
@@ -69,11 +84,44 @@ const Settings = () => {
|
|||||||
saveTemperatureTrackingCategory(value)
|
saveTemperatureTrackingCategory(value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const mucusTrackingCategoryToggle = (value) => {
|
||||||
|
if (!cervixTrackingCategoryObservable.value && value) {
|
||||||
|
setShouldUseCervix(false)
|
||||||
|
setIsSecondarySymptomDisabled(true)
|
||||||
|
} else if (cervixTrackingCategoryObservable.value && value) {
|
||||||
|
setIsSecondarySymptomDisabled(false)
|
||||||
|
} else if (cervixTrackingCategoryObservable.value && !value) {
|
||||||
|
setShouldUseCervix(true)
|
||||||
|
setIsSecondarySymptomDisabled(true)
|
||||||
|
} else if (!cervixTrackingCategoryObservable.value && !value) {
|
||||||
|
setIsSecondarySymptomDisabled(true)
|
||||||
|
}
|
||||||
|
setMucusTrackingCategory(value)
|
||||||
|
saveMucusTrackingCategory(value)
|
||||||
|
saveUseCervix(shouldUseCervix)
|
||||||
|
}
|
||||||
|
|
||||||
|
const cervixTrackingCategoryToggle = (value) => {
|
||||||
|
if (!mucusTrackingCategoryObservable.value && value) {
|
||||||
|
setShouldUseCervix(true)
|
||||||
|
setIsSecondarySymptomDisabled(true)
|
||||||
|
} else if (mucusTrackingCategoryObservable.value && value) {
|
||||||
|
setIsSecondarySymptomDisabled(false)
|
||||||
|
} else if (mucusTrackingCategoryObservable.value && !value) {
|
||||||
|
setShouldUseCervix(false)
|
||||||
|
setIsSecondarySymptomDisabled(true)
|
||||||
|
} else if (!mucusTrackingCategoryObservable.value && !value) {
|
||||||
|
setIsSecondarySymptomDisabled(true)
|
||||||
|
}
|
||||||
|
setCervixTrackingCategory(value)
|
||||||
|
saveCervixTrackingCategory(value)
|
||||||
|
saveUseCervix(shouldUseCervix)
|
||||||
|
}
|
||||||
|
|
||||||
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)
|
||||||
@@ -90,12 +138,10 @@ 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 periodPredictionText = isPeriodPredictionEnabled
|
const periodPredictionText = isPeriodPredictionEnabled
|
||||||
? labels.periodPrediction.on
|
? labels.periodPrediction.on
|
||||||
: labels.periodPrediction.off
|
: labels.periodPrediction.off
|
||||||
@@ -105,6 +151,41 @@ const Settings = () => {
|
|||||||
saveUseCervix(value)
|
saveUseCervix(value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (
|
||||||
|
!mucusTrackingCategoryObservable.value &&
|
||||||
|
cervixTrackingCategoryObservable.value
|
||||||
|
) {
|
||||||
|
setShouldUseCervix(true)
|
||||||
|
setIsSecondarySymptomDisabled(false)
|
||||||
|
} else if (
|
||||||
|
mucusTrackingCategoryObservable.value &&
|
||||||
|
cervixTrackingCategoryObservable.value
|
||||||
|
) {
|
||||||
|
setIsSecondarySymptomDisabled(false)
|
||||||
|
} else if (
|
||||||
|
mucusTrackingCategoryObservable.value &&
|
||||||
|
!cervixTrackingCategoryObservable.value
|
||||||
|
) {
|
||||||
|
setShouldUseCervix(false)
|
||||||
|
setIsSecondarySymptomDisabled(false)
|
||||||
|
} else if (
|
||||||
|
!mucusTrackingCategoryObservable.value &&
|
||||||
|
!cervixTrackingCategoryObservable.value
|
||||||
|
) {
|
||||||
|
setIsSecondarySymptomDisabled(true)
|
||||||
|
}
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
const secSymptomDisabledPrompt = () => {
|
||||||
|
if (isSecondarySymptomDisabled) {
|
||||||
|
Alert.alert(
|
||||||
|
labels.periodReminder.alertNoPeriodReminder.title,
|
||||||
|
labels.periodReminder.alertNoPeriodReminder.message
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const cervixText = shouldUseCervix
|
const cervixText = shouldUseCervix
|
||||||
? labels.useCervix.cervixModeOn
|
? labels.useCervix.cervixModeOn
|
||||||
: labels.useCervix.cervixModeOff
|
: labels.useCervix.cervixModeOff
|
||||||
@@ -121,6 +202,22 @@ const Settings = () => {
|
|||||||
onToggle={temperatureTrackingCategoryToggle}
|
onToggle={temperatureTrackingCategoryToggle}
|
||||||
text={SYMPTOMS[1]}
|
text={SYMPTOMS[1]}
|
||||||
value={isTemperatureTrackingCategoryEnabled}
|
value={isTemperatureTrackingCategoryEnabled}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<AppSwitch
|
||||||
|
onToggle={(enabled) => {
|
||||||
|
mucusTrackingCategoryToggle(enabled)
|
||||||
|
}}
|
||||||
|
text={'mucus'}
|
||||||
|
value={isMucusTrackingCategoryEnabled}
|
||||||
|
trackColor={{ true: Colors.turquoiseDark }}
|
||||||
|
/>
|
||||||
|
<AppSwitch
|
||||||
|
onToggle={(enabled) => {
|
||||||
|
cervixTrackingCategoryToggle(enabled)
|
||||||
|
}}
|
||||||
|
text={'cervix'}
|
||||||
|
value={isCervixTrackingCategoryEnabled}
|
||||||
trackColor={{ true: Colors.turquoiseDark }}
|
trackColor={{ true: Colors.turquoiseDark }}
|
||||||
/>
|
/>
|
||||||
<AppSwitch
|
<AppSwitch
|
||||||
@@ -178,19 +275,15 @@ const Settings = () => {
|
|||||||
</Segment>
|
</Segment>
|
||||||
</Pressable>
|
</Pressable>
|
||||||
|
|
||||||
<Pressable onPress={sliderDisabledPrompt}>
|
<Pressable onPress={secSymptomDisabledPrompt}>
|
||||||
<Segment title={labels.useCervix.title}>
|
<Segment title={labels.useCervix.title}>
|
||||||
{isTemperatureTrackingCategoryEnabled && (
|
|
||||||
<AppSwitch
|
<AppSwitch
|
||||||
onToggle={onCervixToggle}
|
onToggle={onCervixToggle}
|
||||||
text={cervixText}
|
text={cervixText}
|
||||||
value={shouldUseCervix}
|
value={shouldUseCervix}
|
||||||
trackColor={{ true: Colors.turquoiseDark }}
|
trackColor={{ true: Colors.turquoiseDark }}
|
||||||
|
disabled={isSecondarySymptomDisabled}
|
||||||
/>
|
/>
|
||||||
)}
|
|
||||||
{!isTemperatureTrackingCategoryEnabled && (
|
|
||||||
<AppText>{labels.disabled.message}</AppText>
|
|
||||||
)}
|
|
||||||
</Segment>
|
</Segment>
|
||||||
</Pressable>
|
</Pressable>
|
||||||
|
|
||||||
|
|||||||
@@ -107,6 +107,22 @@ export async function saveTemperatureTrackingCategory(bool) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user