import { View, Text } from "@tarojs/components"; import './Metric.scss' import { setAuth } from "../hooks/werun"; import { useReady } from "@tarojs/taro"; import { useDispatch, useSelector } from "react-redux"; import { useEffect, useState } from "react"; import Taro from "@tarojs/taro"; import { activityCards, uploadSteps } from "@/services/trackSomething"; import { TimeFormatter } from "@/utils/time_format"; import MetricItem from "./MetricItem"; import { checkFail, checkStart, checkSuccess, setResult } from "@/store/action_results"; export default function Component(props: any) { const user = useSelector((state: any) => state.user); const checkResult = useSelector((state: any) => state.checkResult); const [allowRun, setAllowRun] = useState(false) const [stepInfo, setStepInfo] = useState(null) const [lastTime, setLastTime] = useState(new Date().getTime()) const [isCheking, setIsChecking] = useState(false) const [strBtnTitle, setStrBtnTitle] = useState('') const [list, setList] = useState([]) const dispatch = useDispatch(); // const [title, setTitle] = useState('打卡') //未登录<->已登录 状态切换时,执行一次授权检查 useEffect(() => { checkAuth() }, [user.isLogin]) useEffect(() => { console.log('checkResult.type:' + checkResult.type) }, [ checkResult.type ]) //页面渲染完成后执行一次授权检查 useReady(() => { getCards(); }) function getCards() { activityCards().then(res => { setList((res as any).cards) }) } function checkAuth() { // Taro.checkSession if (user.isLogin) { // setAuth() Taro.getSetting({ success: res => { //第一步,检测是否有授权 - 没有授权 if (!res.authSetting['scope.werun']) { // setTitle('开启') setAllowRun(false) } else { setAllowRun(true) // setTitle('打卡') //自动打卡流程 var time = Taro.getStorageSync('lastUploadStepsTime') if (time) { var now = new Date().getTime() if (now - time >= 30 * 24 * 3600 * 1000) { getWeRunData(true) } } else { getWeRunData(true) } } } }) } else { // Taro.setStorageSync('lastUploadStepsTime', time) setAllowRun(false) // setTitle('开启'); } } function checkout() { // console.log('开始获取步数的时间戳:' + new Date().getTime()) if (allowRun) { setIsChecking(true) dispatch(checkStart()); } if (user.isLogin) { setAuth(getWeRunData, refuseAuth) } else { Taro.navigateTo({ url: '/pages/ChooseAuth' }) } } function getWeRunData(autoCheck = false) { // setTitle('打卡'); setAllowRun(true) var date = new Date(); var time = date.getTime() var strDate = (date.getFullYear() + '') + (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1)) + (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()); Taro.getWeRunData({ success: res => { // console.log('已获取步数的时间戳:' + new Date().getTime()) uploadSteps({ is_manual: autoCheck ? 0 : 1, timestamp: time, encryptedData: res.encryptedData, iv: res.iv, date: strDate, cloudID: res.cloudID, }).then(res => { Taro.setStorageSync('lastUploadStepsTime', time) dispatch(setResult({ isSuccess: true }) as any) setStepInfo((res as any)[(res as any).length - 1]) setLastTime(time) setIsChecking(false) getCards(); }).catch(e => { dispatch(setResult({ isSuccess: false }) as any); }); } }) } function refuseAuth() { // setTitle('开启'); setIsChecking(false) setAllowRun(false) } function goDetail() { if (user.isLogin) { Taro.navigateTo({ url: '/pages/RecordsHistory?type=activity' }) } else { Taro.navigateTo({ url: '/pages/ChooseAuth' }) } } // checkResult.type == 'ing' && setStrBtnTitle('打卡中...') var btnTitle = ''; var isEnable = true; if (allowRun) { if (checkResult.type == 'idle') { btnTitle = '打卡' isEnable = true } else if (checkResult.type == 'ing') { btnTitle = '打卡中...' isEnable = false; } else if (checkResult.type == 'success') { btnTitle = '打卡成功' isEnable = false } else if (checkResult.type == 'fail') { btnTitle = '打卡失败' isEnable = false } else if (checkResult.type == 'countdown') { btnTitle = checkResult.title + 's' isEnable = false; } } else { btnTitle = '开启'; isEnable = true; } return { list.map((item: any, index) => { var value = '0' var desc = '' if (item.latest_record) { value = item.latest_record.items[0].value if (item.latest_record.timestamp == 0) { desc = '今天待打卡' } else { desc = TimeFormatter.formatTimestamp(item.latest_record.timestamp) } } else { desc = '今天待打卡' } if (!allowRun) { value = '未开启' desc = '开启步数仅自己可见' } return }) } return 行走 { !allowRun && 未开启 } { !allowRun && 开启步数仅自己可见 } { allowRun && stepInfo && {(stepInfo as any).step} } { allowRun && stepInfo && {TimeFormatter.formatTimestamp(lastTime)} } {allowRun ? '打卡' : '开启'} }