feat(nutrition): 添加营养数据保存功能到HealthKit,包括蛋白质、脂肪和碳水化合物
This commit is contained in:
@@ -9,7 +9,6 @@ import 'react-native-reanimated';
|
||||
import PrivacyConsentModal from '@/components/PrivacyConsentModal';
|
||||
import { useAppDispatch, useAppSelector } from '@/hooks/redux';
|
||||
import { useQuickActions } from '@/hooks/useQuickActions';
|
||||
import { clearAiCoachSessionCache } from '@/services/aiCoachSession';
|
||||
import { hrvMonitorService } from '@/services/hrvMonitor';
|
||||
import { notificationService } from '@/services/notifications';
|
||||
import { setupQuickActions } from '@/services/quickActions';
|
||||
@@ -137,10 +136,6 @@ function Bootstrapper({ children }: { children: React.ReactNode }) {
|
||||
await setupQuickActions();
|
||||
logger.info('✅ 快捷动作初始化完成');
|
||||
|
||||
// 4. 清空 AI 教练会话缓存(轻量操作)
|
||||
clearAiCoachSessionCache();
|
||||
logger.info('✅ AI 教练缓存清理完成');
|
||||
|
||||
// 5. 初始化喝水记录 Bridge
|
||||
initializeWaterRecordBridge();
|
||||
logger.info('✅ 喝水记录 Bridge 初始化完成');
|
||||
|
||||
@@ -10,6 +10,7 @@ import { addDietRecord, type CreateDietRecordDto } from '@/services/dietRecords'
|
||||
import { foodLibraryApi, type CreateCustomFoodDto } from '@/services/foodLibraryApi';
|
||||
import { fetchDailyNutritionData } from '@/store/nutritionSlice';
|
||||
import type { FoodItem, MealType, SelectedFoodItem } from '@/types/food';
|
||||
import { saveNutritionToHealthKit } from '@/utils/health';
|
||||
import { Ionicons } from '@expo/vector-icons';
|
||||
import { Image } from 'expo-image';
|
||||
import { useLocalSearchParams, useRouter } from 'expo-router';
|
||||
@@ -178,7 +179,27 @@ export default function FoodLibraryScreen() {
|
||||
imageUrl: item.food.imageUrl,
|
||||
};
|
||||
|
||||
// 先保存到后端
|
||||
await addDietRecord(dietRecordData);
|
||||
|
||||
// 然后尝试同步到 HealthKit(非阻塞)
|
||||
// 提取蛋白质、脂肪和碳水化合物数据
|
||||
const { proteinGrams, fatGrams, carbohydrateGrams, mealTime } = dietRecordData;
|
||||
|
||||
if (proteinGrams !== undefined || fatGrams !== undefined || carbohydrateGrams !== undefined) {
|
||||
// 使用 catch 确保 HealthKit 同步失败不影响后端记录
|
||||
saveNutritionToHealthKit(
|
||||
{
|
||||
proteinGrams: proteinGrams || undefined,
|
||||
fatGrams: fatGrams || undefined,
|
||||
carbohydrateGrams: carbohydrateGrams || undefined
|
||||
},
|
||||
mealTime
|
||||
).catch(error => {
|
||||
// HealthKit 同步失败只记录日志,不影响用户体验
|
||||
console.error('HealthKit 营养数据同步失败(不影响记录):', error);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 记录成功后,刷新当天的营养数据
|
||||
|
||||
Reference in New Issue
Block a user