import { View, Text, ScrollView } from '@tarojs/components' import './Streaks.scss' import { rpxToPx } from '@/utils/tools' import { ColorType } from '@/context/themes/color' import { useTranslation } from 'react-i18next' import { jumpPage } from '../hooks/Common' import { useEffect, useState } from 'react' import { TimeFormatter } from '@/utils/time_format' import showAlert from '@/components/basic/Alert' let useNavigation; let LinearGradient; if (process.env.TARO_ENV == 'rn') { useNavigation = require("@react-navigation/native").useNavigation LinearGradient = require('react-native-linear-gradient').default } export default function StreakItem(props: { isFast: boolean, data: any }) { const { t } = useTranslation() const [left, setLeft] = useState(500) const [points, setPoints] = useState([false, false, false, false, false, false, false]) let navigation; if (useNavigation) { navigation = useNavigation() } useEffect(() => { if (props.data.current.num_days > 6) { var array = Array.from({ length: props.data.current.num_days }, () => true) array.push(false) setPoints(array) } else { let newPoints = [false, false, false, false, false, false, false] for (let i = 0; i < props.data.current.num_days; i++) { newPoints[i] = true } setPoints(newPoints) } setTimeout(() => { setLeft((prevCounter) => prevCounter + 1) }, 300) }, [props.data]) function goDetail() { jumpPage(`/pages/clock/StreakDetail?isFast=${props.isFast ? 1 : 0}&data=${JSON.stringify(props.data)}`, 'StreakDetail', navigation, { isFast: props.isFast ? 1 : 0, data: JSON.stringify(props.data) }) // jumpPage('/pages/clock/StreakDetail?isFast='+props.isFast+'&data=' + JSON.stringify(props.data), 'StreakDetail', navigation) } function day(num) { if (global.language == 'en') { return num == 1 ? 'day' : 'days' } return '天' } function nextStatus() { const { status } = props.data.current if (status == 'EXPIRED') { return t('feature.track_time_duration.streaks.last_reset') } else { return t('feature.track_time_duration.streaks.next_reset') } } function getTime() { const { status } = props.data.current var ts: any = null; switch (status) { case 'EXPIRED': ts = props.data.current.prev_reset_ts break; case 'ACTIVE': ts = props.data.current.reset_ts break; case 'NOT_DETERMINED': case 'HEADS_UP': return t('feature.track_time_duration.streaks.not_determined'); } var date = new Date(ts) var time = TimeFormatter.padZero(date.getHours()) + ':' + TimeFormatter.padZero(date.getMinutes()) if (TimeFormatter.dateDescription(ts, true) == 'Today') { return 'Tonight ' + time } if (TimeFormatter.dateDescription(ts, true) == '今天') { return '今晚 ' + time } return TimeFormatter.dateDescription(ts, true) + ' ' + time } function tapDetail() { showAlert({ title: t('feature.track_time_duration.streaks.alert_title'), content: t('feature.track_time_duration.streaks.alert_content'), showCancel: false, confirmText: t('feature.track_time_duration.streaks.alert_confirm') }) } function dayUnit(num) { if (global.language == 'en') { return num == 1 ? 'day' : 'days' } return '天' } return {props.isFast ? t('feature.track_time_duration.streaks.faststreak') : t('feature.track_time_duration.streaks.sleepstreak')} {/* */} {props.data.current.num_days} {dayUnit(props.data.current.num_days)} { props.data.current.num_days < 7 ? { points.map((item, index) => { return }) } : { points.map((item, index) => { return }) } } { process.env.TARO_ENV == 'weapp' ? : } {nextStatus()} { process.env.TARO_ENV == 'weapp' ?: } {getTime()} { props.data.current.status == 'ACTIVE' && {TimeFormatter.countdown(props.data.current.reset_ts)} } { props.data.current.status == 'HEADS_UP' && { if (process.env.TARO_ENV == 'weapp') e.stopPropagation() tapDetail() }}> {t('feature.track_time_duration.streaks.heads_up')} } {/* {t('feature.track_time_duration.streaks.current')} { props.data.current.num_days == 0 ? {props.data.current.num_days} : {props.data.current.num_days} } { props.data.current.num_days == 0 ? {day(props.data.current.num_days)} : {day(props.data.current.num_days)} } */} {/* {t('feature.track_time_duration.streaks.longest')} {props.data.longest.num_days} {day(props.data.longest.num_days)} */} }