import React from 'react' import { ScrollView, StyleSheet, View } from 'react-native' import PropTypes from 'prop-types' import moment from 'moment' import { connect } from 'react-redux' import { navigate } from '../slices/navigation' import { getDate, setDate } from '../slices/date' import AppText from './common/app-text' import Button from './common/button' import cycleModule from '../lib/cycle' import { getFertilityStatusForDay } from '../lib/sympto-adapter' import { determinePredictionText, formatWithOrdinalSuffix, } from './helpers/home' import { Colors, Fonts, Sizes, Spacing } from '../styles' import { LocalDate } from '@js-joda/core' import { useTranslation } from 'react-i18next' const Home = ({ navigate, setDate }) => { const { t } = useTranslation() function navigateToCycleDayView() { setDate(todayDateString) navigate('CycleDay') } const todayDateString = LocalDate.now().toString() const { getCycleDayNumber, getPredictedMenses } = cycleModule() const cycleDayNumber = getCycleDayNumber(todayDateString) const { status, phase, statusText } = getFertilityStatusForDay(todayDateString) const prediction = determinePredictionText(getPredictedMenses(), t) const cycleDayText = cycleDayNumber ? formatWithOrdinalSuffix(cycleDayNumber) : '' return ( {moment().format('MMM Do YYYY')} {cycleDayNumber && ( {cycleDayText} {t('labels.home.cycleDay')} )} {phase && ( {formatWithOrdinalSuffix(phase)} {t('labels.home.cyclePhase')} {status} )} {prediction} {phase && ( {statusText} )} ) } const Asterisk = () => { return * } const styles = StyleSheet.create({ asterisk: { color: Colors.orange, }, container: { backgroundColor: Colors.purple, flex: 1, }, contentContainer: { padding: Spacing.base, paddingTop: 0, }, line: { flexDirection: 'row', flexWrap: 'wrap', alignContent: 'flex-start', marginBottom: Spacing.tiny, marginTop: Spacing.small, }, asteriskLine: { flexDirection: 'row', alignContent: 'flex-start', marginBottom: Spacing.tiny, marginTop: Spacing.small, }, title: { color: Colors.purpleLight, fontFamily: Fonts.bold, fontSize: Sizes.huge, marginVertical: Spacing.small, }, turquoiseText: { color: Colors.turquoise, fontSize: Sizes.subtitle, }, whiteSubtitle: { color: 'white', fontSize: Sizes.subtitle, }, whiteText: { color: 'white', }, greyText: { color: Colors.greyLight, paddingLeft: Spacing.base, }, }) const mapStateToProps = (state) => { return { date: getDate(state), } } const mapDispatchToProps = (dispatch) => { return { navigate: (page) => dispatch(navigate(page)), setDate: (date) => dispatch(setDate(date)), } } Home.propTypes = { navigate: PropTypes.func, setDate: PropTypes.func, } export default connect(mapStateToProps, mapDispatchToProps)(Home)