feat(app): add version check system and enhance internationalization support
Add comprehensive app update checking functionality with: - New VersionCheckContext for managing update detection and notifications - VersionUpdateModal UI component for presenting update information - Version service API integration with platform-specific update URLs - Version check menu item in personal settings with manual/automatic checking Enhance internationalization across workout features: - Complete workout type translations for English and Chinese - Localized workout detail modal with proper date/time formatting - Locale-aware date formatting in fitness rings detail - Workout notification improvements with deep linking to specific workout details Improve UI/UX with better chart rendering, sizing fixes, and enhanced navigation flow. Update app version to 1.1.3 and include app version in API headers for better tracking.
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { getWorkoutTypeDisplayName, WorkoutData } from '@/utils/health';
|
||||
import { logger } from '@/utils/logger';
|
||||
import { getNotificationEnabled } from '@/utils/userPreferences';
|
||||
import {
|
||||
getWorkoutNotificationEnabled,
|
||||
@@ -19,28 +20,28 @@ export async function analyzeWorkoutAndSendNotification(workout: WorkoutData): P
|
||||
// 检查用户是否启用了通用通知
|
||||
const notificationsEnabled = await getNotificationEnabled();
|
||||
if (!notificationsEnabled) {
|
||||
console.log('用户已禁用通知,跳过锻炼结束通知');
|
||||
logger.info('用户已禁用通知,跳过锻炼结束通知');
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查用户是否启用了锻炼通知
|
||||
const workoutNotificationsEnabled = await getWorkoutNotificationEnabled();
|
||||
if (!workoutNotificationsEnabled) {
|
||||
console.log('用户已禁用锻炼通知,跳过锻炼结束通知');
|
||||
logger.info('用户已禁用锻炼通知,跳过锻炼结束通知');
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查时间限制(避免深夜打扰)
|
||||
const timeAllowed = await isNotificationTimeAllowed();
|
||||
if (!timeAllowed) {
|
||||
console.log('当前时间不适合发送通知,跳过锻炼结束通知');
|
||||
logger.info('当前时间不适合发送通知,跳过锻炼结束通知');
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查特定锻炼类型是否启用了通知
|
||||
const workoutTypeEnabled = await isWorkoutTypeEnabled(workout.workoutActivityTypeString || '');
|
||||
if (!workoutTypeEnabled) {
|
||||
console.log('该锻炼类型已禁用通知,跳过锻炼结束通知:', workout.workoutActivityTypeString);
|
||||
logger.info('该锻炼类型已禁用通知,跳过锻炼结束通知:', workout.workoutActivityTypeString);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -66,7 +67,7 @@ export async function analyzeWorkoutAndSendNotification(workout: WorkoutData): P
|
||||
priority: 'high'
|
||||
});
|
||||
|
||||
console.log('锻炼结束通知已发送:', message.title);
|
||||
logger.info('锻炼结束通知已发送:', message.title);
|
||||
} catch (error) {
|
||||
console.error('发送锻炼结束通知失败:', error);
|
||||
}
|
||||
@@ -221,7 +222,7 @@ function generateEncouragementMessage(
|
||||
: undefined;
|
||||
|
||||
const messageConfig = getWorkoutMessage(workout.workoutActivityTypeString);
|
||||
let title = '🎯 锻炼完成!';
|
||||
let title = '锻炼完成!';
|
||||
let body = '';
|
||||
const data: Record<string, any> = {};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user