From 12877f2b32e12569c17f364c585e6e8955221286 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 29 Nov 2025 03:39:09 +0000 Subject: [PATCH] Add date param to food search and meal creation Co-authored-by: jeff --- app/(tabs)/index.tsx | 7 +++++-- app/food-search.tsx | 18 ++++++++++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/app/(tabs)/index.tsx b/app/(tabs)/index.tsx index 16da734..fea6c88 100644 --- a/app/(tabs)/index.tsx +++ b/app/(tabs)/index.tsx @@ -132,9 +132,12 @@ const formatNumber = (value: number) => value.toLocaleString(); const handleAddFood = useCallback( (mealType: MealType) => { - router.push({ pathname: '/food-search', params: { meal: mealType } }); + router.push({ + pathname: '/food-search', + params: { meal: mealType, date: selectedDate.toISOString() }, + }); }, - [router] + [router, selectedDate] ); return ( diff --git a/app/food-search.tsx b/app/food-search.tsx index e692d6c..5131684 100644 --- a/app/food-search.tsx +++ b/app/food-search.tsx @@ -1,6 +1,6 @@ import MaterialIcons from '@expo/vector-icons/MaterialIcons'; import { Audio } from 'expo-av'; -import { useRouter } from 'expo-router'; +import { useLocalSearchParams, useRouter } from 'expo-router'; import { useEffect, useMemo, useRef, useState } from 'react'; import { ActivityIndicator, @@ -43,6 +43,16 @@ export default function FoodSearch() { const [onlyBranded, setOnlyBranded] = useState(false); const [mealSheetFood, setMealSheetFood] = useState(null); const router = useRouter(); + const { date: dateParam } = useLocalSearchParams<{ date?: string | string[] }>(); + const normalizedDateParam = useMemo(() => { + if (!dateParam) return undefined; + return Array.isArray(dateParam) ? dateParam[0] : dateParam; + }, [dateParam]); + const targetDate = useMemo(() => { + if (!normalizedDateParam) return null; + const parsed = new Date(normalizedDateParam); + return Number.isNaN(parsed.getTime()) ? null : parsed; + }, [normalizedDateParam]); const { theme } = useAppTheme(); const openAiKey = getOpenAiApiKey(); const PAGE_SIZE = 20; @@ -111,7 +121,11 @@ export default function FoodSearch() { const addFoodToLog = async (food: FoodItem, mealType: MealType) => { try { - await createMeal(mapFoodToMealInput(food, mealType)); + const mealInput = mapFoodToMealInput(food, mealType); + await createMeal({ + ...mealInput, + consumedAt: targetDate?.toISOString(), + }); Alert.alert('Success', 'Meal added to your log!'); router.replace('/(tabs)'); } catch {