fix: changing between two tickets sometimes shows another tickets message

This commit is contained in:
canove
2020-10-17 14:08:53 -03:00
parent 67a56473e4
commit 18eb5e4502
2 changed files with 13 additions and 5 deletions

View File

@@ -263,10 +263,13 @@ const MessagesList = ({ ticketId, isGroup }) => {
const [selectedMessageId, setSelectedMessageId] = useState(null); const [selectedMessageId, setSelectedMessageId] = useState(null);
const [anchorEl, setAnchorEl] = useState(null); const [anchorEl, setAnchorEl] = useState(null);
const messageOptionsMenuOpen = Boolean(anchorEl); const messageOptionsMenuOpen = Boolean(anchorEl);
const currentTicketId = useRef(ticketId);
useEffect(() => { useEffect(() => {
dispatch({ type: "RESET" }); dispatch({ type: "RESET" });
setPageNumber(1); setPageNumber(1);
currentTicketId.current = ticketId;
}, [ticketId]); }, [ticketId]);
useEffect(() => { useEffect(() => {
@@ -278,13 +281,17 @@ const MessagesList = ({ ticketId, isGroup }) => {
params: { pageNumber }, params: { pageNumber },
}); });
dispatch({ type: "LOAD_MESSAGES", payload: data.messages }); if (currentTicketId.current === ticketId) {
setHasMore(data.hasMore); dispatch({ type: "LOAD_MESSAGES", payload: data.messages });
setHasMore(data.hasMore);
setLoading(false);
}
if (pageNumber === 1 && data.messages.length > 1) { if (pageNumber === 1 && data.messages.length > 1) {
scrollToBottom(); scrollToBottom();
} }
} catch (err) { } catch (err) {
setLoading(false);
const errorMsg = err.response?.data?.error; const errorMsg = err.response?.data?.error;
if (errorMsg) { if (errorMsg) {
if (i18n.exists(`backendErrors.${errorMsg}`)) { if (i18n.exists(`backendErrors.${errorMsg}`)) {
@@ -297,11 +304,11 @@ const MessagesList = ({ ticketId, isGroup }) => {
} }
} }
}; };
setLoading(false);
fetchMessages(); fetchMessages();
}, 500); }, 500);
return () => clearTimeout(delayDebounceFn); return () => {
clearTimeout(delayDebounceFn);
};
}, [pageNumber, ticketId]); }, [pageNumber, ticketId]);
useEffect(() => { useEffect(() => {

View File

@@ -74,6 +74,7 @@ const Ticket = () => {
setTicket(data); setTicket(data);
setLoading(false); setLoading(false);
} catch (err) { } catch (err) {
setLoading(false);
const errorMsg = err.response?.data?.error; const errorMsg = err.response?.data?.error;
if (errorMsg) { if (errorMsg) {
if (i18n.exists(`backendErrors.${errorMsg}`)) { if (i18n.exists(`backendErrors.${errorMsg}`)) {