Reuse of SettingsSegment component in the Reminders section
This commit is contained in:
@@ -2,9 +2,12 @@ import React, { Component } from 'react'
|
|||||||
import {
|
import {
|
||||||
ScrollView,
|
ScrollView,
|
||||||
} from 'react-native'
|
} from 'react-native'
|
||||||
|
import SettingsSegment from '../settings-segment'
|
||||||
import TempReminderPicker from './temp-reminder-picker'
|
import TempReminderPicker from './temp-reminder-picker'
|
||||||
import PeriodReminderPicker from './period-reminder'
|
import PeriodReminderPicker from './period-reminder'
|
||||||
|
|
||||||
|
import labels from '../../../i18n/en/settings'
|
||||||
|
|
||||||
export default class Settings extends Component {
|
export default class Settings extends Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props)
|
super(props)
|
||||||
@@ -14,8 +17,12 @@ export default class Settings extends Component {
|
|||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<ScrollView>
|
<ScrollView>
|
||||||
<TempReminderPicker/>
|
<SettingsSegment title={labels.tempReminder.title}>
|
||||||
<PeriodReminderPicker/>
|
<TempReminderPicker/>
|
||||||
|
</SettingsSegment>
|
||||||
|
<SettingsSegment title={labels.periodReminder.title}>
|
||||||
|
<PeriodReminderPicker/>
|
||||||
|
</SettingsSegment>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import {
|
|||||||
periodReminderObservable,
|
periodReminderObservable,
|
||||||
savePeriodReminder
|
savePeriodReminder
|
||||||
} from '../../../local-storage'
|
} from '../../../local-storage'
|
||||||
import styles from '../../../styles/index'
|
|
||||||
import labels from '../../../i18n/en/settings'
|
import labels from '../../../i18n/en/settings'
|
||||||
|
|
||||||
export default class PeriodReminderPicker extends Component {
|
export default class PeriodReminderPicker extends Component {
|
||||||
@@ -19,22 +18,17 @@ export default class PeriodReminderPicker extends Component {
|
|||||||
|
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<View style={styles.settingsSegment}>
|
<View style={{ flexDirection: 'row', alignItems: 'center' }}>
|
||||||
<AppText style={styles.settingsSegmentTitle}>
|
<View style={{ flex: 1 }}>
|
||||||
{labels.periodReminder.title}
|
<AppText>{labels.periodReminder.reminderText}</AppText>
|
||||||
</AppText>
|
|
||||||
<View style={{ flexDirection: 'row', alignItems: 'center' }}>
|
|
||||||
<View style={{ flex: 1 }}>
|
|
||||||
<AppText>{labels.periodReminder.reminderText}</AppText>
|
|
||||||
</View>
|
|
||||||
<Switch
|
|
||||||
value={this.state.enabled}
|
|
||||||
onValueChange={switchOn => {
|
|
||||||
this.setState({ enabled: switchOn })
|
|
||||||
savePeriodReminder({enabled: switchOn})
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</View>
|
</View>
|
||||||
|
<Switch
|
||||||
|
value={this.state.enabled}
|
||||||
|
onValueChange={switchOn => {
|
||||||
|
this.setState({ enabled: switchOn })
|
||||||
|
savePeriodReminder({enabled: switchOn})
|
||||||
|
}}
|
||||||
|
/>
|
||||||
</View>
|
</View>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,64 +10,63 @@ import {
|
|||||||
tempReminderObservable,
|
tempReminderObservable,
|
||||||
saveTempReminder
|
saveTempReminder
|
||||||
} from '../../../local-storage'
|
} from '../../../local-storage'
|
||||||
import styles from '../../../styles/index'
|
|
||||||
import labels from '../../../i18n/en/settings'
|
import labels from '../../../i18n/en/settings'
|
||||||
import padWithZeros from '../../helpers/pad-time-with-zeros'
|
import padWithZeros from '../../helpers/pad-time-with-zeros'
|
||||||
|
|
||||||
export default class TempReminderPicker extends Component {
|
export default class TempReminderPicker extends Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props)
|
super(props)
|
||||||
this.state = Object.assign({}, tempReminderObservable.value)
|
const { time, enabled } = tempReminderObservable.value
|
||||||
|
this.state = {
|
||||||
|
time,
|
||||||
|
enabled,
|
||||||
|
isTimePickerVisible: false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<TouchableOpacity
|
<TouchableOpacity
|
||||||
style={styles.settingsSegment}
|
style={{ flexDirection: 'row', alignItems: 'center' }}
|
||||||
onPress={() => this.setState({ isTimePickerVisible: true })}
|
onPress={() => this.setState({ isTimePickerVisible: true })}
|
||||||
>
|
>
|
||||||
<AppText style={styles.settingsSegmentTitle}>
|
<View style={{ flex: 1 }}>
|
||||||
{labels.tempReminder.title}
|
{this.state.time && this.state.enabled ?
|
||||||
</AppText>
|
<AppText>{labels.tempReminder.timeSet(this.state.time)}</AppText>
|
||||||
<View style={{ flexDirection: 'row', alignItems: 'center' }}>
|
:
|
||||||
<View style={{ flex: 1 }}>
|
<AppText>{labels.tempReminder.noTimeSet}</AppText>
|
||||||
{this.state.time && this.state.enabled ?
|
}
|
||||||
<AppText>{labels.tempReminder.timeSet(this.state.time)}</AppText>
|
|
||||||
:
|
|
||||||
<AppText>{labels.tempReminder.noTimeSet}</AppText>
|
|
||||||
}
|
|
||||||
</View>
|
|
||||||
<Switch
|
|
||||||
value={this.state.enabled}
|
|
||||||
onValueChange={switchOn => {
|
|
||||||
this.setState({ enabled: switchOn })
|
|
||||||
if (switchOn && !this.state.time) {
|
|
||||||
this.setState({ isTimePickerVisible: true })
|
|
||||||
}
|
|
||||||
if (!switchOn) saveTempReminder({ enabled: false })
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
<DateTimePicker
|
|
||||||
mode="time"
|
|
||||||
isVisible={this.state.isTimePickerVisible}
|
|
||||||
onConfirm={jsDate => {
|
|
||||||
const time = padWithZeros(jsDate)
|
|
||||||
this.setState({
|
|
||||||
time,
|
|
||||||
isTimePickerVisible: false,
|
|
||||||
enabled: true
|
|
||||||
})
|
|
||||||
saveTempReminder({
|
|
||||||
time,
|
|
||||||
enabled: true
|
|
||||||
})
|
|
||||||
}}
|
|
||||||
onCancel={() => {
|
|
||||||
this.setState({ isTimePickerVisible: false })
|
|
||||||
if (!this.state.time) this.setState({enabled: false})
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</View>
|
</View>
|
||||||
|
<Switch
|
||||||
|
value={this.state.enabled}
|
||||||
|
onValueChange={switchOn => {
|
||||||
|
this.setState({ enabled: switchOn })
|
||||||
|
if (switchOn && !this.state.time) {
|
||||||
|
this.setState({ isTimePickerVisible: true })
|
||||||
|
}
|
||||||
|
if (!switchOn) saveTempReminder({ enabled: false })
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<DateTimePicker
|
||||||
|
mode="time"
|
||||||
|
isVisible={this.state.isTimePickerVisible}
|
||||||
|
onConfirm={jsDate => {
|
||||||
|
const time = padWithZeros(jsDate)
|
||||||
|
this.setState({
|
||||||
|
time,
|
||||||
|
isTimePickerVisible: false,
|
||||||
|
enabled: true
|
||||||
|
})
|
||||||
|
saveTempReminder({
|
||||||
|
time,
|
||||||
|
enabled: true
|
||||||
|
})
|
||||||
|
}}
|
||||||
|
onCancel={() => {
|
||||||
|
this.setState({ isTimePickerVisible: false })
|
||||||
|
if (!this.state.time) this.setState({enabled: false})
|
||||||
|
}}
|
||||||
|
/>
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user