LibreChat/client/src/App.jsx

57 lines
2 KiB
React
Raw Normal View History

import React, { useEffect, useState } from 'react';
import Messages from './components/Messages';
import Landing from './components/Main/Landing';
import TextChat from './components/Main/TextChat';
2023-02-06 13:27:28 -05:00
import Nav from './components/Nav';
import MobileNav from './components/Nav/MobileNav';
2023-02-13 18:02:29 -05:00
import useDocumentTitle from '~/hooks/useDocumentTitle';
import { useSelector, useDispatch } from 'react-redux';
2023-03-21 19:31:57 -04:00
import userAuth from './utils/userAuth';
import { setUser } from './store/userReducer';
2023-03-21 19:31:57 -04:00
import { setSearchState } from './store/searchSlice';
import axios from 'axios';
2023-02-04 19:19:53 -05:00
const App = () => {
const dispatch = useDispatch();
2023-03-21 19:31:57 -04:00
const { messages, messageTree } = useSelector((state) => state.messages);
const { user } = useSelector((state) => state.user);
2023-02-13 18:02:29 -05:00
const { title } = useSelector((state) => state.convo);
2023-03-21 19:31:57 -04:00
const [navVisible, setNavVisible] = useState(false);
2023-02-13 18:02:29 -05:00
useDocumentTitle(title);
2023-03-21 19:31:57 -04:00
useEffect(() => {
axios.get('/api/search/enable').then((res) => { console.log(res.data); dispatch(setSearchState(res.data))});
userAuth()
.then((user) => dispatch(setUser(user)))
.catch((err) => console.log(err));
}, []);
if (user)
return (
<div className="flex h-screen">
2023-03-21 19:31:57 -04:00
<Nav
navVisible={navVisible}
setNavVisible={setNavVisible}
/>
<div className="flex h-full w-full flex-1 flex-col bg-gray-50 md:pl-[260px]">
<div className="transition-width relative flex h-full w-full flex-1 flex-col items-stretch overflow-hidden bg-white dark:bg-gray-800">
<MobileNav setNavVisible={setNavVisible} />
2023-03-19 01:14:19 -04:00
{messages.length === 0 && title.toLowerCase() === 'chatgpt clone' ? (
<Landing title={title} />
) : (
<Messages
messages={messages}
messageTree={messageTree}
/>
)}
<TextChat messages={messages} />
</div>
</div>
2023-02-04 19:19:53 -05:00
</div>
);
2023-03-21 19:31:57 -04:00
else return <div className="flex h-screen"></div>;
2023-02-04 19:19:53 -05:00
};
export default App;