integrate barcode scan with openfoodfacts and meal type selection

This commit is contained in:
dimitar committed 2026-03-31 16:36:18 +02:00
1 parent 3c3dfb6cd6
commit ca64a100b6
5 files changed
+890 -428

No files matched your search

+35
View File
@@ -0,0 +1,35 @@
import { apiClient, withAuth } from "./client";
import { API_ENDPOINTS } from "../config/api";
export interface ScannedFoodProduct {
barcode: string;
name: string;
brand: string | null;
imageUrl: string | null;
servingSize: string;
caloriesPerServing: number;
macros: {
protein: number | null;
carbs: number | null;
fat: number | null;
};
source: "openfoodfacts";
}
interface FoodLookupResponse {
success: boolean;
data: ScannedFoodProduct;
}
export async function lookupFoodByBarcode(
barcode: string,
token: string | null,
): Promise<ScannedFoodProduct> {
const normalized = barcode.replace(/\D/g, "");
const response = await apiClient.get<FoodLookupResponse>(
API_ENDPOINTS.FOOD.LOOKUP_BARCODE(normalized),
withAuth(token),
);
return response.data.data;
}
+1
View File
@@ -15,4 +15,5 @@ export * from "./hydration";
export * from "./client";
export * from "./helpers";
export * from "./membership";
export * from "./food";
export * from "./gyms";
File diff suppressed because it is too large. Load diff
+3
View File
@@ -47,6 +47,9 @@ export const API_ENDPOINTS = {
MEMBERSHIP: {
FEATURES: "/api/membership/features",
},
FOOD: {
LOOKUP_BARCODE: (code: string) => `/api/food/barcode/${code}`,
},
NUTRITION: {
BASE: "/api/nutrition",
MEALS: "/api/nutrition/meals",