Refactor food item flow and barcode handling

Updated routes and templates to improve the process of adding and logging food items by barcode. The add_food_item route now accepts a barcode parameter, and barcode lookups redirect to item creation if not found. The log_food flow now uses session variables for item and meal selection, and the get_item.html template uses fetch to handle barcode lookups and redirects accordingly.
This commit is contained in:
2025-07-08 11:43:22 +02:00
parent bb5b2e8bc7
commit 5ae82e379e
3 changed files with 57 additions and 29 deletions

View File

@@ -49,8 +49,22 @@
if (result) {
// Result found, this should post the barcode
const codeText = result.getText();
const baseURL = "{{url_for('user.food_item', barcode='0')}}"
window.location.href = baseURL.replace("0", encodeURIComponent(codeText))
const baseURL = "{{url_for('user.foodId_from_barcode', barcode='!')}}"
fetch(baseURL.replace("!", encodeURIComponent(codeText)))
.then(response => {
if (!response.ok) {
throw new Error('Network response was not OK');
}
return response.json(); // or response.text(), response.blob(), etc.
})
.then(data => {
const baseURL2 = "{{url_for('user.select_item', item_id='0')}}"
window.location.href = baseURL2.replace("0", encodeURIComponent(data["item_id"]))
})
.catch(error => {
console.error('Fetch error:', error);
});
}
});
});