diff --git a/components/app.js b/components/app.js index 98484ab..ed3063d 100644 --- a/components/app.js +++ b/components/app.js @@ -16,7 +16,6 @@ import { closeDb } from '../db' class App extends Component { static propTypes = { date: PropTypes.string, - navigation: PropTypes.object.isRequired, navigate: PropTypes.func, setDate: PropTypes.func, goBack: PropTypes.func, diff --git a/components/header/hamburger-menu.js b/components/header/hamburger-menu.js index 4e9705b..de97cfb 100644 --- a/components/header/hamburger-menu.js +++ b/components/header/hamburger-menu.js @@ -1,4 +1,4 @@ -import React, { Component } from 'react' +import React, { useState } from 'react' import { Modal, Platform, @@ -25,58 +25,42 @@ const settingsMenuItems = [ { name: menuItems.privacyPolicy, component: 'PrivacyPolicy' }, ] -export default class HamburgerMenu extends Component { - constructor(props) { - super(props) - - this.state = { shouldShowMenu: false } - } - - toggleMenu = () => { - this.setState({ shouldShowMenu: !this.state.shouldShowMenu }) - } - - render() { - const { shouldShowMenu } = this.state +const HamburgerMenu = ({ navigate }) => { + const [isOpen, setIsOpen] = useState(false) + const closeMenu = () => setIsOpen(false) + if (!isOpen) return ( - <> - {!shouldShowMenu && ( - - - - )} - {shouldShowMenu && ( - - - - - this.toggleMenu()} /> - - {settingsMenuItems.map((item) => ( - - ))} - - - )} - + setIsOpen(true)} hitSlop={HIT_SLOP}> + + ) - } + + return ( + + + + + + + {settingsMenuItems.map((item) => ( + + ))} + + + ) } +export default HamburgerMenu + HamburgerMenu.propTypes = { navigate: PropTypes.func, } diff --git a/components/settings/reminders/reminders.js b/components/settings/reminders/reminders.js index b676ba2..0b65dc5 100644 --- a/components/settings/reminders/reminders.js +++ b/components/settings/reminders/reminders.js @@ -1,4 +1,4 @@ -import React, { Component } from 'react' +import React, { useState } from 'react' import AppPage from '../../common/app-page' import AppSwitch from '../../common/app-switch' @@ -12,34 +12,29 @@ import { import labels from '../../../i18n/en/settings' -export default class Reminders extends Component { - constructor(props) { - super(props) - - this.state = { - isPeriodReminderEnabled: periodReminderObservable.value.enabled, - } - } - - periodReminderToggle = (isEnabled) => { - this.setState({ isPeriodReminderEnabled: isEnabled }) +const Reminders = () => { + const [isPeriodReminderEnabled, setIsPeriodReminderEnabled] = useState( + periodReminderObservable.value.enabled + ) + const periodReminderToggle = (isEnabled) => { + setIsPeriodReminderEnabled(isEnabled) savePeriodReminder({ enabled: isEnabled }) } - render() { - return ( - - - - - - - - - ) - } + return ( + + + + + + + + + ) } + +export default Reminders diff --git a/components/settings/reminders/temperature-reminder.js b/components/settings/reminders/temperature-reminder.js index 47d3324..d5fb874 100644 --- a/components/settings/reminders/temperature-reminder.js +++ b/components/settings/reminders/temperature-reminder.js @@ -1,4 +1,4 @@ -import React, { Component } from 'react' +import React, { useState } from 'react' import { Platform } from 'react-native' import DateTimePicker from 'react-native-modal-datetime-picker' @@ -12,63 +12,55 @@ import padWithZeros from '../../helpers/pad-time-with-zeros' import labels from '../../../i18n/en/settings' -class TemperatureReminder extends Component { - constructor(props) { - super(props) +const TemperatureReminder = () => { + const [isEnabled, setIsEnabled] = useState( + tempReminderObservable.value.enabled + ) + const [isTimePickerVisible, setIsTimePickerVisible] = useState(false) + const [time, setTime] = useState(tempReminderObservable.value.time) - const { time, enabled } = tempReminderObservable.value - this.state = { - isEnabled: enabled, - isTimePickerVisible: false, - time, - } - } - - temperatureReminderToggle = (value) => { + const temperatureReminderToggle = (value) => { if (value) { - this.setState({ isTimePickerVisible: true }) + setIsTimePickerVisible(true) } else { saveTempReminder({ enabled: false }) - this.setState({ isEnabled: false }) + setIsEnabled(false) } } - onPickDate = (date) => { + const onPickDate = (date) => { const time = padWithZeros(date) - - this.setState({ isEnabled: true, isTimePickerVisible: false, time }) + setIsEnabled(true) + setIsTimePickerVisible(false) + setTime(time) saveTempReminder({ time, enabled: true }) } - onPickDateCancel = () => { - this.setState({ isTimePickerVisible: false }) + const onPickDateCancel = () => { + setIsTimePickerVisible(false) } - render() { - const { isEnabled, isTimePickerVisible, time } = this.state + const tempReminderText = + time && isEnabled + ? labels.tempReminder.timeSet(time) + : labels.tempReminder.noTimeSet - const tempReminderText = - time && isEnabled - ? labels.tempReminder.timeSet(time) - : labels.tempReminder.noTimeSet - - return ( - - - - - ) - } + return ( + <> + + + + ) } export default TemperatureReminder