feat: 新增步数详情页面,支持日期选择和步数统计展示
feat: 更新StepsCard组件,支持点击事件回调 feat: 在WaterIntakeCard中添加震动反馈功能 fix: 在用户重建时保存authToken
This commit is contained in:
@@ -3,6 +3,7 @@ import {
|
||||
Animated,
|
||||
StyleSheet,
|
||||
Text,
|
||||
TouchableOpacity,
|
||||
View,
|
||||
ViewStyle
|
||||
} from 'react-native';
|
||||
@@ -17,13 +18,15 @@ interface StepsCardProps {
|
||||
stepGoal: number;
|
||||
hourlySteps: HourlyStepData[];
|
||||
style?: ViewStyle;
|
||||
onPress?: () => void; // 新增点击事件回调
|
||||
}
|
||||
|
||||
const StepsCard: React.FC<StepsCardProps> = ({
|
||||
stepCount,
|
||||
stepGoal,
|
||||
hourlySteps,
|
||||
style
|
||||
style,
|
||||
onPress
|
||||
}) => {
|
||||
// 为每个柱体创建独立的动画值
|
||||
const animatedValues = useRef(
|
||||
@@ -69,8 +72,8 @@ const StepsCard: React.FC<StepsCardProps> = ({
|
||||
}
|
||||
}, [chartData, animatedValues]);
|
||||
|
||||
return (
|
||||
<View style={[styles.container, style]}>
|
||||
const CardContent = () => (
|
||||
<>
|
||||
{/* 标题和步数显示 */}
|
||||
<View style={styles.header}>
|
||||
<Text style={styles.title}>步数</Text>
|
||||
@@ -140,6 +143,26 @@ const StepsCard: React.FC<StepsCardProps> = ({
|
||||
resetToken={stepCount}
|
||||
/>
|
||||
</View>
|
||||
</>
|
||||
);
|
||||
|
||||
// 如果有点击事件,包装在TouchableOpacity中
|
||||
if (onPress) {
|
||||
return (
|
||||
<TouchableOpacity
|
||||
style={[styles.container, style]}
|
||||
onPress={onPress}
|
||||
activeOpacity={0.8}
|
||||
>
|
||||
<CardContent />
|
||||
</TouchableOpacity>
|
||||
);
|
||||
}
|
||||
|
||||
// 否则使用普通View
|
||||
return (
|
||||
<View style={[styles.container, style]}>
|
||||
<CardContent />
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { useWaterDataByDate } from '@/hooks/useWaterData';
|
||||
import { getQuickWaterAmount } from '@/utils/userPreferences';
|
||||
import dayjs from 'dayjs';
|
||||
import * as Haptics from 'expo-haptics';
|
||||
import React, { useEffect, useMemo, useState } from 'react';
|
||||
import {
|
||||
Animated,
|
||||
@@ -113,6 +114,11 @@ const WaterIntakeCard: React.FC<WaterIntakeCardProps> = ({
|
||||
|
||||
// 处理添加喝水 - 右上角按钮直接添加
|
||||
const handleQuickAddWater = async () => {
|
||||
// 触发震动反馈
|
||||
if (process.env.EXPO_OS === 'ios') {
|
||||
Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Medium);
|
||||
}
|
||||
|
||||
// 使用用户配置的快速添加饮水量
|
||||
const waterAmount = quickWaterAmount;
|
||||
// 如果有选中日期,则为该日期添加记录;否则为今天添加记录
|
||||
@@ -122,6 +128,11 @@ const WaterIntakeCard: React.FC<WaterIntakeCardProps> = ({
|
||||
|
||||
// 处理卡片点击 - 打开配置饮水弹窗
|
||||
const handleCardPress = () => {
|
||||
// 触发震动反馈
|
||||
if (process.env.EXPO_OS === 'ios') {
|
||||
Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light);
|
||||
}
|
||||
|
||||
setIsModalVisible(true);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user