import { View, ScrollView, Swiper, SwiperItem } from "@tarojs/components"; import './Clock.scss' import { useEffect, useRef, useState } from "react"; import MainDayNightCard from "@/features/health/MainDayNightCard"; import MainFastEatCard from "@/features/health/MainFastEatCard"; import MainSleepActiveCard from "@/features/health/MainSleepActiveCard"; import TabBar from "@/components/navigation/TabBar"; import { rpxToPx } from "@/utils/tools"; import MainSwiper from "@/features/health/MainSwiper"; import MainConsole from "@/features/health/MainConsole"; import MainHistory from "@/features/health/MainHistory"; import { WindowType } from "@/utils/types"; import { getArchived, windows } from "@/services/health"; import { useDispatch, useSelector } from "react-redux"; import health, { setEatArchived, setFastWithSleep, setLongFast, setRefreshs, setTitle, setWindows } from "@/store/health"; import dayjs from "dayjs"; import Modal from "@/components/layout/Modal.weapp"; import Streak from "@/features/health/Streak"; import Calendar from "@/features/health/calendar"; import { MainColorType } from "@/context/themes/color"; import NewButton, { NewButtonType } from "@/_health/base/new_button"; import { getThemeColor } from "@/features/health/hooks/health_hooks"; export default function ClockNew() { const [count, setCount] = useState(0) const [scrollLeft, setScrollLeft] = useState(rpxToPx(750) * 0) const user = useSelector((state: any) => state.user); const health = useSelector((state: any) => state.health); const [type, setType] = useState(WindowType.day) const [showCalendar, setShowCalendar] = useState(false) const [isPulling,setIsPulling] = useState(false) const healthRef = useRef(health) const dispatch = useDispatch(); global.dispatch = dispatch; useEffect(() => { healthRef.current = health; }, [health]) useEffect(() => { archived() }, [health.mode]) useEffect(() => { setInterval(() => { setCount(index => index + 1) healthRef.current.refreshs.map((item) => { const strTime = dayjs(item).format('YYYY-MM-DDTHH:mm:ss') const now = dayjs().format('YYYY-MM-DDTHH:mm:ss') if (strTime == now) { getWindows() // archived(); getArchived('EAT').then(res => { dispatch(setEatArchived((res as any).latest)) }) global.refreshHistory() } }) }, 1000) }, []) useEffect(() => { getWindows(); }, [user.isLogin]) global.refreshWindow = () => { getWindows(); archived(); } function getWindows() { windows().then(res => { if (!(res as any).windows.night_day.night.target) { var date = new Date() var hour = date.getHours() if (hour >= 6 && hour < 18) { var date1 = new Date() date1.setHours(6) date1.setMinutes(0) date1.setSeconds(0) var date2 = new Date() date2.setHours(18) date2.setMinutes(0) date2.setSeconds(0); (res as any).windows.night_day.day.target = { start_timestamp: date1.getTime(), end_timestamp: date2.getTime(), duration: 12 * 60 * 60 * 1000 }; (res as any).windows.night_day.night.target = { start_timestamp: date2.getTime(), end_timestamp: date2.getTime() + 12 * 60 * 60 * 1000, duration: 12 * 60 * 60 * 1000 } } else { var date1 = new Date() date1.setHours(18) date1.setMinutes(0) date1.setSeconds(0); (res as any).windows.night_day.day.target = { start_timestamp: date1.getTime(), end_timestamp: date1.getTime() + 12 * 60 * 60 * 1000, duration: 12 * 60 * 60 * 1000 }; (res as any).windows.night_day.night.target = { start_timestamp: date1.getTime() + 12 * 60 * 60 * 1000, end_timestamp: date1.getTime() + 12 * 60 * 60 * 1000 + 12 * 60 * 60 * 1000, duration: 12 * 60 * 60 * 1000 } } } dispatch(setFastWithSleep((res as any).fast_with_sleep)) dispatch(setWindows((res as any).windows)) dispatch(setLongFast((res as any).long_fast)) dispatch(setRefreshs((res as any).refresh_timestamps)) setIsPulling(false) }) archived() } function archived() { if (health.mode == 'EAT' || health.mode == 'ACTIVE') { getArchived(health.mode).then(res => { if (health.mode == 'EAT') { dispatch(setEatArchived((res as any).latest)) } }) } } function tapScroll(index) { setScrollLeft(rpxToPx(750) * index) } function scroll(e) { console.log(e.detail.scrollLeft) } function pageChanged(index) { } function typeChanged(str) { } function detail() { if (!health.windows) { return } return { global.refreshWindow() setIsPulling(true) }} refresherTriggered={isPulling} scrollY onScroll={e => { if (e.detail.scrollTop > 240) { dispatch(setTitle(health.mode)) } else { dispatch(setTitle('')) } }}> } //https://blog.csdn.net/weixin_43525284/article/details/130182218 return { process.env.TARO_ENV == 'weapp' ? detail() : { if (e.detail.scrollTop > 240) { dispatch(setTitle(health.mode)) } else { dispatch(setTitle('')) } }}> { detail() } } {/* tapScroll(0)}> tab 0 tapScroll(1)}>tab 1 tapScroll(2)}>tab 2 */} }