refactor requests
This commit is contained in:
parent
028446f33d
commit
4e5c1edd66
@ -80,6 +80,9 @@ export async function getTicketMessages({
|
||||
useToken: true,
|
||||
body,
|
||||
signal,
|
||||
}).then((response) => {
|
||||
const result = (response as any).data as GetMessagesResponse;
|
||||
return result;
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -30,36 +30,41 @@ export default function Chat() {
|
||||
|
||||
const ticket = tickets.find(ticket => ticket.id === ticketId);
|
||||
|
||||
useEffect(function fetchTicketMessages() {
|
||||
if (!ticketId) return;
|
||||
useEffect(function scrollOnNewMessage() {
|
||||
scrollToBottom();
|
||||
}, [messages]);
|
||||
|
||||
const getTicketsBody: GetMessagesRequest = {
|
||||
amt: messagesPerPage,
|
||||
page: messageApiPage,
|
||||
ticket: ticketId,
|
||||
};
|
||||
const controller = new AbortController();
|
||||
useEffect(
|
||||
function fetchTicketMessages() {
|
||||
if (!ticketId) return;
|
||||
|
||||
setMessageFetchState("fetching");
|
||||
getTicketMessages({
|
||||
body: getTicketsBody,
|
||||
signal: controller.signal,
|
||||
}).then(result => {
|
||||
console.log("GetMessagesResponse", result);
|
||||
if (result?.length > 0) {
|
||||
if (chatBoxRef.current && chatBoxRef.current.scrollTop < 1) chatBoxRef.current.scrollTop = 1;
|
||||
addOrUpdateMessages(result);
|
||||
setMessageFetchState("idle");
|
||||
} else setMessageFetchState("all fetched");
|
||||
}).catch(error => {
|
||||
console.log("Error fetching messages", error);
|
||||
enqueueSnackbar(error.message);
|
||||
});
|
||||
const getTicketsBody: GetMessagesRequest = {
|
||||
amt: messagesPerPage,
|
||||
page: messageApiPage,
|
||||
ticket: ticketId,
|
||||
};
|
||||
const controller = new AbortController();
|
||||
|
||||
return () => {
|
||||
controller.abort();
|
||||
};
|
||||
}, [messageApiPage, messagesPerPage, ticketId]);
|
||||
setMessageFetchState("fetching");
|
||||
getTicketMessages({
|
||||
body: getTicketsBody,
|
||||
signal: controller.signal,
|
||||
}).then(result => {
|
||||
console.log("GetMessagesResponse", result);
|
||||
if (result?.length > 0) {
|
||||
addOrUpdateMessages(result);
|
||||
setMessageFetchState("idle");
|
||||
} else setMessageFetchState("all fetched");
|
||||
}).catch(error => {
|
||||
console.log("Error fetching messages", error);
|
||||
enqueueSnackbar(error.message);
|
||||
});
|
||||
|
||||
return () => {
|
||||
controller.abort();
|
||||
clearMessageState();
|
||||
};
|
||||
}, [messageApiPage, messagesPerPage, ticketId]);
|
||||
|
||||
useEffect(function subscribeToMessages() {
|
||||
==== BASE ====
|
||||
@ -105,6 +110,7 @@ export default function Chat() {
|
||||
if (messagesFetchStateRef.current !== "idle") return;
|
||||
|
||||
if (chatBox.scrollTop < chatBox.clientHeight) {
|
||||
if (chatBox.scrollTop < 1) chatBox.scrollTop = 50;
|
||||
incrementMessageApiPage();
|
||||
}
|
||||
};
|
||||
@ -247,3 +253,9 @@ export default function Chat() {
|
||||
</Box>
|
||||
);
|
||||
}
|
||||
|
||||
function sortMessagesByTime(message1: TicketMessage, message2: TicketMessage) {
|
||||
const date1 = new Date(message1.created_at).getTime();
|
||||
const date2 = new Date(message2.created_at).getTime();
|
||||
return date1 - date2;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user