Make desire, pain, mood and note customizable

This commit is contained in:
bl00dymarie
2024-01-19 13:36:34 +01:00
parent 26d971a8b2
commit 28fd610e9d
4 changed files with 121 additions and 28 deletions
+13 -3
View File
@@ -16,6 +16,10 @@ import { getCycleDaysSortedByDate } from '../../db'
import { import {
getChartFlag, getChartFlag,
setChartFlag, setChartFlag,
desireTrackingCategoryObservable,
moodTrackingCategoryObservable,
noteTrackingCategoryObservable,
painTrackingCategoryObservable,
sexTrackingCategoryObservable, sexTrackingCategoryObservable,
} from '../../local-storage' } from '../../local-storage'
import { makeColumnInfo } from '../helpers/chart' import { makeColumnInfo } from '../helpers/chart'
@@ -66,9 +70,15 @@ const CycleChart = ({ navigate, setDate }) => {
const symptomRowEnabledSymptoms = symptomRowSymptoms.filter((symptom) => { const symptomRowEnabledSymptoms = symptomRowSymptoms.filter((symptom) => {
if (symptom === 'sex') { if (symptom === 'sex') {
if (sexTrackingCategoryObservable.value) { return sexTrackingCategoryObservable.value ? symptom : null
return symptom } else if (symptom === 'desire') {
} return desireTrackingCategoryObservable.value ? symptom : null
} else if (symptom === 'pain') {
return painTrackingCategoryObservable.value ? symptom : null
} else if (symptom === 'mood') {
return moodTrackingCategoryObservable.value ? symptom : null
} else if (symptom === 'note') {
return noteTrackingCategoryObservable.value ? symptom : null
} else { } else {
return symptom return symptom
} }
+18 -8
View File
@@ -9,7 +9,13 @@ import SymptomPageTitle from './symptom-page-title'
import { getCycleDay } from '../../db' import { getCycleDay } from '../../db'
import { getData, nextDate, prevDate } from '../helpers/cycle-day' import { getData, nextDate, prevDate } from '../helpers/cycle-day'
import { sexTrackingCategoryObservable } from '../../local-storage' import {
desireTrackingCategoryObservable,
moodTrackingCategoryObservable,
noteTrackingCategoryObservable,
painTrackingCategoryObservable,
sexTrackingCategoryObservable,
} from '../../local-storage'
import { Spacing } from '../../styles' import { Spacing } from '../../styles'
import { SYMPTOMS } from '../../config' import { SYMPTOMS } from '../../config'
@@ -28,18 +34,22 @@ const CycleDayOverView = ({ date, setDate, isTemperatureEditView }) => {
setDate(prevDate(date)) setDate(prevDate(date))
} }
const isSexEnabled = sexTrackingCategoryObservable.value const allEnabledSymptoms = SYMPTOMS.map((symptom) => {
const allesymptoms = SYMPTOMS.map((symptom) => {
if (symptom === 'sex') { if (symptom === 'sex') {
if (isSexEnabled) { return sexTrackingCategoryObservable.value ? symptom : null
return symptom } else if (symptom === 'desire') {
} return desireTrackingCategoryObservable.value ? symptom : null
} else if (symptom === 'pain') {
return painTrackingCategoryObservable.value ? symptom : null
} else if (symptom === 'mood') {
return moodTrackingCategoryObservable.value ? symptom : null
} else if (symptom === 'note') {
return noteTrackingCategoryObservable.value ? symptom : null
} else { } else {
return symptom return symptom
} }
}) })
const cleanSymptoms = allEnabledSymptoms.filter(Boolean)
const cleanSymptoms = allesymptoms.filter(Boolean)
return ( return (
<AppPage> <AppPage>
+58 -17
View File
@@ -7,12 +7,20 @@ import TemperatureSlider from './temperature-slider'
import Segment from '../../common/segment' import Segment from '../../common/segment'
import { import {
periodPredictionObservable, desireTrackingCategoryObservable,
savePeriodPrediction, moodTrackingCategoryObservable,
useCervixObservable, noteTrackingCategoryObservable,
saveUseCervix, painTrackingCategoryObservable,
saveSexTrackingCategory,
sexTrackingCategoryObservable, sexTrackingCategoryObservable,
saveDesireTrackingCategory,
saveMoodTrackingCategory,
saveNoteTrackingCategory,
savePainTrackingCategory,
savePeriodPrediction,
saveSexTrackingCategory,
saveUseCervix,
periodPredictionObservable,
useCervixObservable,
} from '../../../local-storage' } from '../../../local-storage'
import { Colors } from '../../../styles' import { Colors } from '../../../styles'
import labels from '../../../i18n/en/settings' import labels from '../../../i18n/en/settings'
@@ -30,6 +38,22 @@ const Settings = () => {
sexTrackingCategoryObservable.value sexTrackingCategoryObservable.value
) )
const [isDesireTrackingCategoryEnabled, setDesireTrackingCategory] = useState(
desireTrackingCategoryObservable.value
)
const [isPainTrackingCategoryEnabled, setPainTrackingCategory] = useState(
painTrackingCategoryObservable.value
)
const [isMoodTrackingCategoryEnabled, setMoodTrackingCategory] = useState(
moodTrackingCategoryObservable.value
)
const [isNoteTrackingCategoryEnabled, setNoteTrackingCategory] = useState(
noteTrackingCategoryObservable.value
)
const [isEnabled, setIsEnabled] = useState(false) const [isEnabled, setIsEnabled] = useState(false)
const toggleSwitch = () => setIsEnabled((previousState) => !previousState) const toggleSwitch = () => setIsEnabled((previousState) => !previousState)
@@ -38,6 +62,23 @@ const Settings = () => {
saveSexTrackingCategory(value) saveSexTrackingCategory(value)
} }
const desireTrackingCategoryToggle = (value) => {
setDesireTrackingCategory(value)
saveDesireTrackingCategory(value)
}
const painTrackingCategoryToggle = (value) => {
setPainTrackingCategory(value)
savePainTrackingCategory(value)
}
const moodTrackingCategoryToggle = (value) => {
setMoodTrackingCategory(value)
saveMoodTrackingCategory(value)
}
const noteTrackingCategoryToggle = (value) => {
setNoteTrackingCategory(value)
saveNoteTrackingCategory(value)
}
const onPeriodPredictionToggle = (value) => { const onPeriodPredictionToggle = (value) => {
setPeriodPrediction(value) setPeriodPrediction(value)
savePeriodPrediction(value) savePeriodPrediction(value)
@@ -66,27 +107,27 @@ const Settings = () => {
trackColor={{ true: Colors.turquoiseDark }} trackColor={{ true: Colors.turquoiseDark }}
/> />
<AppSwitch <AppSwitch
onToggle={toggleSwitch} onToggle={desireTrackingCategoryToggle}
text={'desire'} text={"desire: when turned off it won't show"}
value={isEnabled} value={isDesireTrackingCategoryEnabled}
trackColor={{ true: Colors.turquoiseDark }} trackColor={{ true: Colors.turquoiseDark }}
/> />
<AppSwitch <AppSwitch
onToggle={toggleSwitch} onToggle={painTrackingCategoryToggle}
text={'pain'} text={"pain: when turned off it won't show"}
value={isEnabled} value={isPainTrackingCategoryEnabled}
trackColor={{ true: Colors.turquoiseDark }} trackColor={{ true: Colors.turquoiseDark }}
/> />
<AppSwitch <AppSwitch
onToggle={toggleSwitch} onToggle={moodTrackingCategoryToggle}
text={'mood'} text={"mood: when turned off it won't show"}
value={isEnabled} value={isMoodTrackingCategoryEnabled}
trackColor={{ true: Colors.turquoiseDark }} trackColor={{ true: Colors.turquoiseDark }}
/> />
<AppSwitch <AppSwitch
onToggle={toggleSwitch} onToggle={noteTrackingCategoryToggle}
text={'note'} text={"note: when turned off it won't show"}
value={isEnabled} value={isNoteTrackingCategoryEnabled}
trackColor={{ true: Colors.turquoiseDark }} trackColor={{ true: Colors.turquoiseDark }}
/> />
</Segment> </Segment>
+32
View File
@@ -100,6 +100,38 @@ export async function saveSexTrackingCategory(bool) {
sexTrackingCategoryObservable.set(bool) sexTrackingCategoryObservable.set(bool)
} }
export const desireTrackingCategoryObservable = Observable()
setObvWithInitValue('desire', desireTrackingCategoryObservable, true)
export async function saveDesireTrackingCategory(bool) {
await AsyncStorage.setItem('desire', JSON.stringify(bool))
desireTrackingCategoryObservable.set(bool)
}
export const painTrackingCategoryObservable = Observable()
setObvWithInitValue('pain', painTrackingCategoryObservable, true)
export async function savePainTrackingCategory(bool) {
await AsyncStorage.setItem('pain', JSON.stringify(bool))
painTrackingCategoryObservable.set(bool)
}
export const moodTrackingCategoryObservable = Observable()
setObvWithInitValue('mood', moodTrackingCategoryObservable, true)
export async function saveMoodTrackingCategory(bool) {
await AsyncStorage.setItem('mood', JSON.stringify(bool))
moodTrackingCategoryObservable.set(bool)
}
export const noteTrackingCategoryObservable = Observable()
setObvWithInitValue('note', noteTrackingCategoryObservable, true)
export async function saveNoteTrackingCategory(bool) {
await AsyncStorage.setItem('note', JSON.stringify(bool))
noteTrackingCategoryObservable.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