import { getQuickWaterAmount } from '@/utils/userPreferences'; import * as QuickActions from 'expo-quick-actions'; import { Platform } from 'react-native'; // 快捷动作类型定义 export interface QuickActionItem { id: string; title: string; subtitle?: string; icon?: string; params?: Record; } // 饮水快捷动作配置 export const QUICK_ACTIONS = { DRINK_WATER_100: { id: 'drink_water_100', title: '喝水 100ml', subtitle: '快速记录饮水', icon: Platform.OS === 'ios' ? 'drink_water' : 'drink_water', params: { amount: 100 } }, DRINK_WATER_200: { id: 'drink_water_200', title: '喝水 200ml', subtitle: '快速记录饮水', icon: Platform.OS === 'ios' ? 'drink_water' : 'drink_water', params: { amount: 200 } }, DRINK_WATER_250: { id: 'drink_water_250', title: '喝水 250ml', subtitle: '快速记录饮水', icon: Platform.OS === 'ios' ? 'drink_water' : 'drink_water', params: { amount: 250 } }, DRINK_WATER_CUSTOM: { id: 'drink_water_custom', title: '喝水', subtitle: '自定义饮水量', icon: Platform.OS === 'ios' ? 'drink_water' : 'drink_water', params: { custom: true } } }; // 设置快捷动作 export const setupQuickActions = async () => { try { // 获取用户设置的快速饮水量 const quickAmount = await getQuickWaterAmount(); console.log('设置快捷动作,快速饮水量:', quickAmount); // 创建快捷动作列表 const actions: QuickActionItem[] = [ // 使用用户设置的快速饮水量 { ...QUICK_ACTIONS.DRINK_WATER_CUSTOM, title: `喝水 ${quickAmount}ml`, subtitle: '快速记录饮水', params: { amount: quickAmount } }, // 固定选项 QUICK_ACTIONS.DRINK_WATER_100 ]; // 设置快捷动作 await QuickActions.setItems(actions); console.log('快捷动作设置成功'); } catch (error) { console.error('设置快捷动作失败:', error); } }; // 清除所有快捷动作 export const clearQuickActions = async () => { try { await QuickActions.setItems([]); console.log('快捷动作已清除'); } catch (error) { console.error('清除快捷动作失败:', error); } }; // 获取初始快捷动作(如果应用是通过快捷动作启动的) export const getInitialQuickAction = () => { try { return QuickActions.initial; } catch (error) { console.error('获取初始快捷动作失败:', error); return null; } }; // 添加快捷动作事件监听器 export const addQuickActionListener = (callback: (action: QuickActionItem) => void) => { const subscription = QuickActions.addListener(callback); return subscription; }; // 移除快捷动作事件监听器 export const removeQuickActionListener = (subscription: any) => { if (subscription) { subscription.remove(); } }; // 检查快捷动作是否可用 export const isQuickActionsAvailable = async () => { try { return await QuickActions.isSupported(); } catch (error) { return false; } };