feat: implement DataManager module and enhance API error handling for empty files

This commit is contained in:
Greg 2025-05-29 16:40:29 +02:00
parent b194bc1226
commit 1dcb6d6631
2 changed files with 18 additions and 7 deletions

View File

@ -25,10 +25,16 @@ const DataManager = (() => {
if (response.ok) { if (response.ok) {
const data = await response.json(); const data = await response.json();
if (data && typeof data === 'object') { if (data && typeof data === 'object') {
appData = data; // Merge loaded data with defaults to ensure all keys are present
console.log('Successfully loaded data from API.'); appData = {
// Optionally, update localStorage for offline or quick display, but API is truth ...defaultData, // Start with defaults
// saveDataToLocalStorage(); ...data, // Override with loaded data
// Ensure critical arrays exist if not in loaded data or if they are not arrays
weights: Array.isArray(data.weights) ? data.weights : defaultData.weights,
meals: Array.isArray(data.meals) ? data.meals : defaultData.meals,
version: data.version || defaultData.version // Ensure version is present
};
console.log('Successfully loaded and merged data from API.');
} else { } else {
console.warn('Data from API was not valid JSON or empty. Using default data.'); console.warn('Data from API was not valid JSON or empty. Using default data.');
appData = { ...defaultData }; appData = { ...defaultData };

View File

@ -32,12 +32,17 @@ app.get('/', (req, res) => {
console.error('Error reading data file:', err); console.error('Error reading data file:', err);
return res.status(500).send('Error reading data file'); return res.status(500).send('Error reading data file');
} }
// If file is empty or just whitespace, treat as empty object
if (!data || data.trim() === '') {
console.log(`Data file at ${DATA_FILE_PATH} is empty, returning empty object.`);
return res.json({});
}
try { try {
res.json(JSON.parse(data)); res.json(JSON.parse(data));
} catch (parseErr) { } catch (parseErr) {
console.error('Error parsing data file content:', parseErr); console.error(`Error parsing data file content from ${DATA_FILE_PATH}:`, parseErr);
// If file content is not valid JSON, perhaps return empty or handle error return res.status(500).json({ message: 'Error parsing data file content. File may be corrupted.', error: parseErr.message });
res.status(500).send('Error parsing data file content');
} }
}); });
}); });