From c7c905fd5fb28b4353ecd5c25423ae4ba03563a3 Mon Sep 17 00:00:00 2001 From: bl00dymarie Date: Fri, 5 Jan 2024 20:11:38 +0100 Subject: [PATCH] Add functionality to turn on/off period predictions --- components/settings/customization/index.js | 32 ++++++++++++++++------ i18n/en/settings.js | 5 ++++ local-storage.js | 10 +++++++ 3 files changed, 39 insertions(+), 8 deletions(-) diff --git a/components/settings/customization/index.js b/components/settings/customization/index.js index 373888c..9d0408c 100644 --- a/components/settings/customization/index.js +++ b/components/settings/customization/index.js @@ -6,7 +6,12 @@ import AppText from '../../common/app-text' import TemperatureSlider from './temperature-slider' import Segment from '../../common/segment' -import { useCervixObservable, saveUseCervix } from '../../../local-storage' +import { + periodPredictionObservable, + savePeriodPrediction, + useCervixObservable, + saveUseCervix, +} from '../../../local-storage' import { Colors } from '../../../styles' import labels from '../../../i18n/en/settings' @@ -15,9 +20,22 @@ const Settings = () => { useCervixObservable.value ) - const [isEnabled, setIsEnabled] = useState(true) + const [isPeriodPredictionEnabled, setPeriodPrediction] = useState( + periodPredictionObservable.value + ) + + const [isEnabled, setIsEnabled] = useState(false) const toggleSwitch = () => setIsEnabled((previousState) => !previousState) + const onPeriodPredictionToggle = (value) => { + setPeriodPrediction(value) + savePeriodPrediction(value) + } + + const periodPredictionText = isPeriodPredictionEnabled + ? labels.periodPrediction.on + : labels.periodPrediction.off + const onCervixToggle = (value) => { setShouldUseCervix(value) saveUseCervix(value) @@ -103,13 +121,11 @@ const Settings = () => { /> - + diff --git a/i18n/en/settings.js b/i18n/en/settings.js index e330edc..02ca54b 100644 --- a/i18n/en/settings.js +++ b/i18n/en/settings.js @@ -58,6 +58,11 @@ export default { 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', }, + periodPrediction: { + title: 'Period prediction', + 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 on home period predictions will be displayed.', + }, passwordSettings: { title: 'App password', explainerDisabled: diff --git a/local-storage.js b/local-storage.js index ac19625..3f6950b 100644 --- a/local-storage.js +++ b/local-storage.js @@ -44,6 +44,16 @@ export async function savePeriodReminder(reminder) { periodReminderObservable.set(reminder) } +export const periodPredictionObservable = Observable() +setObvWithInitValue('periodPrediction', periodPredictionObservable, { + enabled: true, +}) + +export async function savePeriodPrediction(bool) { + await AsyncStorage.setItem('periodPrediction', JSON.stringify(bool)) + periodPredictionObservable.set(bool) +} + export const useCervixObservable = Observable() setObvWithInitValue('useCervix', useCervixObservable, false)