1import type { ListResource, Resource } from "@/types";
2import type { ODTicket } from "@/types/doctypes";
3import { createListResource, createResource } from "frappe-ui";
4
5export function getTicketListResource(): {
6 ticketsListResource: ListResource<ODTicket>;
7 ticketsCountResource: Resource<number>;
8} {
9 const ticketsListResource = createListResource({
10 doctype: "OD Ticket",
11 pageLength: 20,
12 fields: [
13 "name",
14 "subject",
15 "status",
16 "priority",
17 "creation",
18 "modified",
19 "_assign",
20 "response_by",
21 "resolution_by",
22 ],
23 orderBy: "modified desc",
24 });
25
26 // Permission-aware total for the current filters (unlike data.length,
27 // which only counts the fetched pages).
28 const ticketsCountResource = createResource({
29 url: "frappe.desk.reportview.get_count",
30 makeParams: () => ({
31 doctype: "OD Ticket",
32 filters: ticketsListResource.filters,
33 or_filters: ticketsListResource.orFilters,
34 }),
35 });
36
37 return { ticketsListResource, ticketsCountResource };
38}
39