adminFront/src/stores/tickets.ts

33 lines
925 B
TypeScript
Raw Normal View History

2023-03-20 15:25:28 +00:00
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 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 });
};