fix: menu reorder - use items state after drag, add logging

This commit is contained in:
2026-06-29 21:46:48 -05:00
parent d753a3713f
commit d67759485a
+17 -5
View File
@@ -1371,6 +1371,7 @@ function MenuSection({ items, setItems, images, onToast }: any) {
reordered.splice(overIdx, 0, moved); reordered.splice(overIdx, 0, moved);
// Update sort_order based on new position // Update sort_order based on new position
const updated = reordered.map((it: MenuItem, i: number) => ({ ...it, sort_order: i })); const updated = reordered.map((it: MenuItem, i: number) => ({ ...it, sort_order: i }));
console.log('Drag end:', { dragIdx, overIdx, oldOrder: sorted.map((it: MenuItem) => it.name), newOrder: updated.map((it: MenuItem) => it.name) });
setItems(updated); setItems(updated);
} }
setDragIdx(null); setDragIdx(null);
@@ -1379,15 +1380,26 @@ function MenuSection({ items, setItems, images, onToast }: any) {
const saveOrder = async () => { const saveOrder = async () => {
try { try {
// Use sorted order for consistency // Use items state (which has updated sort_order from drag)
const order = sorted.map((it: MenuItem, i: number) => ({ id: it.id, sort_order: i })); const currentItems = [...items].sort((a, b) => (a.sort_order || 0) - (b.sort_order || 0));
await fetch('/api/menu/reorder', { const order = currentItems.map((it: MenuItem, i: number) => ({ id: it.id, sort_order: i }));
console.log('Saving order:', order);
const res = await fetch('/api/menu/reorder', {
method: 'POST', method: 'POST',
headers: { 'Content-Type': 'application/json' }, headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ order }), body: JSON.stringify({ order }),
}); });
onToast('Order saved!', 'success'); if (res.ok) {
} catch { onToast('Error reordering', 'error'); } onToast('Order saved!', 'success');
} else {
const err = await res.json().catch(() => ({}));
console.error('Save order error:', err);
onToast(err.error || 'Error saving order', 'error');
}
} catch (e) {
console.error('Save order exception:', e);
onToast('Error reordering', 'error');
}
}; };
const sorted = [...items].sort((a, b) => (a.sort_order || 0) - (b.sort_order || 0)); const sorted = [...items].sort((a, b) => (a.sort_order || 0) - (b.sort_order || 0));