diff --git a/src/client/ChatPage.jsx b/src/client/ChatPage.jsx index f794fc9..4b4fdc0 100644 --- a/src/client/ChatPage.jsx +++ b/src/client/ChatPage.jsx @@ -3,7 +3,7 @@ import { useQuery } from '@wasp/queries' import getChats from '@wasp/queries/getChats' import getConversations from '@wasp/queries/getConversations' import logout from '@wasp/auth/logout'; -import { useState, Dispatch, SetStateAction } from 'react'; +import { useState, useEffect, useRef } from 'react'; // import { Chat, Conversation } from '@wasp/entities' import { Link } from '@wasp/router' import Markdown from 'react-markdown' @@ -37,6 +37,14 @@ const ChatsList = ({ chats }) => { ) } +const Loader = () => { + return ( +
+
+
+ ) +} + const ConversationsList = ({ conversations }) => { if (!conversations?.length) return
No conversations
@@ -72,6 +80,7 @@ export default function ChatPage(props) { const [isLoading, setIsLoading] = useState(false); const [chatConversations, setChatConversations] = useState([{}]); const [conversationId, setConversationId] = useState(null); + const chatContainerRef = useRef(null); // const [chatId, setChatId] = useState(null); const { data: chats, isLoading: isLoadingChats } = useQuery(getChats) @@ -85,9 +94,17 @@ export default function ChatPage(props) { // } // setChatId(props.match.params.id) // console.log(`chatId: ${chatId}`) + + useEffect(() => { + if (chatContainerRef.current) { + chatContainerRef.current.scrollTop = chatContainerRef.current.scrollHeight; + } + }, [conversations]); const history = useHistory(); + + const chatContainerClass = `flex h-full flex-col items-center justify-between pb-24 overflow-y-auto bg-captn-light-blue ${isLoading ? 'opacity-40' : 'opacity-100'}` const handleClick = async (event) => { event.preventDefault() @@ -117,10 +134,12 @@ export default function ChatPage(props) { } await updateConversation(payload) // 2. call backend python server to get agent response + setIsLoading(true) const response = await getAgentResponse({ message: userQuery, conv_id: payload.conversation_id, }) + setIsLoading(false) // 3. add agent response as new conversation in the table const openAIPayload = { conversation_id: conversations.id, @@ -159,9 +178,10 @@ export default function ChatPage(props) {
-
+
{conversations && }
+ {isLoading && } {props.match.params.id ? (