|
@@ -8,7 +8,7 @@ import dayjs from "dayjs";
|
|
|
import moment from 'moment-timezone'
|
|
import moment from 'moment-timezone'
|
|
|
import { MainColorType } from "@/context/themes/color";
|
|
import { MainColorType } from "@/context/themes/color";
|
|
|
import { fastWindow, setSchedule, updateRecord } from "@/services/trackTimeDuration";
|
|
import { fastWindow, setSchedule, updateRecord } from "@/services/trackTimeDuration";
|
|
|
-import { useSelector } from "react-redux";
|
|
|
|
|
|
|
+import { useDispatch, useSelector } from "react-redux";
|
|
|
import { jumpPage } from "../trackTimeDuration/hooks/Common";
|
|
import { jumpPage } from "../trackTimeDuration/hooks/Common";
|
|
|
import ConsolePicker from "../trackTimeDuration/components/ConsolePicker";
|
|
import ConsolePicker from "../trackTimeDuration/components/ConsolePicker";
|
|
|
import { endFast, startFast } from "../trackTimeDuration/actions/TrackTimeActions";
|
|
import { endFast, startFast } from "../trackTimeDuration/actions/TrackTimeActions";
|
|
@@ -19,6 +19,8 @@ import showActionSheet from "@/components/basic/ActionSheet";
|
|
|
import { records } from "@/services/health";
|
|
import { records } from "@/services/health";
|
|
|
import MainHistory from "./MainHistory";
|
|
import MainHistory from "./MainHistory";
|
|
|
import { WindowType } from "@/utils/types";
|
|
import { WindowType } from "@/utils/types";
|
|
|
|
|
+import { isCurrentTimeInRange } from "./util";
|
|
|
|
|
+import { setMode } from "@/store/health";
|
|
|
let useNavigation;
|
|
let useNavigation;
|
|
|
|
|
|
|
|
let Linking, PushNotification;
|
|
let Linking, PushNotification;
|
|
@@ -55,11 +57,10 @@ export default function MainFastEatCard(props: { count: any, typeChanged: Functi
|
|
|
const [status, setStatus] = useState<any>('upcoming')
|
|
const [status, setStatus] = useState<any>('upcoming')
|
|
|
const [showPicker, setShowPicker] = useState(false)
|
|
const [showPicker, setShowPicker] = useState(false)
|
|
|
const [isStart, setIsStart] = useState(true)
|
|
const [isStart, setIsStart] = useState(true)
|
|
|
- const [loaded, setLoaded] = useState(false)
|
|
|
|
|
- const [eats, setEats] = useState<any>([])
|
|
|
|
|
- const [fasts, setFasts] = useState<any>([])
|
|
|
|
|
|
|
|
|
|
const user = useSelector((state: any) => state.user);
|
|
const user = useSelector((state: any) => state.user);
|
|
|
|
|
+ const health = useSelector((state: any) => state.health);
|
|
|
|
|
+ const dispatch = useDispatch()
|
|
|
|
|
|
|
|
let navigation, showActionSheetWithOptions;
|
|
let navigation, showActionSheetWithOptions;
|
|
|
if (useNavigation) {
|
|
if (useNavigation) {
|
|
@@ -68,34 +69,35 @@ export default function MainFastEatCard(props: { count: any, typeChanged: Functi
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
|
- fastWindow().then(res => {
|
|
|
|
|
- setLoaded(true)
|
|
|
|
|
- const { eat_win, fast_win } = res
|
|
|
|
|
- const fast = fast_win.fast
|
|
|
|
|
- setEatData(eat_win)
|
|
|
|
|
- setFastData(fast_win)
|
|
|
|
|
- setStartScheduleTime(fast_win.fast.schedule_start_time)
|
|
|
|
|
- setEndScheduleTime(fast_win.fast.schedule_end_time)
|
|
|
|
|
|
|
+ const { fast, eat } = health.windows.fast_eat
|
|
|
|
|
+ var now = new Date().getTime()
|
|
|
|
|
+ if ((fast.status == 'WAIT_FOR_END' || fast.target.start_time <= now && fast.target.end_time >= now) || isCurrentTimeInRange(fast.schedule.start_time, fast.schedule.end_time)) {
|
|
|
|
|
+ setIsFastMode(true)
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ setIsFastMode(false)
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- var now = new Date().getTime()
|
|
|
|
|
- if ((fast.status == 'WAIT_FOR_END' || fast.target_start_time <= now && fast.target_end_time >= now) ||
|
|
|
|
|
- isCurrentTimeInRange(fast.schedule_start_time, fast.schedule_end_time)) {
|
|
|
|
|
- setIsFastMode(true)
|
|
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
- setIsFastMode(false)
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ setEatData(eat)
|
|
|
|
|
+ setFastData(fast)
|
|
|
|
|
+ setStartScheduleTime(fast.schedule.start_time)
|
|
|
|
|
+ setEndScheduleTime(fast.schedule.end_time)
|
|
|
|
|
|
|
|
- update(fast)
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ update(fast)
|
|
|
}, [user.isLogin])
|
|
}, [user.isLogin])
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
useEffect(() => {
|
|
|
if (fastData) {
|
|
if (fastData) {
|
|
|
- update(fastData.fast)
|
|
|
|
|
|
|
+ update(fastData)
|
|
|
}
|
|
}
|
|
|
}, [props.count])
|
|
}, [props.count])
|
|
|
|
|
|
|
|
|
|
+ useEffect(() => {
|
|
|
|
|
+ if (health.selTab == 1) {
|
|
|
|
|
+ dispatch(setMode(isFastMode ? 'FAST' : 'EAT'))
|
|
|
|
|
+ }
|
|
|
|
|
+ }, [health.selTab,isFastMode])
|
|
|
|
|
+
|
|
|
|
|
|
|
|
global.refreshFastEat = () => {
|
|
global.refreshFastEat = () => {
|
|
|
refresh()
|
|
refresh()
|
|
@@ -109,8 +111,8 @@ export default function MainFastEatCard(props: { count: any, typeChanged: Functi
|
|
|
const fast = fast_win.fast
|
|
const fast = fast_win.fast
|
|
|
setEatData(eat_win)
|
|
setEatData(eat_win)
|
|
|
setFastData(fast_win)
|
|
setFastData(fast_win)
|
|
|
- setStartScheduleTime(fast_win.fast.schedule_start_time)
|
|
|
|
|
- setEndScheduleTime(fast_win.fast.schedule_end_time)
|
|
|
|
|
|
|
+ setStartScheduleTime(fast_win.fast.schedule.start_time)
|
|
|
|
|
+ setEndScheduleTime(fast_win.fast.schedule.end_time)
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -120,8 +122,8 @@ export default function MainFastEatCard(props: { count: any, typeChanged: Functi
|
|
|
if (fast.status == 'WAIT_FOR_END') {
|
|
if (fast.status == 'WAIT_FOR_END') {
|
|
|
setStatus('process')
|
|
setStatus('process')
|
|
|
}
|
|
}
|
|
|
- else if ((fast.target_start_time <= now && fast.target_end_time >= now) || isCurrentTimeInRange(fast.schedule_start_time, fast.schedule_end_time)) {
|
|
|
|
|
- setStartTime(fast.schedule_start_time)
|
|
|
|
|
|
|
+ else if ((fast.target.start_timestamp <= now && fast.target.end_timestamp >= now) || isCurrentTimeInRange(fast.schedule.start_time, fast.schedule.end_time)) {
|
|
|
|
|
+ setStartTime(fast.schedule.start_time)
|
|
|
setStatus('new')
|
|
setStatus('new')
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
@@ -178,10 +180,10 @@ export default function MainFastEatCard(props: { count: any, typeChanged: Functi
|
|
|
var durationArc = isFastMode ? fastCount / 1440 * 2 * Math.PI : eatCount / 1440 * 2 * Math.PI
|
|
var durationArc = isFastMode ? fastCount / 1440 * 2 * Math.PI : eatCount / 1440 * 2 * Math.PI
|
|
|
|
|
|
|
|
if (isFastMode) {
|
|
if (isFastMode) {
|
|
|
- var dt = new Date(fastData.fast.target_start_time)
|
|
|
|
|
|
|
+ var dt = new Date(fastData.target.start_time)
|
|
|
var realSeconds = dt.getHours() * 3600 + dt.getMinutes() * 60 + dt.getSeconds()
|
|
var realSeconds = dt.getHours() * 3600 + dt.getMinutes() * 60 + dt.getSeconds()
|
|
|
startArc = realSeconds / (1440 * 60) * 2 * Math.PI - Math.PI / 2
|
|
startArc = realSeconds / (1440 * 60) * 2 * Math.PI - Math.PI / 2
|
|
|
- durationArc = ((fastData.fast.target_end_time - fastData.fast.target_start_time) / 1000) / (1440 * 60) * 2 * Math.PI
|
|
|
|
|
|
|
+ durationArc = ((fastData.target.end_time - fastData.target.start_time) / 1000) / (1440 * 60) * 2 * Math.PI
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
return {
|
|
@@ -212,10 +214,10 @@ export default function MainFastEatCard(props: { count: any, typeChanged: Functi
|
|
|
var durationArc = fastCount / (1440 * 60) * 2 * Math.PI
|
|
var durationArc = fastCount / (1440 * 60) * 2 * Math.PI
|
|
|
|
|
|
|
|
if (status == 'process') {
|
|
if (status == 'process') {
|
|
|
- var dt = new Date(fastData.fast.target_start_time)
|
|
|
|
|
|
|
+ var dt = new Date(fastData.target.start_time)
|
|
|
var realSeconds = dt.getHours() * 3600 + dt.getMinutes() * 60 + dt.getSeconds()
|
|
var realSeconds = dt.getHours() * 3600 + dt.getMinutes() * 60 + dt.getSeconds()
|
|
|
startArc = realSeconds / (1440 * 60) * 2 * Math.PI - Math.PI / 2
|
|
startArc = realSeconds / (1440 * 60) * 2 * Math.PI - Math.PI / 2
|
|
|
- durationArc = ((new Date().getTime() - fastData.fast.target_start_time) / 1000) / (1440 * 60) * 2 * Math.PI
|
|
|
|
|
|
|
+ durationArc = ((new Date().getTime() - fastData.target.start_time) / 1000) / (1440 * 60) * 2 * Math.PI
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return {
|
|
return {
|
|
@@ -250,25 +252,7 @@ export default function MainFastEatCard(props: { count: any, typeChanged: Functi
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- function isCurrentTimeInRange(start, end) {
|
|
|
|
|
- // 获取当前时间
|
|
|
|
|
- const now = new Date();
|
|
|
|
|
- const currentTime = now.getHours() * 60 + now.getMinutes(); // 当前时间转换为分钟
|
|
|
|
|
-
|
|
|
|
|
- // 将时间点转换为分钟
|
|
|
|
|
- const [startHour, startMinute] = start.split(':').map(Number);
|
|
|
|
|
- const [endHour, endMinute] = end.split(':').map(Number);
|
|
|
|
|
- const startTime = startHour * 60 + startMinute; // 开始时间转换为分钟
|
|
|
|
|
- const endTime = endHour * 60 + endMinute; // 结束时间转换为分钟
|
|
|
|
|
|
|
|
|
|
- // 处理跨日的情况
|
|
|
|
|
- if (endTime < startTime) {
|
|
|
|
|
- return currentTime >= startTime || currentTime <= endTime;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 判断当前时间是否在范围内
|
|
|
|
|
- return currentTime >= startTime && currentTime <= endTime;
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
function getTimeToDestination(timeStr, isPasted) {
|
|
function getTimeToDestination(timeStr, isPasted) {
|
|
|
// 获取当前时间
|
|
// 获取当前时间
|
|
@@ -366,12 +350,12 @@ export default function MainFastEatCard(props: { count: any, typeChanged: Functi
|
|
|
|
|
|
|
|
switch (status) {
|
|
switch (status) {
|
|
|
case 'process':
|
|
case 'process':
|
|
|
- milliSeconds = new Date().getTime() - fastData.fast.real_start_time
|
|
|
|
|
|
|
+ milliSeconds = new Date().getTime() - fastData.real_start_time
|
|
|
break;
|
|
break;
|
|
|
case 'new':
|
|
case 'new':
|
|
|
- return getTimeToDestination(fastData.fast.schedule_start_time, true)
|
|
|
|
|
|
|
+ return getTimeToDestination(fastData.schedule.start_time, true)
|
|
|
case 'upcoming':
|
|
case 'upcoming':
|
|
|
- return getTimeToDestination(fastData.fast.schedule_start_time, false)
|
|
|
|
|
|
|
+ return getTimeToDestination(fastData.schedule.start_time, false)
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
var seconds = Math.floor(milliSeconds / 1000)
|
|
var seconds = Math.floor(milliSeconds / 1000)
|
|
@@ -383,7 +367,7 @@ export default function MainFastEatCard(props: { count: any, typeChanged: Functi
|
|
|
|
|
|
|
|
function getEatTime() {
|
|
function getEatTime() {
|
|
|
|
|
|
|
|
- return getTimeToDestination(eatData.schedule_start_time, isCurrentTimeInRange(eatData.schedule_start_time, eatData.schedule_end_time))
|
|
|
|
|
|
|
+ return getTimeToDestination(eatData.schedule.start_time, isCurrentTimeInRange(eatData.schedule.start_time, eatData.schedule.end_time))
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function tapFastStart() {
|
|
function tapFastStart() {
|
|
@@ -456,10 +440,10 @@ export default function MainFastEatCard(props: { count: any, typeChanged: Functi
|
|
|
var color = MainColorType.fast
|
|
var color = MainColorType.fast
|
|
|
var endTimestamp = 0
|
|
var endTimestamp = 0
|
|
|
if (operateType == 'endFast') {
|
|
if (operateType == 'endFast') {
|
|
|
- endTimestamp = fastData.fast.target_end_time
|
|
|
|
|
|
|
+ endTimestamp = fastData.target.end_time
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- var duration = fastData.fast.target_duration
|
|
|
|
|
|
|
+ var duration = fastData.target.duration
|
|
|
|
|
|
|
|
return <View className="modal_content">
|
|
return <View className="modal_content">
|
|
|
<ConsolePicker ref={limitPickerRef}
|
|
<ConsolePicker ref={limitPickerRef}
|
|
@@ -486,7 +470,7 @@ export default function MainFastEatCard(props: { count: any, typeChanged: Functi
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function pickerContent() {
|
|
function pickerContent() {
|
|
|
- const timestamp = isStart ? fastData.fast.target_start_time : fastData.fast.target_end_time
|
|
|
|
|
|
|
+ const timestamp = isStart ? fastData.target.start_time : fastData.target.end_time
|
|
|
const strTime = dayjs(timestamp).format('HH:mm')
|
|
const strTime = dayjs(timestamp).format('HH:mm')
|
|
|
return <TimePicker time={strTime}
|
|
return <TimePicker time={strTime}
|
|
|
color={MainColorType.fast}
|
|
color={MainColorType.fast}
|
|
@@ -510,7 +494,7 @@ export default function MainFastEatCard(props: { count: any, typeChanged: Functi
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
|
- var startTime = dayjs(fastData.fast.target_start_time).format('HH:mm:ss')
|
|
|
|
|
|
|
+ var startTime = dayjs(fastData.target.start_time).format('HH:mm:ss')
|
|
|
var endTime = strTime + ':00'
|
|
var endTime = strTime + ':00'
|
|
|
console.log(startTime, endTime)
|
|
console.log(startTime, endTime)
|
|
|
if (startTime == endTime) {
|
|
if (startTime == endTime) {
|
|
@@ -564,7 +548,7 @@ export default function MainFastEatCard(props: { count: any, typeChanged: Functi
|
|
|
t1 = date.getTime();
|
|
t1 = date.getTime();
|
|
|
|
|
|
|
|
if (operateType == 'startFast') {
|
|
if (operateType == 'startFast') {
|
|
|
- startFast(t1, fastData.fast.target_duration, event ? event : logEvent).then(res => {
|
|
|
|
|
|
|
+ startFast(t1, fastData.target_duration, event ? event : logEvent).then(res => {
|
|
|
setBtnDisable(false)
|
|
setBtnDisable(false)
|
|
|
refresh()
|
|
refresh()
|
|
|
setShowTimePicker(false)
|
|
setShowTimePicker(false)
|
|
@@ -594,7 +578,7 @@ export default function MainFastEatCard(props: { count: any, typeChanged: Functi
|
|
|
if (meal.real_start_time > 0) {
|
|
if (meal.real_start_time > 0) {
|
|
|
return true
|
|
return true
|
|
|
}
|
|
}
|
|
|
- if (meal.target_start_time > new Date().getTime()) {
|
|
|
|
|
|
|
+ if (meal.target.start_time > new Date().getTime()) {
|
|
|
return true
|
|
return true
|
|
|
}
|
|
}
|
|
|
return true
|
|
return true
|
|
@@ -620,15 +604,12 @@ export default function MainFastEatCard(props: { count: any, typeChanged: Functi
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- if (!loaded) {
|
|
|
|
|
|
|
+ if (!fastData)
|
|
|
return <View />
|
|
return <View />
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
return <View style={{ alignItems: 'center', display: 'flex', flexDirection: 'column', width: rpxToPx(750), flexShrink: 0 }}>
|
|
return <View style={{ alignItems: 'center', display: 'flex', flexDirection: 'column', width: rpxToPx(750), flexShrink: 0 }}>
|
|
|
|
|
|
|
|
<View style={{ width: rpxToPx(750), }} />
|
|
<View style={{ width: rpxToPx(750), }} />
|
|
|
- {/* <View onClick={() => { setShowModal(true) }}>Fast Eat Night{props.count}</View>
|
|
|
|
|
- <View style={{ height: 40 }} /> */}
|
|
|
|
|
<View style={{ position: 'relative', }}>
|
|
<View style={{ position: 'relative', }}>
|
|
|
{
|
|
{
|
|
|
ring()
|
|
ring()
|
|
@@ -641,8 +622,8 @@ export default function MainFastEatCard(props: { count: any, typeChanged: Functi
|
|
|
<Text className="date1">{global.language == 'en' ? formatTime('dddd, MMM D') : formatTime('MMMD日 dddd')}</Text>
|
|
<Text className="date1">{global.language == 'en' ? formatTime('dddd, MMM D') : formatTime('MMMD日 dddd')}</Text>
|
|
|
</View>
|
|
</View>
|
|
|
</View>
|
|
</View>
|
|
|
- <View>{isFastMode ? formatMilliseconds(fastData.fast.target_duration) : formatMilliseconds(eatData.target_end_time - eatData.target_start_time)}</View>
|
|
|
|
|
- {
|
|
|
|
|
|
|
+ <View>{isFastMode ? formatMilliseconds(fastData.target.duration) : formatMilliseconds(eatData.target.end_time - eatData.target.start_time)}</View>
|
|
|
|
|
+ {/* {
|
|
|
isFastMode && <View>
|
|
isFastMode && <View>
|
|
|
<View className="log_row">
|
|
<View className="log_row">
|
|
|
{
|
|
{
|
|
@@ -650,14 +631,14 @@ export default function MainFastEatCard(props: { count: any, typeChanged: Functi
|
|
|
<Text className="schedule_name">
|
|
<Text className="schedule_name">
|
|
|
Fast starts:
|
|
Fast starts:
|
|
|
</Text>
|
|
</Text>
|
|
|
- <Text className="schedule_time">
|
|
|
|
|
|
|
+ <Text className="schedule">
|
|
|
{startScheduleTime}
|
|
{startScheduleTime}
|
|
|
</Text>
|
|
</Text>
|
|
|
</View>
|
|
</View>
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
{
|
|
{
|
|
|
- status == 'process' ? <View className="schedule_time">{dayjs(fastData.fast.target_start_time).format('HH:mm')}</View> :
|
|
|
|
|
|
|
+ status == 'process' ? <View className="schedule">{dayjs(fastData.target.start_time).format('HH:mm')}</View> :
|
|
|
<View onClick={tapStartLog} className={status == 'new' ? "fast_log_btn" : "fast_log_btn fast_log_btn_disable"}>Log{status == 'new' && <View className="badge" />}</View>
|
|
<View onClick={tapStartLog} className={status == 'new' ? "fast_log_btn" : "fast_log_btn fast_log_btn_disable"}>Log{status == 'new' && <View className="badge" />}</View>
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -668,8 +649,8 @@ export default function MainFastEatCard(props: { count: any, typeChanged: Functi
|
|
|
<Text className="schedule_name">
|
|
<Text className="schedule_name">
|
|
|
Fast ends:
|
|
Fast ends:
|
|
|
</Text>
|
|
</Text>
|
|
|
- <Text className="schedule_time">
|
|
|
|
|
- {status == 'process' ? dayjs(fastData.fast.target_end_time).format('HH:mm') : endScheduleTime}
|
|
|
|
|
|
|
+ <Text className="schedule">
|
|
|
|
|
+ {status == 'process' ? dayjs(fastData.target.end_time).format('HH:mm') : endScheduleTime}
|
|
|
</Text>
|
|
</Text>
|
|
|
</View>
|
|
</View>
|
|
|
<View onClick={tapEndLog} className={status == 'process' ? "fast_log_btn" : "fast_log_btn fast_log_btn_disable"}>Log</View>
|
|
<View onClick={tapEndLog} className={status == 'process' ? "fast_log_btn" : "fast_log_btn fast_log_btn_disable"}>Log</View>
|
|
@@ -686,8 +667,8 @@ export default function MainFastEatCard(props: { count: any, typeChanged: Functi
|
|
|
}
|
|
}
|
|
|
<View className="schedule">
|
|
<View className="schedule">
|
|
|
<Text className="schedule_name">{item.name}</Text>
|
|
<Text className="schedule_name">{item.name}</Text>
|
|
|
- <Text className="schedule_time">
|
|
|
|
|
- {item.real_start_time ? dayjs(item.real_start_time).format('HH:mm') + ' - ' + dayjs(item.real_end_time).format('HH:mm') : item.schedule_start_time}
|
|
|
|
|
|
|
+ <Text className="schedule">
|
|
|
|
|
+ {item.real_start_time ? dayjs(item.real_start_time).format('HH:mm') + ' - ' + dayjs(item.real_end_time).format('HH:mm') : item.schedule.start_time}
|
|
|
</Text>
|
|
</Text>
|
|
|
</View>
|
|
</View>
|
|
|
<View style={{ flex: 1 }} />
|
|
<View style={{ flex: 1 }} />
|
|
@@ -699,7 +680,7 @@ export default function MainFastEatCard(props: { count: any, typeChanged: Functi
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
</View>
|
|
</View>
|
|
|
- }
|
|
|
|
|
|
|
+ } */}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|