displays no more messages found message from server
This commit is contained in:
@@ -31,6 +31,7 @@ type MessagesAreaProps = {
|
|||||||
messageHandler: (msg: ChatMessages) => void;
|
messageHandler: (msg: ChatMessages) => void;
|
||||||
setContactsList: React.Dispatch<React.SetStateAction<ContactsProps[]>>;
|
setContactsList: React.Dispatch<React.SetStateAction<ContactsProps[]>>;
|
||||||
fetchPreviousMessages: (contact: string | null) => Promise<void>;
|
fetchPreviousMessages: (contact: string | null) => Promise<void>;
|
||||||
|
errorMessage: string | null;
|
||||||
};
|
};
|
||||||
|
|
||||||
function MessagesArea({
|
function MessagesArea({
|
||||||
@@ -40,6 +41,7 @@ function MessagesArea({
|
|||||||
setContactsList,
|
setContactsList,
|
||||||
messageHandler,
|
messageHandler,
|
||||||
fetchPreviousMessages,
|
fetchPreviousMessages,
|
||||||
|
errorMessage,
|
||||||
}: MessagesAreaProps) {
|
}: MessagesAreaProps) {
|
||||||
const messagesEndRef = useRef<HTMLDivElement>(null);
|
const messagesEndRef = useRef<HTMLDivElement>(null);
|
||||||
const containerRef = useRef<HTMLDivElement>(null);
|
const containerRef = useRef<HTMLDivElement>(null);
|
||||||
@@ -56,7 +58,10 @@ function MessagesArea({
|
|||||||
setIsFetchingHistory(true);
|
setIsFetchingHistory(true);
|
||||||
fetchPreviousMessages(currentContact)
|
fetchPreviousMessages(currentContact)
|
||||||
.then(() => setIsLoading(false))
|
.then(() => setIsLoading(false))
|
||||||
.catch((e) => console.error('Failed to fetch messages: ', e));
|
.catch((e) => {
|
||||||
|
console.error('Failed to fetch messages: ', e);
|
||||||
|
setIsLoading(false);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -128,6 +133,7 @@ function MessagesArea({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div ref={containerRef} className="flex flex-col h-full overflow-y-auto">
|
<div ref={containerRef} className="flex flex-col h-full overflow-y-auto">
|
||||||
|
<p className="text-center text-gray-400">{errorMessage}</p>
|
||||||
<ul className="flex-grow list-none">
|
<ul className="flex-grow list-none">
|
||||||
{isLoading ? <LoadingWheel /> : null}
|
{isLoading ? <LoadingWheel /> : null}
|
||||||
{messageList}
|
{messageList}
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ function Chat() {
|
|||||||
const [currentContact, setCurrentContact] = useState<string | null>(null);
|
const [currentContact, setCurrentContact] = useState<string | null>(null);
|
||||||
const [cursor, setCursor] = useState<number>(0);
|
const [cursor, setCursor] = useState<number>(0);
|
||||||
const [messages, setMessages] = useState<ChatMessages[]>([]);
|
const [messages, setMessages] = useState<ChatMessages[]>([]);
|
||||||
|
const [errorMessage, setErrorMessage] = useState<string | null>(null);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const token = Cookies.get('token');
|
const token = Cookies.get('token');
|
||||||
@@ -62,32 +63,42 @@ function Chat() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const fetchMessages = async (currentContact: string | null) => {
|
const fetchMessages = async (currentContact: string | null) => {
|
||||||
const messages = await getMessages(currentContact);
|
|
||||||
console.log('Fetching messages for: ', currentContact);
|
console.log('Fetching messages for: ', currentContact);
|
||||||
setCursor(() => {
|
try {
|
||||||
return Math.min(
|
const messages = await getMessages(currentContact);
|
||||||
...messages.messages.map((message) => message.message_id),
|
|
||||||
);
|
setCursor(() => {
|
||||||
});
|
return Math.min(
|
||||||
messages.messages.forEach(messageHandler);
|
...messages.messages.map((message) => message.message_id),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
messages.messages.forEach(messageHandler);
|
||||||
|
} catch (e) {
|
||||||
|
setErrorMessage(e.response.data.message);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const fetchPreviousMessages = async (contact: string | null) => {
|
const fetchPreviousMessages = async (contact: string | null) => {
|
||||||
console.log('Fetching messages for: ', contact, 'with cursor: ', cursor);
|
console.log('Fetching messages for: ', contact, 'with cursor: ', cursor);
|
||||||
const messages = await getMessages(contact, cursor, 50);
|
try {
|
||||||
messages.messages.forEach((msg) => {
|
const messages = await getMessages(contact, cursor, 50);
|
||||||
setMessages((prevMessages) => {
|
messages.messages.forEach((msg) => {
|
||||||
if (!prevMessages.some((m) => m.message_id === msg.message_id)) {
|
setMessages((prevMessages) => {
|
||||||
return [msg, ...prevMessages];
|
if (!prevMessages.some((m) => m.message_id === msg.message_id)) {
|
||||||
}
|
return [msg, ...prevMessages];
|
||||||
return prevMessages;
|
}
|
||||||
|
return prevMessages;
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
setCursor(() => {
|
||||||
setCursor(() => {
|
return Math.min(
|
||||||
return Math.min(
|
...messages.messages.map((message) => message.message_id),
|
||||||
...messages.messages.map((message) => message.message_id),
|
);
|
||||||
);
|
});
|
||||||
});
|
} catch (e) {
|
||||||
|
setErrorMessage(e.response.data.message);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function messageHandler(msg: ChatMessages) {
|
function messageHandler(msg: ChatMessages) {
|
||||||
@@ -152,6 +163,7 @@ function Chat() {
|
|||||||
messageHandler={messageHandler}
|
messageHandler={messageHandler}
|
||||||
setContactsList={setContactsList}
|
setContactsList={setContactsList}
|
||||||
fetchPreviousMessages={fetchPreviousMessages}
|
fetchPreviousMessages={fetchPreviousMessages}
|
||||||
|
errorMessage={errorMessage}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex-shrink-0 mb-2 mt-0">
|
<div className="flex-shrink-0 mb-2 mt-0">
|
||||||
|
|||||||
@@ -196,7 +196,7 @@ app.get("/api/chat/messages/:contact", authorizeUser, async (req, res) => {
|
|||||||
cursor,
|
cursor,
|
||||||
);
|
);
|
||||||
if (messages && messages.length < limit) {
|
if (messages && messages.length < limit) {
|
||||||
return res.status(404).json({ message: "No more messages" });
|
return res.status(404).json({ message: "No more messages found" });
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log("MESSAGESLENGTH: ", messages.length, limit);
|
console.log("MESSAGESLENGTH: ", messages.length, limit);
|
||||||
|
|||||||
Reference in New Issue
Block a user