fix: always keep only 20 tickets in TicketsList

This commit is contained in:
canove
2020-08-10 19:56:09 -03:00
parent c7c451d227
commit 7ca50ca56b
4 changed files with 29 additions and 15 deletions

View File

@@ -267,7 +267,7 @@ const MessagesList = () => {
}
};
fetchMessages();
}, 1000);
}, 500);
return () => clearTimeout(delayDebounceFn);
}, [pageNumber, ticketId, history]);
@@ -284,16 +284,19 @@ const MessagesList = () => {
useEffect(() => {
socket.on("appMessage", data => {
if (data.action === "create" && !loading) {
if (loading) return;
if (data.action === "create") {
addMessage(data.message);
scrollToBottom();
} else if (data.action === "update") {
}
if (data.action === "update") {
updateMessageAck(data.message);
}
});
socket.on("contact", data => {
if (data.action === "update" && !loading) {
if (data.action === "update") {
setContact(data.contact);
}
});

View File

@@ -219,13 +219,17 @@ const Tickets = () => {
useEffect(() => {
socket.on("ticket", data => {
if (data.action === "updateUnread" && !loading) {
if (loading) return;
if (data.action === "updateUnread") {
resetUnreadMessages(data);
}
if (data.action === "updateStatus" || data.action === "create") {
updateTickets(data);
}
if (data.action === "delete" && !loading) {
if (data.action === "delete") {
deleteTicket(data);
if (ticketId && data.ticketId === +ticketId) {
toast.warn("O ticket que você estava foi deletado.");
@@ -235,7 +239,9 @@ const Tickets = () => {
});
socket.on("appMessage", data => {
if (data.action === "create" && !loading) {
if (loading) return;
if (data.action === "create") {
updateTickets(data);
if (
(ticketId &&
@@ -249,6 +255,8 @@ const Tickets = () => {
});
}, [history, ticketId, userId, loading]);
console.log(tickets);
const loadMore = () => {
setPageNumber(prevState => prevState + 1);
};
@@ -257,13 +265,17 @@ const Tickets = () => {
setTickets(prevState => {
const ticketIndex = prevState.findIndex(t => t.id === ticket.id);
if (ticketIndex === -1) {
return [ticket, ...prevState];
if (prevState.length >= 20) {
if (ticketIndex !== -1) {
let aux = [...prevState];
aux[ticketIndex] = ticket;
aux.unshift(aux.splice(ticketIndex, 1)[0]);
return aux;
} else {
return [ticket, ...prevState];
}
} else {
let aux = [...prevState];
aux[ticketIndex] = ticket;
aux.unshift(aux.splice(ticketIndex, 1)[0]);
return aux;
return [ticket, ...prevState];
}
});
};