import { View, ScrollView, Swiper, SwiperItem, Image } from "@tarojs/components";
import './Clock.scss'
import { useEffect, useRef, useState } from "react";
import TabBar from "@/components/navigation/TabBar";
import { compareVersion, getTimezone, 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 { getLatestJournal, windows } from "@/services/health";
import { useDispatch, useSelector } from "react-redux";
import health, { setActiveArchived, setActiveArchivedTotal, setActiveTip, setEatArchived, setEatArchivedTotal, setEatTip, setFastWithSleep, setFinishSetup, setLongFast, setRefreshs, setTitle, setWindows } from "@/store/health";
import dayjs from "dayjs";
import { MainColorType } from "@/context/themes/color";
import NewButton, { NewButtonType } from "@/_health/base/new_button";
import { getThemeColor } from "@/features/health/hooks/health_hooks";
import StatusIndicator, { StatusType } from "@/_health/base/status_indicator";
import { useTranslation } from "react-i18next";
import StickyDateList from "@/_health/components/sticky_date_list";
import NoData from "@/_health/components/no_data";
import Taro, { useDidShow } from "@tarojs/taro";
import { IconClose } from "@/components/basic/Icons";
import showAlert from "@/components/basic/Alert";
import { jumpPage } from "@/features/trackTimeDuration/hooks/Common";
let AppState;
if (process.env.TARO_ENV == 'rn') {
AppState = require("react-native").AppState
}
export default function ClockNew(props: { children: any, onScroll: any }) {
const [count, setCount] = useState(0)
const [loaded, setLoaded] = useState(false)
const [showRetry, setShowRetry] = useState(false)
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 [needShowAddTip, setNeedShowAddTip] = useState(false)
const [reminderAdd, setReminderAdd] = useState(true)
const [showDate, setShowDate] = useState(false)
const [date, setDate] = useState('')
const [isPulling, setIsPulling] = useState(false)
const healthRef = useRef(health)
const historyRef2 = useRef()
const dispatch = useDispatch();
const { t } = useTranslation()
global.dispatch = dispatch;
const handleAppStateChange = (nextAppState) => {
if (nextAppState != 'active') {
return
}
if (nextAppState == 'active') {
checkTimeZone()
refreshData()
}
};
useDidShow(() => {
if (process.env.TARO_ENV == 'weapp') {
checkTimeZone()
}
setTimeout(() => {
checkVersionUpdate();
}, 1000)
})
function refreshData() {
global.refreshWindow()
global.refreshHistory()
}
function checkTimeZone() {
if (!user.isLogin) return
var timeZoneFormatted = getTimezone()
Taro.getStorage({
key: 'last_tz',
success: function (res) {
if (res.data && res.data != timeZoneFormatted) {
showAlert({
title: t('feature.track_time_duration.change_tz_alert.title'),
content: t('feature.track_time_duration.change_tz_alert.content', { tz: timeZoneFormatted }),
showCancel: false,
confirmText: t('feature.track_time_duration.change_tz_alert.confirm'),
})
// }
}
},
complete: function () {
Taro.setStorage({ key: 'last_tz', data: timeZoneFormatted })
}
})
}
useEffect(() => {
healthRef.current = health;
}, [health])
// useEffect(() => {
// archived()
// }, [health.mode])
useEffect(() => {
if (process.env.TARO_ENV == 'rn') {
AppState.addEventListener('change', handleAppStateChange);
}
Taro.onAppShow(() => {
refreshData()
})
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()
if (global.refreshHistory) {
global.refreshHistory()
}
}
})
}, 1000)
setTimeout(() => {
checkVersionUpdate();
}, 1500)
}, [])
useEffect(() => {
getWindows();
if (global.refreshHistory) {
global.refreshHistory()
}
}, [user.isLogin])
global.refreshWindow = () => {
getWindows();
}
function getWindows() {
checkAddToMini()
windows().then(res => {
setLoaded(true)
setShowRetry(false)
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))
dispatch(setFinishSetup((res as any).finish_setup))
setIsPulling(false)
}).catch(e => {
setShowRetry(true)
})
archived()
}
function archived() {
return
getLatestJournal(true, {
window: 'EAT',
}).then(res => {
if (!(res as any).user_confirmed && (res as any).id) {
global.eatTipId = (res as any).id
dispatch(setEatTip(true))
}
})
getLatestJournal(true, {
window: 'ACTIVE'
}).then(res => {
if (!(res as any).user_confirmed && (res as any).id) {
global.activeTipId = (res as any).id
dispatch(setActiveTip(true))
}
})
// if (health.mode == 'EAT' || health.mode == 'ACTIVE') {
// getLatestJournal(true, health.mode).then(res => {
// if (!(res as any).user_confirmed && (res as any).id) {
// if (health.mode == 'EAT') {
// // dispatch(setEatArchived((res as any).latest))
// // dispatch(setEatArchivedTotal((res as any).archived_total))
// dispatch(setEatTip(true))
// }
// else if (health.mode == 'ACTIVE') {
// dispatch(setActiveTip(true))
// // dispatch(setActiveArchived((res as any).latest))
// // dispatch(setActiveArchivedTotal((res as any).archived_total))
// }
// }
// })
// // getArchived(health.mode).then(res => {
// // if (health.mode == 'EAT') {
// // dispatch(setEatArchived((res as any).latest))
// // dispatch(setEatArchivedTotal((res as any).archived_total))
// // }
// // else if (health.mode == 'ACTIVE') {
// // dispatch(setActiveArchived((res as any).latest))
// // dispatch(setActiveArchivedTotal((res as any).archived_total))
// // }
// // })
// }
}
function checkAddToMini() {
if (process.env.TARO_ENV == 'weapp' && user.isLogin && reminderAdd) {
const version = Taro.getAppBaseInfo().SDKVersion
if (compareVersion(version, '2.30.3') >= 0) {
wx.checkIsAddedToMyMiniProgram({
success: (res) => {
if (!res.added) {
setNeedShowAddTip(true)
}
},
fail: (e) => {
}
});
}
}
}
async function checkVersionUpdate() {
if (!user.isLogin) {
return
}
const showAlert1 = await getStorage('148alert') || false;
Taro.setStorage({ key: '148alert', data: true })
console.log('test abc')
if (!showAlert1 && !health.finish_setup){
jumpPage('/_health/pages/guide_begin')
}
}
async function getStorage(key: string) {
try {
const res = await Taro.getStorage({ key });
return res.data;
} catch {
return '';
}
}
function tapScroll(index) {
setScrollLeft(rpxToPx(750) * index)
}
function scroll(e) {
console.log(e.detail.scrollLeft)
}
function pageChanged(index) {
}
function typeChanged(str) {
}
function pageTitle() {
switch (health.mode) {
case 'DAY':
return t('health.window_day')
case 'NIGHT':
return t('health.night')
case 'FAST':
return t('health.fast')
case 'EAT':
return t('health.eat')
case 'SLEEP':
return t('health.sleep')
case 'ACTIVE':
return t('health.active')
}
}
function detail() {
// return 11111
if (!health.windows) {
return
}
return {
global.refreshWindow()
setIsPulling(true)
if (global.refreshHistory) {
global.refreshHistory()
}
}}
loadMore={() => {
if (historyRef2) {
(historyRef2.current as any).more()
}
}}
onScroll={e => {
props.onScroll(e)
if (e.detail.scrollTop > 240) {
dispatch(setTitle(pageTitle()))
}
else {
dispatch(setTitle(''))
}
if (historyRef2) {
(historyRef2.current as any).onScroll(e)
}
}}
>
{
needShowAddTip && reminderAdd && {t('health.add_mini_guide_tip')}
{
setReminderAdd(false)
console.log('ssssss')
}}>
}
{
setShowDate(e.show)
setDate(e.date)
}} />
{
(health.mode == 'DAY' || health.mode == 'NIGHT') &&
}
{
props.children
}
}
//https://blog.csdn.net/weixin_43525284/article/details/130182218
if (!loaded && showRetry) return {
getWindows();
if (global.refreshHistory) {
global.refreshHistory()
}
}
} />
return
{
process.env.TARO_ENV == 'weapp' ? detail() : {
if (e.detail.scrollTop > 240) {
dispatch(setTitle(health.mode))
}
else {
dispatch(setTitle(''))
}
}}>
{
detail()
}
{
props.children()
}
}
{
process.env.TARO_ENV == 'weapp' &&
}
}