From 8ce52b456daaffae97fcabd906e6a6e735f64701 Mon Sep 17 00:00:00 2001 From: Dana Khaing Date: Sat, 23 May 2026 11:46:00 +0100 Subject: [PATCH] Parallelize ticket history refresh Co-authored-by: Khant Zayar --- .../tickets/ticket-history-page.tsx | 46 +++++++++++-------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/flowbit-frontend/src/components/tickets/ticket-history-page.tsx b/flowbit-frontend/src/components/tickets/ticket-history-page.tsx index 99c362f..0586bd3 100644 --- a/flowbit-frontend/src/components/tickets/ticket-history-page.tsx +++ b/flowbit-frontend/src/components/tickets/ticket-history-page.tsx @@ -174,6 +174,19 @@ export function TicketHistoryPage() { refundFilter, ]); + async function loadTicketList(periodId: number) { + return fetchTicketPage({ + periodId, + page: currentPage, + pageSize, + search: deferredSearchTerm, + refundFilter, + dateFrom, + dateTo, + sort: sortBy, + }); + } + const groupedTickets = useMemo(() => { const groups: Array<{ label: string; tickets: FlowBitTicketListItem[] }> = []; @@ -237,25 +250,22 @@ export function TicketHistoryPage() { } async function refreshTicketHistoryState() { - if (activePeriod) { - const response = await fetchTicketPage({ - periodId: activePeriod.id, - page: currentPage, - pageSize, - search: deferredSearchTerm, - refundFilter, - dateFrom, - dateTo, - sort: sortBy, - }); - setTickets(response.results); - setServerTotalPages(response.total_pages); - setServerTicketCount(response.count); - setServerTotalEntries(response.summary.total_entries); - setServerTotalAmount(response.summary.total_amount); + if (!activePeriod) { + return; } - if (selectedTicketNumber) { - const detail = await fetchTicketDetail(selectedTicketNumber); + + const listPromise = loadTicketList(activePeriod.id); + const detailPromise = selectedTicketNumber + ? fetchTicketDetail(selectedTicketNumber) + : Promise.resolve(null); + + const [response, detail] = await Promise.all([listPromise, detailPromise]); + setTickets(response.results); + setServerTotalPages(response.total_pages); + setServerTicketCount(response.count); + setServerTotalEntries(response.summary.total_entries); + setServerTotalAmount(response.summary.total_amount); + if (detail) { setSelectedTicket(detail); } }