add tickets store
This commit is contained in:
parent
c045ad315a
commit
88d696f53e
49
src/stores/mocks/tickets.ts
Normal file
49
src/stores/mocks/tickets.ts
Normal file
@ -0,0 +1,49 @@
|
||||
import { Ticket } from "@root/model/ticket";
|
||||
|
||||
|
||||
export const testTickets: Ticket[] = [
|
||||
{
|
||||
"id": "cg5irh4vc9g7b3n3tcrg",
|
||||
"user": "6407625ed01874dcffa8b008",
|
||||
"sess": "6407625ed01874dcffa8b008",
|
||||
"ans": "",
|
||||
"state": "open",
|
||||
"top_message": {
|
||||
"id": "cg5irh4vc9g7b3n3tcs0",
|
||||
"ticket_id": "cg5irh4vc9g7b3n3tcrg",
|
||||
"user_id": "6407625ed01874dcffa8b008",
|
||||
"session_id": "6407625ed01874dcffa8b008",
|
||||
"message": "text",
|
||||
"files": [],
|
||||
"shown": {},
|
||||
"request_screenshot": "",
|
||||
"created_at": "2023-03-10T13:16:52.73Z"
|
||||
},
|
||||
"title": "textual ticket",
|
||||
"created_at": "2023-03-10T13:16:52.73Z",
|
||||
"updated_at": "2023-03-10T13:16:52.73Z",
|
||||
"rate": -1
|
||||
},
|
||||
{
|
||||
"id": "cg55nssvc9g7gddpnsug",
|
||||
"user": "",
|
||||
"sess": "",
|
||||
"ans": "",
|
||||
"state": "open",
|
||||
"top_message": {
|
||||
"id": "cg55nssvc9g7gddpnsv0",
|
||||
"ticket_id": "cg55nssvc9g7gddpnsug",
|
||||
"user_id": "",
|
||||
"session_id": "",
|
||||
"message": "text",
|
||||
"files": [],
|
||||
"shown": {},
|
||||
"request_screenshot": "",
|
||||
"created_at": "2023-03-09T22:21:39.822Z"
|
||||
},
|
||||
"title": "textual ticket",
|
||||
"created_at": "2023-03-09T22:21:39.822Z",
|
||||
"updated_at": "2023-03-09T22:21:39.822Z",
|
||||
"rate": -1
|
||||
}
|
||||
];
|
34
src/stores/tickets.ts
Normal file
34
src/stores/tickets.ts
Normal file
@ -0,0 +1,34 @@
|
||||
import { Ticket } from "@root/model/ticket";
|
||||
import { create } from "zustand";
|
||||
import { devtools } from "zustand/middleware";
|
||||
|
||||
|
||||
interface TicketStore {
|
||||
tickets: Ticket[];
|
||||
}
|
||||
|
||||
export const useTicketStore = create<TicketStore>()(
|
||||
devtools(
|
||||
(set, get) => ({
|
||||
tickets: [],
|
||||
}),
|
||||
{
|
||||
name: "Tickets store"
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
export const setTickets = (tickets: Ticket[]) => useTicketStore.setState(({ tickets }));
|
||||
export const addTickets = (tickets: Ticket[]) => useTicketStore.setState(state => ({ tickets: [...state.tickets, ...tickets] }));
|
||||
|
||||
export const addOrUpdateTicket = (updatedTicket: Ticket) => {
|
||||
const state = useTicketStore.getState();
|
||||
const ticketIndex = state.tickets.findIndex(ticket => ticket.id === updatedTicket.id);
|
||||
|
||||
if (ticketIndex === -1) {
|
||||
return useTicketStore.setState({ tickets: [...state.tickets, updatedTicket] });
|
||||
}
|
||||
|
||||
const newTickets = state.tickets.slice().splice(ticketIndex, 1, updatedTicket);
|
||||
useTicketStore.setState({ tickets: newTickets });
|
||||
};
|
Loading…
Reference in New Issue
Block a user