From f564eab7d09495d2206d4672ed2752b0396ca2d5 Mon Sep 17 00:00:00 2001 From: Julia Friesel Date: Mon, 27 Aug 2018 10:59:53 +0200 Subject: [PATCH] Save temp reminder settings --- components/settings.js | 79 ++++++++++++++++++++++++++++-------------- local-storage/index.js | 25 ++++++++----- 2 files changed, 70 insertions(+), 34 deletions(-) diff --git a/components/settings.js b/components/settings.js index 9f0451a..b56eb06 100644 --- a/components/settings.js +++ b/components/settings.js @@ -17,7 +17,12 @@ import config from '../config' import { settings as settingsLabels, shared as sharedLabels } from './labels' import getDataAsCsvDataUri from '../lib/import-export/export-to-csv' import importCsv from '../lib/import-export/import-from-csv' -import { scaleObservable, saveTempScale } from '../local-storage' +import { + scaleObservable, + saveTempScale, + tempReminderObservable, + saveTempReminder +} from '../local-storage' export default class Settings extends Component { constructor(props) { @@ -35,31 +40,7 @@ export default class Settings extends Component { {settingsLabels.tempReminder.title} - - - {this.state.time ? - {settingsLabels.tempReminder.timeSet(this.state.time)} - : - {settingsLabels.tempReminder.noTimeSet} - } - - this.setState({ tempReminderEnabled: val })} - onTintColor={secondaryColor} - /> - - { - this.setState({ - time: padWithZeros(`${jsDate.getHours()}:${jsDate.getMinutes()}`), - isTimePickerVisible: false - }) - }} - onCancel={() => this.setState({ isTimePickerVisible: false })} - /> + @@ -99,6 +80,52 @@ export default class Settings extends Component { } } +class TempReminderPicker extends Component { + constructor(props) { + super(props) + this.state = Object.assign({}, tempReminderObservable.value) + } + + render() { + return ( + + + {this.state.time && this.state.enabled ? + {settingsLabels.tempReminder.timeSet(this.state.time)} + : + {settingsLabels.tempReminder.noTimeSet} + } + + { + this.setState({ enabled: val }) + if (val && !this.state.time) this.setState({ isTimePickerVisible: true }) + if (!val) saveTempReminder({ enabled: false }) + }} + onTintColor={secondaryColor} + /> + { + const time = padWithZeros(`${jsDate.getHours()}:${jsDate.getMinutes()}`) + this.setState({ + time, + isTimePickerVisible: false + }) + saveTempReminder({ + time, + enabled: true + }) + }} + onCancel={() => this.setState({ isTimePickerVisible: false })} + /> + + ) + } +} + class TempSlider extends Component { constructor(props) { super(props) diff --git a/local-storage/index.js b/local-storage/index.js index 50d886f..6296271 100644 --- a/local-storage/index.js +++ b/local-storage/index.js @@ -3,20 +3,25 @@ import Observable from 'obv' import config from '../config' export const scaleObservable = Observable() -setTempScaleInitially() +setObvWithInitValue('tempScale', scaleObservable, { + min: config.temperatureScale.defaultLow, + max: config.temperatureScale.defaultHigh +}) -async function setTempScaleInitially() { - const result = await AsyncStorage.getItem('tempScale') +export const tempReminderObservable = Observable() +setObvWithInitValue('tempReminder', tempReminderObservable, { + enabled: false +}) + +async function setObvWithInitValue(key, obv, defaultValue) { + const result = await AsyncStorage.getItem(key) let value if (result) { value = JSON.parse(result) } else { - value = { - min: config.temperatureScale.defaultLow, - max: config.temperatureScale.defaultHigh - } + value = defaultValue } - scaleObservable.set(value) + obv.set(value) } export async function saveTempScale(scale) { @@ -24,3 +29,7 @@ export async function saveTempScale(scale) { scaleObservable.set(scale) } +export async function saveTempReminder(reminder) { + await AsyncStorage.setItem('tempReminder', JSON.stringify(reminder)) + tempReminderObservable.set(reminder) +} \ No newline at end of file