Leon 1 год назад
Родитель
Сommit
21c12c0413

+ 13 - 11
src/features/trackTimeDuration/components/CircadianDetailPopup.tsx

@@ -189,15 +189,15 @@ export default function CircadianDetailPopup(props: { record: any, schedule?: an
                 startArc: startArc(timestamp),//startArc(props.record.fast.real_start_time),
                 durationArc: durationArc(props.record.fast.real_start_time, props.record.fast.real_end_time)
             }
-            if (props.record.fast.status == 'NOT_COMPLETED'){
+            if (props.record.fast.status == 'NOT_COMPLETED') {
                 fastRing.durationArc = 0.01
             }
         }
 
         var sleepRing: RealRing = null
         if (props.record.sleep && props.record.sleep.status == 'COMPLETED') {
-            var timestamp = TimeFormatter.transferTimestamp(props.record.sleep.real_start_time, 
-                props.record.fast?props.record.fast.real_end_time_zone:props.record.sleep.real_end_time_zone)
+            var timestamp = TimeFormatter.transferTimestamp(props.record.sleep.real_start_time,
+                props.record.fast ? props.record.fast.real_end_time_zone : props.record.sleep.real_end_time_zone)
             sleepRing = {
                 color: global.sleepColor ? global.sleepColor : ColorType.sleep,
                 startArc: startArc(timestamp),//startArc(props.record.sleep.real_start_time),
@@ -205,8 +205,8 @@ export default function CircadianDetailPopup(props: { record: any, schedule?: an
             }
         }
         if (props.record.sleep && props.record.sleep.status == 'NOT_COMPLETED') {
-            var timestamp = TimeFormatter.transferTimestamp(props.record.sleep.real_start_time, 
-                props.record.fast?props.record.fast.real_end_time_zone:props.record.sleep.real_end_time_zone)
+            var timestamp = TimeFormatter.transferTimestamp(props.record.sleep.real_start_time,
+                props.record.fast ? props.record.fast.real_end_time_zone : props.record.sleep.real_end_time_zone)
             sleepRing = {
                 color: global.sleepColor ? global.sleepColor : ColorType.sleep,
                 startArc: startArc(timestamp),//startArc(props.record.sleep.real_start_time),
@@ -461,7 +461,7 @@ export default function CircadianDetailPopup(props: { record: any, schedule?: an
         </View>
     }
 
-    function stage() { 
+    function stage() {
         var bgRing = getBgRing()
         var common = getCommon(null, false)
         common.radius = bigRingRadius;
@@ -511,10 +511,12 @@ export default function CircadianDetailPopup(props: { record: any, schedule?: an
     }
 
     function events() {
-        return <TimelineFastSleep
-            data={props.record}
-            first_real_check_time={props.record.first_real_check_time ? props.record.first_real_check_time : 0}
-            diffTimeZone={diffTimeZone} multiTimeZone={multiTimeZone} />
+        return <View style={{display:'flex',flexDirection:'row',alignItems:'center',justifyContent:'center'}}>
+            <TimelineFastSleep
+                data={props.record}
+                first_real_check_time={props.record.first_real_check_time ? props.record.first_real_check_time : 0}
+                diffTimeZone={diffTimeZone} multiTimeZone={multiTimeZone} />
+        </View>
     }
 
     function durationPickerContent() {
@@ -627,7 +629,7 @@ export default function CircadianDetailPopup(props: { record: any, schedule?: an
                     }}
                     onClick={() => { alert('b') }}
                     onClickOverlay={() => { alert('a') }}
-                    onAfterLeave={() => { setShowDurationPicker(false); setShowEditPicker(false);global.pauseIndexTimer = false }}
+                    onAfterLeave={() => { setShowDurationPicker(false); setShowEditPicker(false); global.pauseIndexTimer = false }}
                     show={showDurationPicker} round={true} overlay={true} position='bottom'
                 >
                     {

+ 1 - 0
src/features/trackTimeDuration/components/RecordFastSleep.tsx

@@ -178,6 +178,7 @@ const RecordFastSleep = memo((props: { data: any, type: string, index: number })
     }
 
     function showDetail(e) {
+        setShowDel(false);
         if (props.type == 'latest') {
             setSegmentIndex(0)
             global.segmentIndex = 0

+ 35 - 6
src/pages/clock/Clock.tsx

@@ -4,7 +4,7 @@ import IndexItem from '@/features/trackTimeDuration/components/IndexItem';
 import Rings from "@/features/trackTimeDuration/components/Rings";
 import './Clock.scss'
 import { useDispatch, useSelector } from "react-redux";
-import { useDidHide, useDidShow, useReady, useShareAppMessage } from "@tarojs/taro";
+import { useDidHide, useDidShow, usePageScroll, useReady, useShareAppMessage } from "@tarojs/taro";
 import Taro from "@tarojs/taro";
 import { getInfoSuccess } from "@/store/user";
 import { clockHome, clockSummaryRecords, clockSummaryStats, getClockRecords, getClocks, getPlans } from "@/services/trackTimeDuration";
@@ -43,6 +43,7 @@ import { changeFastDuration, changeSleepDuration, setCurrentRecord, setSchedule
 import { checkAuthorized } from "@/utils/check_authorized";
 import NoData from "@/components/view/NoData";
 import { AtActivityIndicator } from "taro-ui";
+import Tooltip from "@/components/view/Tooltip";
 
 let GradientText
 let useNavigation;
@@ -82,7 +83,8 @@ export default function Page() {
     const [modalDetail2, setModalDetail2] = useState<any>(null)
 
     const [debugInfo, setDebugInfo] = useState(null)
-
+    const [needShowAddTip, setNeedShowAddTip] = useState(false)
+    const [showTip, setShowTip] = useState(false)
     const [records, setRecords] = useState([])
 
     const permission = useSelector((state: any) => state.permission);
@@ -130,7 +132,8 @@ export default function Page() {
         if (user.isLogin) {
             uploadUserClient();
             checkAuthorized();
-
+            //检查用户是否添加过小程序
+            checkAddToMini();
         }
         else {
             dispatch(clearNightStore());
@@ -175,6 +178,19 @@ export default function Page() {
 
     }
 
+    function checkAddToMini() {
+        process.env.TARO_ENV == 'weapp' &&
+            wx.checkIsAddedToMyMiniProgram({
+                success: (res) => {
+                    if (!res.added) {
+                        setNeedShowAddTip(true)
+                    }
+                },
+                fail: (e) => {
+                }
+            });
+    }
+
     useDidShow(() => {
         checkTimeZone()
         setCount(pre => pre + 1)
@@ -187,7 +203,7 @@ export default function Page() {
             }).catch(e => {
                 Taro.stopPullDownRefresh()
             })
-            if (global.refreshRecent){
+            if (global.refreshRecent) {
                 global.refreshRecent()
             }
         }
@@ -197,6 +213,16 @@ export default function Page() {
 
     })
 
+    usePageScroll((e) => {
+        if (e.scrollTop > 70) {
+          setShowTip(true)
+        }
+        else {
+          setShowTip(false)
+        }
+    
+      })
+
     useDidHide(() => {
         //pause timer
         pauseTimer = true
@@ -307,7 +333,7 @@ export default function Page() {
             setErrorPage(false)
             setCheckData(list)
 
-            if (needScroll){
+            if (needScroll) {
                 needScroll = false
                 setTimeout(() => {
                     Taro.createSelectorQuery().select('#latest').boundingClientRect((rect) => {
@@ -567,7 +593,7 @@ export default function Page() {
 
     global.scrollToLatest = () => {
         needScroll = true;
-        
+
 
     }
 
@@ -585,6 +611,9 @@ export default function Page() {
         return <Layout type={TemplateType.customHeader} header={headerView()} title={t('page.clock.title')} titleShowStyle={NaviBarTitleShowType.scrollToShow}>
 
             <View className="index_container">
+                {
+                    needShowAddTip && showTip && <Tooltip title="添加到我的小程序" closeTip={() => { setNeedShowAddTip(false) }} />
+                }
                 <Text className="count">{count}</Text>
 
                 <Box>

+ 10 - 0
src/pages/explore/Index.tsx

@@ -6,12 +6,22 @@ import { NaviBarTitleShowType, TemplateType } from "@/utils/types";
 import TitleView from "@/features/trackTimeDuration/components/TitleView";
 import Discovery from "@/features/trackTimeDuration/components/Discovery";
 import { useEffect, useState } from "react";
+import { useShareAppMessage } from "@tarojs/taro";
 
 let timer
 export default function Explore() {
     const { t } = useTranslation()
     const [count, setCount] = useState(0)
 
+    if (process.env.TARO_ENV == 'weapp') {
+        useShareAppMessage((e) => {
+            return {
+                title: t('feature.track_time_duration.common.share_title'),
+                path: 'pages/explore/Index'
+            }
+        })
+    }
+
     useEffect(() => {
         timer = setInterval(() => {
             setCount((prevCounter) => prevCounter + 1)