diff --git a/components/cycle-day/symptom-edit-view.js b/components/cycle-day/symptom-edit-view.js
index fa03867..a5efaff 100644
--- a/components/cycle-day/symptom-edit-view.js
+++ b/components/cycle-day/symptom-edit-view.js
@@ -23,12 +23,11 @@ import info from '../../i18n/en/symptom-info'
import { Colors, Containers, Sizes, Spacing } from '../../styles'
class SymptomEditView extends Component {
-
static propTypes = {
date: PropTypes.string.isRequired,
onClose: PropTypes.func.isRequired,
symptom: PropTypes.string.isRequired,
- symptomData: PropTypes.object
+ symptomData: PropTypes.object,
}
constructor(props) {
@@ -49,7 +48,7 @@ class SymptomEditView extends Component {
shouldShowInfo: false,
shouldShowNote,
shouldBoxGroup,
- shouldTabGroup
+ shouldTabGroup,
}
}
@@ -97,8 +96,8 @@ class SymptomEditView extends Component {
onSaveTemperature = (value, field) => {
const data = this.getParsedData()
- const dataToSave = field === 'value'
- ? { [field]: Number(value) } : { [field]: value }
+ const dataToSave =
+ field === 'value' ? { [field]: Number(value) } : { [field]: value }
Object.assign(data, { ...dataToSave })
this.setState({ data })
@@ -106,10 +105,10 @@ class SymptomEditView extends Component {
onSelectBox = (key) => {
const data = this.getParsedData()
- if (key === "other") {
+ if (key === 'other') {
Object.assign(data, {
note: null,
- [key]: !this.state.data[key]
+ [key]: !this.state.data[key],
})
} else {
Object.assign(data, { [key]: !this.state.data[key] })
@@ -118,7 +117,7 @@ class SymptomEditView extends Component {
this.setState({ data })
}
- onSelectBoxNote= (value) => {
+ onSelectBoxNote = (value) => {
const data = this.getParsedData()
Object.assign(data, { note: value !== '' ? value : null })
@@ -147,12 +146,13 @@ class SymptomEditView extends Component {
render() {
const { symptom } = this.props
- const { data,
+ const {
+ data,
shouldShowExclude,
shouldShowInfo,
shouldShowNote,
shouldBoxGroup,
- shouldTabGroup
+ shouldTabGroup,
} = this.state
const iconName = shouldShowInfo ? 'chevron-up' : 'chevron-down'
const noteText = symptom === 'note' ? data.value : data.note
@@ -166,73 +166,73 @@ class SymptomEditView extends Component {
- {symptom === 'temperature' &&
+ {symptom === 'temperature' && (
this.onSaveTemperature(value, field)}
/>
- }
- {shouldTabGroup && symtomPage[symptom].selectTabGroups.map(group => {
- return (
-
- {group.title}
- this.onSelectTab(group, value)}
- />
-
- )
- })
- }
- {shouldBoxGroup && symtomPage[symptom].selectBoxGroups.map(group => {
- const isOtherSelected =
- data['other'] !== null
- && data['other'] !== false
- && Object.keys(group.options).includes('other')
-
- return (
-
- {group.title}
- this.onSelectBox(value)}
- optionsState={data}
- />
- {isOtherSelected &&
- this.onSelectBoxNote(value)}
+ )}
+ {shouldTabGroup &&
+ symtomPage[symptom].selectTabGroups.map((group) => {
+ return (
+
+ {group.title}
+ this.onSelectTab(group, value)}
/>
- }
-
- )
- })
- }
- {shouldShowExclude &&
-
+
+ )
+ })}
+ {shouldBoxGroup &&
+ symtomPage[symptom].selectBoxGroups.map((group) => {
+ const isOtherSelected =
+ data['other'] !== null &&
+ data['other'] !== false &&
+ Object.keys(group.options).includes('other')
+
+ return (
+
+ {group.title}
+ this.onSelectBox(value)}
+ optionsState={data}
+ />
+ {isOtherSelected && (
+ this.onSelectBoxNote(value)}
+ />
+ )}
+
+ )
+ })}
+ {shouldShowExclude && (
+
- }
- {shouldShowNote &&
-
+ )}
+ {shouldShowNote && (
+
{symtomPage[symptom].note}
- }
+ )}
- {shouldShowInfo &&
-
+ {shouldShowInfo && (
+
{info[symptom].text}
- }
+ )}
)
@@ -257,7 +257,7 @@ class SymptomEditView extends Component {
const styles = StyleSheet.create({
buttonsContainer: {
- ...Containers.rowContainer
+ ...Containers.rowContainer,
},
headerContainer: {
flexDirection: 'row',
@@ -275,23 +275,20 @@ const styles = StyleSheet.create({
marginVertical: Sizes.huge * 2,
position: 'absolute',
minHeight: '40%',
- maxHeight: Dimensions.get('window').height * 0.7
+ maxHeight: Dimensions.get('window').height * 0.7,
},
segmentBorder: {
- borderBottomColor: Colors.greyLight
+ borderBottomColor: Colors.greyLight,
},
title: {
- fontSize: Sizes.subtitle
- }
+ fontSize: Sizes.subtitle,
+ },
})
const mapStateToProps = (state) => {
- return({
+ return {
date: getDate(state),
- })
+ }
}
-export default connect(
- mapStateToProps,
- null,
-)(SymptomEditView)
+export default connect(mapStateToProps, null)(SymptomEditView)
diff --git a/components/cycle-day/temperature.js b/components/cycle-day/temperature.js
index 6f87d53..af1e99e 100644
--- a/components/cycle-day/temperature.js
+++ b/components/cycle-day/temperature.js
@@ -1,4 +1,4 @@
-import React, { Component } from 'react'
+import React, { useEffect, useState } from 'react'
import { Platform, StyleSheet, View } from 'react-native'
import PropTypes from 'prop-types'
import { Keyboard } from 'react-native'
@@ -11,154 +11,121 @@ import Segment from '../common/segment'
import { connect } from 'react-redux'
import { getDate } from '../../slices/date'
-import { isTemperatureOutOfRange, isPreviousTemperature } from '../helpers/cycle-day'
+import {
+ getTemperatureOutOfRangeMessage,
+ getPreviousTemperature,
+ formatTemperature,
+} from '../helpers/cycle-day'
import { temperature as labels } from '../../i18n/en/cycle-day'
import { Colors, Containers, Sizes, Spacing } from '../../styles'
-const formatTemperature = value => value === null
- ? value
- : Number.parseFloat(value).toFixed(2)
+const Temperature = ({ data, date, save }) => {
+ const [isTimePickerVisible, setIsTimePickerVisible] = useState(false)
+ const [temperature, setTemperature] = useState(
+ formatTemperature(data.value) || getPreviousTemperature(date)
+ )
-class Temperature extends Component {
-
- static propTypes = {
- data: PropTypes.object,
- date: PropTypes.string.isRequired,
- save: PropTypes.func
- }
-
- constructor(props) {
- super(props)
-
- const { data, date } = this.props
- const { value } = data
- const { shouldShowSuggestion, suggestedTemperature } =
- isPreviousTemperature(date)
-
- this.state = {
- isTimePickerVisible: false,
- shouldShowSuggestion,
- suggestedTemperature: formatTemperature(suggestedTemperature),
- value: formatTemperature(value)
+ // update state in parent component once to ensure
+ // that pre-filled values are saved on button click
+ useEffect(() => {
+ if (temperature) {
+ save(temperature, 'value')
}
+ }, [])
+
+ function onChangeTemperature(value) {
+ const formattedValue = value.replace(',', '.').trim()
+ if (!Number(formattedValue) && value !== '') return false
+ setTemperature(formattedValue)
}
- onCancelTimePicker = () => {
- this.setState({ isTimePickerVisible: false })
- }
-
- onChangeTemperature = (value) => {
- if (!Number(value)) return false
-
- this.setState({
- value: value.trim(),
- shouldShowSuggestion: false
- })
- }
-
- onShowTimePicker = () => {
+ function onShowTimePicker() {
Keyboard.dismiss()
- this.setState({ isTimePickerVisible: true })
+ setIsTimePickerVisible(true)
}
- setTemperature = () => {
- const { value } = this.state
- this.props.save(value, 'value')
- }
-
- setTime = (jsDate) => {
+ function setTime(jsDate) {
const time = moment(jsDate).format('HH:mm')
- const isTimePickerVisible = false
- this.props.save(time, 'time')
- this.setState({ isTimePickerVisible })
+ save(time, 'time')
+ setIsTimePickerVisible(false)
}
- render() {
- const { shouldShowSuggestion, suggestedTemperature, value } = this.state
- const { time } = this.props.data
+ const { time } = data
- const inputStyle = (shouldShowSuggestion && value === null)
- ? { color: Colors.grey }
- : {color: Colors.greyDark}
- const outOfRangeWarning = isTemperatureOutOfRange(value)
- let temperatureToShow = null
+ const inputStyle = { color: Colors.greyDark }
+ const outOfRangeWarning = getTemperatureOutOfRangeMessage(temperature)
- if (value) {
- temperatureToShow = value
- } else if (shouldShowSuggestion) {
- temperatureToShow = suggestedTemperature
- }
-
- return (
-
-
- {labels.temperature.explainer}
-
-
- °C
-
- { outOfRangeWarning !== null &&
-
- {outOfRangeWarning}
-
- }
-
-
- {labels.time}
+ return (
+
+
+ {labels.temperature.explainer}
+
save(temperature, 'value')}
+ keyboardType="numeric"
+ maxLength={5}
+ style={inputStyle}
+ testID="temperatureInput"
+ underlineColorAndroid="transparent"
/>
-
-
-
- )
- }
+ °C
+
+ {!!outOfRangeWarning && (
+
+ {outOfRangeWarning}
+
+ )}
+
+
+ {labels.time}
+
+ setIsTimePickerVisible(false)}
+ display={Platform.OS === 'ios' ? 'spinner' : 'default'}
+ />
+
+
+ )
}
const styles = StyleSheet.create({
container: {
- ...Containers.rowContainer
+ ...Containers.rowContainer,
},
hint: {
fontStyle: 'italic',
- fontSize: Sizes.small
+ fontSize: Sizes.small,
},
hintContainer: {
- marginVertical: Spacing.tiny
+ marginVertical: Spacing.tiny,
},
title: {
- fontSize: Sizes.subtitle
- }
+ fontSize: Sizes.subtitle,
+ },
})
-
-const mapStateToProps = (state) => {
- return({
- date: getDate(state),
- })
+Temperature.propTypes = {
+ data: PropTypes.object.isRequired,
+ date: PropTypes.string.isRequired,
+ save: PropTypes.func.isRequired,
}
-export default connect(
- mapStateToProps,
- null,
-)(Temperature)
+const mapStateToProps = (state) => {
+ return {
+ date: getDate(state),
+ }
+}
+
+export default connect(mapStateToProps, null)(Temperature)
diff --git a/components/helpers/cycle-day.js b/components/helpers/cycle-day.js
index 825d27d..9e1248f 100644
--- a/components/helpers/cycle-day.js
+++ b/components/helpers/cycle-day.js
@@ -1,6 +1,6 @@
import { ChronoUnit, LocalDate, LocalTime } from 'js-joda'
-import { getPreviousTemperature, saveSymptom } from '../../db'
+import { getPreviousTemperatureForDate, saveSymptom } from '../../db'
import { scaleObservable } from '../../local-storage'
import * as labels from '../../i18n/en/cycle-day'
@@ -23,39 +23,35 @@ const temperatureLabels = labels.temperature
const minutes = ChronoUnit.MINUTES
const isNumber = (value) => typeof value === 'number'
-export const shouldShow = (value) => value !== null ? true : false
+export const shouldShow = (value) => (value !== null ? true : false)
-export const isPreviousTemperature = (temperature) => {
- const previousTemperature = getPreviousTemperature(temperature)
- const shouldShowSuggestion = previousTemperature ? true : false
- const suggestedTemperature = previousTemperature ?
- previousTemperature.toString() : null
+export const formatTemperature = (temperature) =>
+ !temperature
+ ? temperature
+ : Number.parseFloat(temperature.toString()).toFixed(2)
- return { shouldShowSuggestion, suggestedTemperature }
+export const getPreviousTemperature = (date) => {
+ const previousTemperature = getPreviousTemperatureForDate(date)
+ return formatTemperature(previousTemperature)
}
-export const isTemperatureOutOfRange = (temperature) => {
+export const getTemperatureOutOfRangeMessage = (temperature) => {
if (!temperature) return null
const value = Number(temperature)
- const range = { min: TEMP_MIN, max: TEMP_MAX }
const scale = scaleObservable.value
- let warningMsg = null
-
- if (value < range.min || value > range.max) {
- warningMsg = labels.temperature.outOfAbsoluteRangeWarning
- } else if (value < scale.min || value > scale.max) {
- warningMsg = labels.temperature.outOfRangeWarning
- }
-
- return warningMsg
+ return value < TEMP_MIN || value > TEMP_MAX
+ ? labels.temperature.outOfAbsoluteRangeWarning
+ : value < scale.min || value > scale.max
+ ? labels.temperature.outOfRangeWarning
+ : ''
}
export const blank = {
bleeding: {
exclude: false,
- value: null
+ value: null,
},
cervix: {
exclude: false,
@@ -64,9 +60,9 @@ export const blank = {
position: null,
},
desire: {
- value: null
+ value: null,
},
- mood:{
+ mood: {
happy: null,
sad: null,
stressed: null,
@@ -77,16 +73,16 @@ export const blank = {
fatigue: null,
angry: null,
other: null,
- note: null
+ note: null,
},
mucus: {
exclude: false,
feeling: null,
texture: null,
- value: null
+ value: null,
},
note: {
- value: null
+ value: null,
},
pain: {
cramps: null,
@@ -97,7 +93,7 @@ export const blank = {
tenderBreasts: null,
migraine: null,
other: null,
- note: null
+ note: null,
},
sex: {
solo: null,
@@ -111,14 +107,14 @@ export const blank = {
diaphragm: null,
none: null,
other: null,
- note: null
+ note: null,
},
temperature: {
exclude: false,
note: null,
time: LocalTime.now().truncatedTo(minutes).toString(),
- value: null
- }
+ value: null,
+ },
}
export const symtomPage = {
@@ -126,11 +122,13 @@ export const symtomPage = {
excludeText: labels.bleeding.exclude.explainer,
note: null,
selectBoxGroups: null,
- selectTabGroups: [{
- key: 'value',
- options: getLabelsList(bleedingLabels),
- title: labels.bleeding.heaviness.explainer,
- }]
+ selectTabGroups: [
+ {
+ key: 'value',
+ options: getLabelsList(bleedingLabels),
+ title: labels.bleeding.heaviness.explainer,
+ },
+ ],
},
cervix: {
excludeText: cervixLabels.excludeExplainer,
@@ -151,18 +149,20 @@ export const symtomPage = {
key: 'position',
options: getLabelsList(cervixLabels.position.categories),
title: cervixLabels.position.explainer,
- }
- ]
+ },
+ ],
},
desire: {
excludeText: null,
note: null,
selectBoxGroups: null,
- selectTabGroups: [{
- key: 'value',
- options: getLabelsList(intensityLabels),
- title: labels.desire.explainer
- }]
+ selectTabGroups: [
+ {
+ key: 'value',
+ options: getLabelsList(intensityLabels),
+ title: labels.desire.explainer,
+ },
+ ],
},
mucus: {
excludeText: mucusLabels.excludeExplainer,
@@ -178,34 +178,38 @@ export const symtomPage = {
key: 'texture',
options: getLabelsList(mucusLabels.texture.categories),
title: mucusLabels.texture.explainer,
- }
- ]
+ },
+ ],
},
mood: {
excludeText: null,
note: null,
- selectBoxGroups: [{
- key: 'mood',
- options: moodLabels,
- title: labels.mood.explainer
- }],
- selectTabGroups: null
+ selectBoxGroups: [
+ {
+ key: 'mood',
+ options: moodLabels,
+ title: labels.mood.explainer,
+ },
+ ],
+ selectTabGroups: null,
},
note: {
excludeText: null,
note: noteDescription,
selectBoxGroups: null,
- selectTabGroups: null
+ selectTabGroups: null,
},
pain: {
excludeText: null,
note: null,
- selectBoxGroups: [{
- key: 'pain',
- options: painLabels,
- title: labels.pain.explainer
- }],
- selectTabGroups: null
+ selectBoxGroups: [
+ {
+ key: 'pain',
+ options: painLabels,
+ title: labels.pain.explainer,
+ },
+ ],
+ selectTabGroups: null,
},
sex: {
excludeText: null,
@@ -220,40 +224,42 @@ export const symtomPage = {
key: 'contraceptives',
options: contraceptiveLabels,
title: labels.contraceptives.explainer,
- }
+ },
],
- selectTabGroups: null
+ selectTabGroups: null,
},
temperature: {
excludeText: temperatureLabels.exclude.explainer,
note: temperatureLabels.note.explainer,
selectBoxGroups: null,
- selectTabGroups: null
- }
+ selectTabGroups: null,
+ },
}
export const save = {
bleeding: (data, date, shouldDeleteData) => {
const { exclude, value } = data
const isDataEntered = isNumber(value)
- const valuesToSave = shouldDeleteData || !isDataEntered
- ? null : { value, exclude }
+ const valuesToSave =
+ shouldDeleteData || !isDataEntered ? null : { value, exclude }
saveSymptom('bleeding', date, valuesToSave)
},
cervix: (data, date, shouldDeleteData) => {
const { opening, firmness, position, exclude } = data
- const isDataEntered = ['opening', 'firmness', 'position'].some(
- value => isNumber(data[value]))
- const valuesToSave = shouldDeleteData || !isDataEntered
- ? null : { opening, firmness, position, exclude }
+ const isDataEntered = ['opening', 'firmness', 'position'].some((value) =>
+ isNumber(data[value])
+ )
+ const valuesToSave =
+ shouldDeleteData || !isDataEntered
+ ? null
+ : { opening, firmness, position, exclude }
saveSymptom('cervix', date, valuesToSave)
},
desire: (data, date, shouldDeleteData) => {
const { value } = data
- const valuesToSave = shouldDeleteData || !isNumber(value)
- ? null : { value }
+ const valuesToSave = shouldDeleteData || !isNumber(value) ? null : { value }
saveSymptom('desire', date, valuesToSave)
},
@@ -262,11 +268,18 @@ export const save = {
},
mucus: (data, date, shouldDeleteData) => {
const { feeling, texture, exclude } = data
- const isDataEntered = ['feeling', 'texture'].some(
- value => isNumber(data[value]))
- const valuesToSave = shouldDeleteData || !isDataEntered
- ? null
- : { feeling, texture, value: computeNfpValue(feeling, texture), exclude }
+ const isDataEntered = ['feeling', 'texture'].some((value) =>
+ isNumber(data[value])
+ )
+ const valuesToSave =
+ shouldDeleteData || !isDataEntered
+ ? null
+ : {
+ feeling,
+ texture,
+ value: computeNfpValue(feeling, texture),
+ exclude,
+ }
saveSymptom('mucus', date, valuesToSave)
},
@@ -289,21 +302,20 @@ export const save = {
exclude,
note,
time,
- value: Number(value)
+ value: Number(value),
}
saveSymptom(
'temperature',
date,
- (shouldDeleteData || value === null) ? null : valuesToSave
+ shouldDeleteData || value === null ? null : valuesToSave
)
- }
+ },
}
const saveBoxSymptom = (data, date, shouldDeleteData, symptom) => {
- const isDataEntered = Object.keys(data).some(key => data[key] !== null)
- const valuesToSave = shouldDeleteData || !isDataEntered
- ? null : data
+ const isDataEntered = Object.keys(data).some((key) => data[key] !== null)
+ const valuesToSave = shouldDeleteData || !isDataEntered ? null : data
saveSymptom(symptom, date, valuesToSave)
}
@@ -327,46 +339,59 @@ const label = {
return temperatureLabel
}
},
- mucus: mucus => {
- const filledCategories = ['feeling', 'texture'].filter(c => isNumber(mucus[c]))
- let label = filledCategories.map(category => {
- return labels.mucus.subcategories[category] + ': ' + labels.mucus[category].categories[mucus[category]]
- }).join(', ')
+ mucus: (mucus) => {
+ const filledCategories = ['feeling', 'texture'].filter((c) =>
+ isNumber(mucus[c])
+ )
+ let label = filledCategories
+ .map((category) => {
+ return (
+ labels.mucus.subcategories[category] +
+ ': ' +
+ labels.mucus[category].categories[mucus[category]]
+ )
+ })
+ .join(', ')
if (isNumber(mucus.value)) label += `\n => ${labels.mucusNFP[mucus.value]}`
if (mucus.exclude) label = `(${label})`
return label
},
- cervix: cervix => {
- const filledCategories = ['opening', 'firmness', 'position'].filter(c => isNumber(cervix[c]))
- let label = filledCategories.map(category => {
- return labels.cervix.subcategories[category] + ': ' + labels.cervix[category].categories[cervix[category]]
- }).join(', ')
+ cervix: (cervix) => {
+ const filledCategories = ['opening', 'firmness', 'position'].filter((c) =>
+ isNumber(cervix[c])
+ )
+ let label = filledCategories
+ .map((category) => {
+ return (
+ labels.cervix.subcategories[category] +
+ ': ' +
+ labels.cervix[category].categories[cervix[category]]
+ )
+ })
+ .join(', ')
if (cervix.exclude) label = `(${label})`
return label
},
- note: note => note.value,
+ note: (note) => note.value,
desire: ({ value }) => {
if (isNumber(value)) {
return intensityLabels[value]
}
},
- sex: sex => {
+ sex: (sex) => {
const sexLabel = []
- if (sex && Object.values({...sex}).some(val => val)){
- Object.keys(sex).forEach(key => {
- if(sex[key] && key !== 'other' && key !== 'note') {
- sexLabel.push(
- sexLabels[key] ||
- contraceptiveLabels[key]
- )
+ if (sex && Object.values({ ...sex }).some((val) => val)) {
+ Object.keys(sex).forEach((key) => {
+ if (sex[key] && key !== 'other' && key !== 'note') {
+ sexLabel.push(sexLabels[key] || contraceptiveLabels[key])
}
- if(key === 'other' && sex.other) {
+ if (key === 'other' && sex.other) {
let label = contraceptiveLabels[key]
- if(sex.note) {
+ if (sex.note) {
label = `${label} (${sex.note})`
}
sexLabel.push(label)
@@ -375,16 +400,16 @@ const label = {
return sexLabel.join(', ')
}
},
- pain: pain => {
+ pain: (pain) => {
const painLabel = []
- if (pain && Object.values({...pain}).some(val => val)){
- Object.keys(pain).forEach(key => {
- if(pain[key] && key !== 'other' && key !== 'note') {
+ if (pain && Object.values({ ...pain }).some((val) => val)) {
+ Object.keys(pain).forEach((key) => {
+ if (pain[key] && key !== 'other' && key !== 'note') {
painLabel.push(painLabels[key])
}
- if(key === 'other' && pain.other) {
+ if (key === 'other' && pain.other) {
let label = painLabels[key]
- if(pain.note) {
+ if (pain.note) {
label = `${label} (${pain.note})`
}
painLabel.push(label)
@@ -393,16 +418,16 @@ const label = {
return painLabel.join(', ')
}
},
- mood: mood => {
+ mood: (mood) => {
const moodLabel = []
- if (mood && Object.values({...mood}).some(val => val)){
- Object.keys(mood).forEach(key => {
- if(mood[key] && key !== 'other' && key !== 'note') {
+ if (mood && Object.values({ ...mood }).some((val) => val)) {
+ Object.keys(mood).forEach((key) => {
+ if (mood[key] && key !== 'other' && key !== 'note') {
moodLabel.push(moodLabels[key])
}
- if(key === 'other' && mood.other) {
+ if (key === 'other' && mood.other) {
let label = moodLabels[key]
- if(mood.note) {
+ if (mood.note) {
label = `${label} (${mood.note})`
}
moodLabel.push(label)
@@ -410,7 +435,7 @@ const label = {
})
return moodLabel.join(', ')
}
- }
+ },
}
export const getData = (symptom, symptomData) => {
diff --git a/db/index.js b/db/index.js
index f1ab4a4..d721a64 100644
--- a/db/index.js
+++ b/db/index.js
@@ -11,7 +11,7 @@ let db
let checkIsMensesStart
let getMensesDaysRightAfter
-export async function openDb (hash) {
+export async function openDb(hash) {
const realmConfig = {}
if (hash) {
realmConfig.encryptionKey = hashToInt8Array(hash)
@@ -22,7 +22,7 @@ export async function openDb (hash) {
let tempConnection
try {
tempConnection = await Realm.open(realmConfig)
- } catch(err) {
+ } catch (err) {
const isErrorDecrypting = err.toString().includes('decrypt')
const isErrorMnemonic = err.toString().includes('Invalid mnemonic')
// tried to open without password, but is encrypted or incorrect pwd
@@ -36,20 +36,16 @@ export async function openDb (hash) {
let nextSchemaIndex = Realm.schemaVersion(Realm.defaultPath)
tempConnection.close()
while (nextSchemaIndex < schemas.length - 1) {
- const tempConfig = Object.assign(
- realmConfig,
- schemas[nextSchemaIndex++]
- )
+ const tempConfig = Object.assign(realmConfig, schemas[nextSchemaIndex++])
const migratedRealm = new Realm(tempConfig)
migratedRealm.close()
}
// open the Realm with the latest schema
realmConfig.schema = schemas[schemas.length - 1]
- const connection = await Realm.open(Object.assign(
- realmConfig,
- schemas[schemas.length - 1]
- ))
+ const connection = await Realm.open(
+ Object.assign(realmConfig, schemas[schemas.length - 1])
+ )
db = connection
const cycle = cycleModule()
@@ -63,17 +59,26 @@ export function closeDb() {
}
export function getBleedingDaysSortedByDate() {
- return db.objects('CycleDay').filtered('bleeding != null').sorted('date', true)
+ return db
+ .objects('CycleDay')
+ .filtered('bleeding != null')
+ .sorted('date', true)
}
export function getTemperatureDaysSortedByDate() {
- return db.objects('CycleDay').filtered('temperature != null').sorted('date', true)
+ return db
+ .objects('CycleDay')
+ .filtered('temperature != null')
+ .sorted('date', true)
}
export function getCycleDaysSortedByDate() {
return db.objects('CycleDay').sorted('date', true)
}
export function getCycleStartsSortedByDate() {
- return db.objects('CycleDay').filtered('isCycleStart = true').sorted('date', true)
+ return db
+ .objects('CycleDay')
+ .filtered('isCycleStart = true')
+ .sorted('date', true)
}
export function saveSymptom(symptom, date, val) {
let cycleDay = getCycleDay(date)
@@ -83,7 +88,10 @@ export function saveSymptom(symptom, date, val) {
if (symptom === 'bleeding') {
const mensesDaysAfter = getMensesDaysRightAfter(cycleDay)
maybeSetNewCycleStart({
- val, cycleDay, mensesDaysAfter, checkIsMensesStart
+ val,
+ cycleDay,
+ mensesDaysAfter,
+ checkIsMensesStart,
})
} else {
cycleDay[symptom] = val
@@ -93,7 +101,7 @@ export function saveSymptom(symptom, date, val) {
export function updateCycleStartsForAllCycleDays() {
db.write(() => {
- getBleedingDaysSortedByDate().forEach(day => {
+ getBleedingDaysSortedByDate().forEach((day) => {
if (checkIsMensesStart(day)) {
day.isCycleStart = true
}
@@ -106,7 +114,7 @@ export function createCycleDay(dateString) {
db.write(() => {
result = db.create('CycleDay', {
date: dateString,
- isCycleStart: false
+ isCycleStart: false,
})
})
return result
@@ -116,9 +124,9 @@ export function getCycleDay(dateString) {
return db.objectForPrimaryKey('CycleDay', dateString)
}
-export function getPreviousTemperature(date) {
+export function getPreviousTemperatureForDate(date) {
const targetDate = LocalDate.parse(date)
- const winner = getTemperatureDaysSortedByDate().find(candidate => {
+ const winner = getTemperatureDaysSortedByDate().find((candidate) => {
return LocalDate.parse(candidate.date).isBefore(targetDate)
})
if (!winner) return null
@@ -171,10 +179,13 @@ export function tryToImportWithoutDelete(cycleDays) {
}
export function requestHash(type, pw) {
- nodejs.channel.post('request-SHA512', JSON.stringify({
- type: type,
- message: pw
- }))
+ nodejs.channel.post(
+ 'request-SHA512',
+ JSON.stringify({
+ type: type,
+ message: pw,
+ })
+ )
}
export async function changeEncryptionAndRestartApp(hash) {
@@ -199,7 +210,7 @@ export async function changeEncryptionAndRestartApp(hash) {
restart.Restart()
}
-export function isDbEmpty () {
+export function isDbEmpty() {
return db.empty
}