fix: HistoryEntry.id type changed from number to string (Supabase returns UUID)

This commit is contained in:
Christian Vidal Wolf
2026-04-23 18:58:52 +02:00
parent be2adbfe68
commit ee94926d04
2 changed files with 11 additions and 19 deletions
+1 -5
View File
@@ -8,7 +8,7 @@ import { cn } from '../lib/utils';
interface HistoryViewProps {
headers: string[];
data: ExcelRow[];
onRevert: (articleNo: string, oldData: ExcelRow, historyId?: number) => void;
onRevert: (articleNo: string, oldData: ExcelRow, historyId?: string) => void;
onEdit?: (rowIndex: number) => void;
}
@@ -21,22 +21,18 @@ export function HistoryView({ headers, data, onRevert, onEdit }: HistoryViewProp
const [isFullscreen, setIsFullscreen] = useState(false);
useEffect(() => {
console.log('[HistoryView] Mounting, data length:', data.length);
loadHistory();
}, []);
useEffect(() => {
console.log('[HistoryView] data changed, length:', data.length);
if (data.length > 0) {
loadHistory();
}
}, [data]);
const loadHistory = async () => {
console.log('[HistoryView] loadHistory called');
setLoading(true);
const historyData = await getHistory();
console.log('[HistoryView] getHistory returned:', historyData.length, 'entries', historyData[0]?.id === -1 || historyData[0]?.id === -2 ? '(ERROR)' : '');
setHistory(historyData);
setLoading(false);
};
+10 -14
View File
@@ -108,7 +108,7 @@ export async function saveRowToSupabase(articleNo: string, rowData: ExcelRow): P
}
export interface HistoryEntry {
id?: number;
id?: string;
product_id: string;
article_name: string;
old_data: ExcelRow;
@@ -161,18 +161,16 @@ export async function saveHistoryEntry(
export async function getHistory(): Promise<HistoryEntry[]> {
try {
const url = `${SUPABASE_URL}/rest/v1/products_history?select=*&order=changed_at.desc&limit=500`;
console.log('[getHistory] Fetching from:', url);
console.log('[getHistory] Session:', !!getStoredSession(), 'ANON_KEY available:', !!SUPABASE_ANON_KEY);
const response = await safeFetch(url, { cache: 'no-store' });
console.log('[getHistory] Response status:', response.status);
console.log('[getHistory] Response ok:', response.ok);
const response = await safeFetch(
`${SUPABASE_URL}/rest/v1/products_history?select=*&order=changed_at.desc&limit=500`,
{ cache: 'no-store' }
);
if (!response.ok) {
const errText = await response.text();
console.error('[getHistory] Error response:', errText);
console.error('[getHistory] Error:', response.status, errText.substring(0, 200));
return [{
id: -1,
id: 'ERROR',
product_id: 'ERROR',
article_name: `Failed: ${response.status} ${errText.substring(0, 200)}`,
old_data: [],
@@ -181,13 +179,11 @@ export async function getHistory(): Promise<HistoryEntry[]> {
changed_by: 'system'
}];
}
const data = await response.json();
console.log('[getHistory] Received entries:', Array.isArray(data) ? data.length : data);
return data;
return await response.json();
} catch (error: any) {
console.error('[getHistory] Exception:', error.message);
return [{
id: -2,
id: 'EXCEPTION',
product_id: 'EXCEPTION',
article_name: `Message: ${error.message}`,
old_data: [],
@@ -201,7 +197,7 @@ export async function getHistory(): Promise<HistoryEntry[]> {
export async function deleteHistoryEntry(id: string): Promise<boolean> {
try {
const response = await safeFetch(
`${SUPABASE_URL}/rest/v1/products_history?id=eq.${encodeURIComponent(id)}`,
`${SUPABASE_URL}/rest/v1/products_history?id=eq.${encodeURIComponent(String(id))}`,
{ method: 'DELETE' }
);