refactor requests
This commit is contained in:
parent
028446f33d
commit
4e5c1edd66
@ -80,6 +80,9 @@ export async function getTicketMessages({
|
|||||||
useToken: true,
|
useToken: true,
|
||||||
body,
|
body,
|
||||||
signal,
|
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);
|
const ticket = tickets.find(ticket => ticket.id === ticketId);
|
||||||
|
|
||||||
useEffect(function fetchTicketMessages() {
|
useEffect(function scrollOnNewMessage() {
|
||||||
if (!ticketId) return;
|
scrollToBottom();
|
||||||
|
}, [messages]);
|
||||||
|
|
||||||
const getTicketsBody: GetMessagesRequest = {
|
useEffect(
|
||||||
amt: messagesPerPage,
|
function fetchTicketMessages() {
|
||||||
page: messageApiPage,
|
if (!ticketId) return;
|
||||||
ticket: ticketId,
|
|
||||||
};
|
|
||||||
const controller = new AbortController();
|
|
||||||
|
|
||||||
setMessageFetchState("fetching");
|
const getTicketsBody: GetMessagesRequest = {
|
||||||
getTicketMessages({
|
amt: messagesPerPage,
|
||||||
body: getTicketsBody,
|
page: messageApiPage,
|
||||||
signal: controller.signal,
|
ticket: ticketId,
|
||||||
}).then(result => {
|
};
|
||||||
console.log("GetMessagesResponse", result);
|
const controller = new AbortController();
|
||||||
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);
|
|
||||||
});
|
|
||||||
|
|
||||||
return () => {
|
setMessageFetchState("fetching");
|
||||||
controller.abort();
|
getTicketMessages({
|
||||||
};
|
body: getTicketsBody,
|
||||||
}, [messageApiPage, messagesPerPage, ticketId]);
|
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() {
|
useEffect(function subscribeToMessages() {
|
||||||
==== BASE ====
|
==== BASE ====
|
||||||
@ -105,6 +110,7 @@ export default function Chat() {
|
|||||||
if (messagesFetchStateRef.current !== "idle") return;
|
if (messagesFetchStateRef.current !== "idle") return;
|
||||||
|
|
||||||
if (chatBox.scrollTop < chatBox.clientHeight) {
|
if (chatBox.scrollTop < chatBox.clientHeight) {
|
||||||
|
if (chatBox.scrollTop < 1) chatBox.scrollTop = 50;
|
||||||
incrementMessageApiPage();
|
incrementMessageApiPage();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -247,3 +253,9 @@ export default function Chat() {
|
|||||||
</Box>
|
</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