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

@@ -11,7 +11,6 @@
"@testing-library/user-event": "^7.2.1",
"axios": "^0.19.2",
"date-fns": "^2.14.0",
"dotenv": "^8.2.0",
"emoji-mart": "^3.0.0",
"formik": "^2.1.5",
"mic-recorder-to-mp3": "^2.2.1",

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];
}
});
};

View File

@@ -4158,7 +4158,7 @@ dotenv-expand@5.1.0:
resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0"
integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==
dotenv@8.2.0, dotenv@^8.2.0:
dotenv@8.2.0:
version "8.2.0"
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a"
integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==