Improve Supabase error reporting for diagnostic purposes

This commit is contained in:
Christian Vidal Wolf
2026-04-10 12:06:16 +02:00
parent ee73b85100
commit db91aeb842
2 changed files with 29 additions and 13 deletions
+5 -5
View File
@@ -327,10 +327,10 @@ export default function App() {
try {
for (const [articleNo, { newData, originalData, articleName }] of entries) {
console.log('[handleSaveAll] Saving article:', articleNo);
const success = await saveRowToSupabase(articleNo, newData, token);
console.log('[handleSaveAll] Save result for', articleNo, ':', success);
const result = await saveRowToSupabase(articleNo, newData, token);
console.log('[handleSaveAll] Save result for', articleNo, ':', result);
if (success) {
if (result.success) {
// Also save to history
await saveHistoryEntry(articleNo, articleName, originalData, newData, session?.user?.email || 'unknown', token);
@@ -342,14 +342,14 @@ export default function App() {
});
} else {
setRowStatuses(prev => ({ ...prev, [articleNo]: 'error' }));
failedArticles.push(articleNo);
failedArticles.push(`${articleNo} [${result.error || 'Unknown error'}]`);
}
}
console.log('[handleSaveAll] Finished loop. Failed:', failedArticles.length);
if (failedArticles.length > 0) {
alert(`Failed to save ${failedArticles.length} items: ${failedArticles.join(', ')}. Please try again.`);
alert(`Failed to save items:\n\n${failedArticles.join('\n')}\n\nPlease try again.`);
} else {
setAppState(prev => ({ ...prev, hasUnsavedChanges: false }));
}
+24 -8
View File
@@ -33,7 +33,7 @@ export async function getAllSyncedRows(token?: string): Promise<Record<string, S
}
}
export async function saveRowToSupabase(articleNo: string, rowData: ExcelRow, token?: string): Promise<boolean> {
export async function saveRowToSupabase(articleNo: string, rowData: ExcelRow, token?: string): Promise<{ success: boolean; error?: string }> {
try {
const response = await fetch(
`${SUPABASE_URL}/rest/v1/products`,
@@ -54,10 +54,18 @@ export async function saveRowToSupabase(articleNo: string, rowData: ExcelRow, to
}
);
return response.ok || response.status === 201;
} catch (error) {
if (!response.ok) {
const err = await response.json().catch(() => ({}));
return {
success: false,
error: `${response.status} ${response.statusText}: ${err.message || err.error_description || 'Unknown error'}`
};
}
return { success: true };
} catch (error: any) {
console.error('Error saving to Supabase:', error);
return false;
return { success: false, error: error.message || 'Network error' };
}
}
@@ -78,7 +86,7 @@ export async function saveHistoryEntry(
newData: ExcelRow,
changedBy: string,
token?: string
): Promise<boolean> {
): Promise<{ success: boolean; error?: string }> {
try {
const response = await fetch(
`${SUPABASE_URL}/rest/v1/products_history`,
@@ -101,10 +109,18 @@ export async function saveHistoryEntry(
}
);
return response.ok;
} catch (error) {
if (!response.ok) {
const err = await response.json().catch(() => ({}));
return {
success: false,
error: `History ${response.status}: ${err.message || 'Unknown error'}`
};
}
return { success: true };
} catch (error: any) {
console.error('Error saving history to Supabase:', error);
return false;
return { success: false, error: error.message || 'Network error' };
}
}