diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx index c922ac2..222047e 100644 --- a/src/app/admin/page.tsx +++ b/src/app/admin/page.tsx @@ -1365,11 +1365,13 @@ function MenuSection({ items, setItems, images, onToast }: any) { const handleDragEnd = () => { if (dragIdx !== null && overIdx !== null && dragIdx !== overIdx) { - const reordered = [...items]; + // Use sorted array for correct index mapping + const reordered = [...sorted]; const [moved] = reordered.splice(dragIdx, 1); reordered.splice(overIdx, 0, moved); - setItems(reordered); - setItems(reordered); + // Update sort_order based on new position + const updated = reordered.map((it: MenuItem, i: number) => ({ ...it, sort_order: i })); + setItems(updated); } setDragIdx(null); setOverIdx(null); @@ -1377,10 +1379,12 @@ function MenuSection({ items, setItems, images, onToast }: any) { const saveOrder = async () => { try { + // Use sorted order for consistency + const order = sorted.map((it: MenuItem, i: number) => ({ id: it.id, sort_order: i })); await fetch('/api/menu/reorder', { method: 'POST', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ order: items.map((it: MenuItem, i: number) => ({ id: it.id, sort_order: i })) }), + body: JSON.stringify({ order }), }); onToast('Order saved!', 'success'); } catch { onToast('Error reordering', 'error'); } diff --git a/src/app/api/menu/reorder/route.ts b/src/app/api/menu/reorder/route.ts index 1aab782..244fbb1 100644 --- a/src/app/api/menu/reorder/route.ts +++ b/src/app/api/menu/reorder/route.ts @@ -13,10 +13,10 @@ export async function POST(request: NextRequest) { } // Each entry: { id: number, sort_order: number } - const updates = order.map((item: { id: number; sort_order: number }, index: number) => + const updates = order.map((item: { id: number; sort_order: number }) => db.query( 'UPDATE menu_items SET sort_order = $1 WHERE id = $2', - [index, item.id] + [item.sort_order, item.id] ) );