From ac2aa770fb16013a167dfa690f58fbcab4110c07 Mon Sep 17 00:00:00 2001 From: lukas Date: Thu, 1 Oct 2026 11:07:13 +0200 Subject: [PATCH] Make "Buy again" add the item to the basket The order status view now carries each item's menu item id and the ids of its current Options matching the ordered ones by name, since editing a Menu Item recreates its Options under new ids. Options no longer on the menu are left out. Co-Authored-By: Claude Opus 5.5 --- src/components/orders/OrderStatusView.tsx | 14 ++++-- src/domain/ordering.ts | 28 +++++++++-- tests/ordering.test.ts | 58 +++++++++++++++++++++++ 3 files changed, 93 insertions(+), 7 deletions(-) diff --git a/src/components/orders/OrderStatusView.tsx b/src/components/orders/OrderStatusView.tsx index 281ff27..55a81f0 100644 --- a/src/components/orders/OrderStatusView.tsx +++ b/src/components/orders/OrderStatusView.tsx @@ -1,9 +1,10 @@ -import { Link, useRouter } from '@tanstack/react-router' +import { Link, useNavigate, useRouter } from '@tanstack/react-router' import { AnimatePresence, motion, useReducedMotion } from 'framer-motion' import { useState } from 'react' import type { OrderStatus } from '#/db/schema.ts' import type { OrderItemStatusView } from '#/domain/ordering.ts' +import { useBasket } from '#/lib/basket.tsx' import { advanceSimulatedKitchen, cancelOrderItem, @@ -146,6 +147,8 @@ export const OrderStatusView = ({ backTo = '/orders', }: OrderStatusViewProps) => { const router = useRouter() + const navigate = useNavigate() + const basket = useBasket() const [pendingItemId, setPendingItemId] = useState(null) const [error, setError] = useState(null) const [simulating, setSimulating] = useState(false) @@ -162,6 +165,11 @@ export const OrderStatusView = ({ ? { duration: 0 } : { duration: 0.4, ease: 'easeInOut' as const } + const buyAgain = (item: OrderItemStatusView) => { + basket.add(item.menuItemId, item.buyAgainOptionIds) + void navigate({ to: '/basket' }) + } + const toggleSteps = (orderItemId: number) => { setExpandedItemIds((current) => { const next = new Set(current) @@ -344,9 +352,7 @@ export const OrderStatusView = ({