import React, { useEffect } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import { useRecoilState, useRecoilValue } from 'recoil'; import Messages from '../components/Messages'; import TextChat from '../components/Input'; import store from '~/store'; export default function Search() { const [searchQuery, setSearchQuery] = useRecoilState(store.searchQuery); const conversation = useRecoilValue(store.conversation); const { searchPlaceholderConversation } = store.useConversation(); const { query } = useParams(); const navigate = useNavigate(); // when conversation changed or conversationId (in url) changed useEffect(() => { if (conversation === null) { // no current conversation, we need to do something if (query) { // create new searchPlaceholderConversation(); setSearchQuery(query); } else { navigate('/chat/new'); } } else if (conversation?.conversationId === 'search') { // jump to search page if (searchQuery !== query) { navigate(`/search/${searchQuery}`); } } else { // conversationId (in url) should always follow conversation?.conversationId, unless conversation is null navigate(`/chat/${conversation?.conversationId}`); } }, [conversation, query, searchQuery]); // if not a search if (conversation?.conversationId !== 'search') { return null; } // if query not match if (searchQuery !== query) { return null; } // if query is null if (!query) { return null; } return ( <> ); }