diff --git a/web/src/app/page.tsx b/web/src/app/page.tsx index dbb1021..978431a 100644 --- a/web/src/app/page.tsx +++ b/web/src/app/page.tsx @@ -1,6 +1,6 @@ "use client"; -import { Suspense, useCallback, useEffect, useMemo, useRef, useState } from "react"; +import React, { Suspense, useCallback, useEffect, useMemo, useRef, useState } from "react"; import { createPortal } from "react-dom"; import { useRouter, useSearchParams } from "next/navigation"; import { @@ -18,8 +18,8 @@ import { XIcon, } from "lucide-react"; import { formatDistanceToNow } from "date-fns"; -import { createTicket, getCustomFields, getLifecycles, getQueueCustomFields, getQueues, getTickets, getUsers, getViews, createView, deleteView, getDashboards, getTicketTransactions, updateTicket } from "@/lib/api"; -import type { CustomField, Lifecycle, Queue, QueueCustomField, SavedView, Ticket, Transaction, User } from "@/lib/types"; +import { createTicket, getCustomFields, getLifecycles, getQueueCustomFields, getQueues, getTickets, getUsers, getViews, createView, deleteView, getDashboards, updateTicket } from "@/lib/api"; +import type { CustomField, Lifecycle, Queue, QueueCustomField, SavedView, Ticket, User } from "@/lib/types"; import { Button } from "@/components/ui/button"; import { Dialog, @@ -183,8 +183,6 @@ function TicketWorkbenchContent() { const [loading, setLoading] = useState(true); const [refreshing, setRefreshing] = useState(false); const [error, setError] = useState(null); - const [selectedId, setSelectedId] = useState(null); - const [selectedTxs, setSelectedTxs] = useState([]); const [batchIds, setBatchIds] = useState>(new Set()); const [batchSaving, setBatchSaving] = useState(false); @@ -524,20 +522,12 @@ function TicketWorkbenchContent() { }); }, [clock, filters, queues, routeQueue, searchQuery, sortKey, tickets, view]); - const selectedTicket = - filteredTickets.find((ticket) => ticket.id === selectedId) ?? null; - // Fetch transactions when selection changes - useEffect(() => { - if (!selectedTicket) { setSelectedTxs([]); return; } - getTicketTransactions(selectedTicket.id).then(({ data }) => setSelectedTxs(data ?? [])); - }, [selectedTicket?.id]); const handleQuickStatus = async (ticketId: number, newStatus: string) => { const { data } = await updateTicket(ticketId, { status: newStatus }); if (data) { setTickets((prev) => prev.map((t) => (t.id === ticketId ? data.ticket : t))); - getTicketTransactions(ticketId).then(({ data: txs }) => setSelectedTxs(txs ?? [])); } }; @@ -872,8 +862,8 @@ function TicketWorkbenchContent() { )} -
-
+
+
{filteredTickets.length === 0 ? (
@@ -921,7 +911,7 @@ function TicketWorkbenchContent() {
{filteredTickets.map((ticket) => { - const selected = ticket.id === selectedId; + const selected = false; const ownerName = ticket.owner_id ? users.find((u) => u.id === ticket.owner_id)?.username ?? "assigned" : null; @@ -931,7 +921,7 @@ function TicketWorkbenchContent() { key={ticket.id} role="button" tabIndex={0} - onClick={() => setSelectedId(ticket.id)} + onClick={() => router.push(`/tickets/${ticket.id}`)} onDoubleClick={() => router.push(`/tickets/${ticket.id}`)} onKeyDown={(e) => { if (e.key === "Enter") router.push(`/tickets/${ticket.id}`); }} className={cn( @@ -1035,160 +1025,6 @@ function TicketWorkbenchContent() { )}
- - {/* Floating batch action bar */} - {batchIds.size > 0 && ( -
- - {batchIds.size} selected - - -
- Status: - {statusOptions.filter((s) => s.key !== "all").slice(0, 5).map((s) => ( - - ))} -
- -
-
- )} - -