From f7b8093d040c574f983b7e54f04086fa0c7ada99 Mon Sep 17 00:00:00 2001 From: riyadhafraa <49757212-riyadhafraa@users.noreply.replit.com> Date: Tue, 28 Apr 2026 05:46:18 +0000 Subject: [PATCH] Add Reorder shortcut to finished orders on /my-orders MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Original task (Task #66) Let users quickly re-order a service from their order history. On every order card whose status is `completed` or `cancelled`, show a "Reorder" button (Arabic: "اطلب مجددًا") that opens the existing OrderServiceModal pre-filled with the original notes. Submitting creates a brand-new order via the existing endpoint; the original order stays unchanged. ## Implementation - `artifacts/tx-os/src/components/order-service-modal.tsx`: added an optional `initialNotes` prop and seeded the notes textarea with it (truncated to NOTES_MAX) whenever the modal opens. Existing services page callers are unaffected (prop defaults to undefined => empty notes). - `artifacts/tx-os/src/pages/my-orders.tsx`: - Imported the `RotateCcw` icon and `OrderServiceModal`. - Added a "Reorder" button (with icon) on `OrderCard` that shows only for finished orders, alongside the existing cancel/delete actions. - Hoisted reorder modal state to `MyOrdersPage` via a new `reorderTarget` state and an `onReorder` callback wired through `OrderCard`. - Render `OrderServiceModal` at the page level using the original order's service info and notes; closing/submitting clears state. - `artifacts/tx-os/src/locales/{en,ar}.json`: added `myOrders.reorder` ("Reorder" / "اطلب مجددًا"). ## Notes / non-deviations - Task description references `artifacts/teaboy-os/...`; the actual artifact in this repo is `artifacts/tx-os/`. Same files, same intent. - Submitting reuses `useCreateServiceOrder` so the original order is untouched and standard error/success toasts fire from the modal. ## Verification - `pnpm exec tsc --noEmit` shows no new errors in the touched files. - E2E test: created a fresh user with one completed and one cancelled order, logged in, opened /my-orders, confirmed the Reorder button appears with notes prefilled in the modal, edited the notes, submitted, and verified a new pending order with the edited notes appeared while the original order remained unchanged. Replit-Task-Id: 2140b360-9d2f-45d9-9ddc-267ea29f7d7c --- artifacts/tx-os/public/opengraph.jpg | Bin 25895 -> 24619 bytes .../src/components/order-service-modal.tsx | 6 ++- artifacts/tx-os/src/locales/ar.json | 1 + artifacts/tx-os/src/locales/en.json | 1 + artifacts/tx-os/src/pages/my-orders.tsx | 51 +++++++++++++++++- 5 files changed, 55 insertions(+), 4 deletions(-) diff --git a/artifacts/tx-os/public/opengraph.jpg b/artifacts/tx-os/public/opengraph.jpg index 4aa3e468764a4d4c680bc2db8621cc826f7bb3d3..4ebcab268f4dfaf8a069049d06e6ca3de5a8514b 100644 GIT binary patch literal 24619 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%0DJ({pcvz=UhNnKM8_Mf%>6mDq{!WM`LCw^4e2G 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 literal 25895 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 string | null; + initialNotes?: string | null; }; export function OrderServiceModal({ @@ -37,6 +38,7 @@ export function OrderServiceModal({ onOpenChange, service, resolveImage, + initialNotes, }: Props) { const { t, i18n } = useTranslation(); const lang = i18n.language; @@ -49,10 +51,10 @@ export function OrderServiceModal({ useEffect(() => { if (open) { - setNotes(""); + setNotes((initialNotes ?? "").slice(0, NOTES_MAX)); setImgErrored(false); } - }, [open, service?.id]); + }, [open, service?.id, initialNotes]); if (!service) return null; const name = lang === "ar" ? service.nameAr : service.nameEn; diff --git a/artifacts/tx-os/src/locales/ar.json b/artifacts/tx-os/src/locales/ar.json index 0efb5df0..208b3cb9 100644 --- a/artifacts/tx-os/src/locales/ar.json +++ b/artifacts/tx-os/src/locales/ar.json @@ -134,6 +134,7 @@ "cancelFailed": "تعذّر إلغاء الطلب", "restoreFailed": "تعذّر استعادة الطلب", "delete": "حذف", + "reorder": "اطلب مجددًا", "deleteConfirmTitle": "حذف هذا الطلب؟", "deleteConfirmBody": "سيتم حذف الطلب نهائياً من سجلّك.", "deleteConfirm": "نعم، احذف", diff --git a/artifacts/tx-os/src/locales/en.json b/artifacts/tx-os/src/locales/en.json index 58591b10..84262b38 100644 --- a/artifacts/tx-os/src/locales/en.json +++ b/artifacts/tx-os/src/locales/en.json @@ -134,6 +134,7 @@ "cancelFailed": "Could not cancel the order", "restoreFailed": "Could not restore the order", "delete": "Delete", + "reorder": "Reorder", "deleteConfirmTitle": "Delete this order?", "deleteConfirmBody": "This will permanently remove the order from your history.", "deleteConfirm": "Yes, delete", diff --git a/artifacts/tx-os/src/pages/my-orders.tsx b/artifacts/tx-os/src/pages/my-orders.tsx index 6ebeaf33..696a009b 100644 --- a/artifacts/tx-os/src/pages/my-orders.tsx +++ b/artifacts/tx-os/src/pages/my-orders.tsx @@ -21,8 +21,10 @@ import { PackageCheck, XCircle, Trash2, + RotateCcw, } from "lucide-react"; import { Button } from "@/components/ui/button"; +import { OrderServiceModal } from "@/components/order-service-modal"; import { AlertDialog, AlertDialogAction, @@ -156,9 +158,11 @@ function OrderImage({ function OrderCard({ order, onDelete, + onReorder, }: { order: ServiceOrder; onDelete: (id: number) => void; + onReorder: (order: ServiceOrder) => void; }) { const { t, i18n } = useTranslation(); const queryClient = useQueryClient(); @@ -172,7 +176,9 @@ function OrderCard({ const img = resolveServiceImageUrl(order.service.imageUrl); const cancellable = order.status === "pending" || order.status === "received"; - const deletable = isFinished(order.status); + const finished = isFinished(order.status); + const deletable = finished; + const reorderable = finished; const handleCancel = () => { const previousStatus = order.status; @@ -258,8 +264,19 @@ function OrderCard({ - {(cancellable || deletable) && ( + {(cancellable || finished) && (
+ {reorderable && ( + + )} {cancellable && (
@@ -585,6 +622,16 @@ export default function MyOrdersPage() { + + { + if (!o) setReorderTarget(null); + }} + service={reorderTarget?.service ?? null} + resolveImage={resolveServiceImageUrl} + initialNotes={reorderTarget?.notes ?? null} + /> ); }