Skip to content

Commit 880ecac

Browse files
Merge pull request #156 from neo4j-labs/chat-history-frontend
added session id
2 parents 39e6639 + 9843872 commit 880ecac

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed

frontend/src/components/Chatbot.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,30 @@ import ChatBotUserAvatar from '../assets/images/chatbot-user.png';
55
import ChatBotAvatar from '../assets/images/chatbot-ai.png';
66
import { ChatbotProps } from '../types';
77
import { useCredentials } from '../context/UserCredentials';
8-
import { useFileContext } from '../context/UsersFiles';
98
import chatBotAPI from '../services/QnaAPI';
9+
import { v4 as uuidv4 } from 'uuid';
1010

1111
export default function Chatbot(props: ChatbotProps) {
1212
const { messages: listMessages, setMessages: setListMessages } = props;
1313
const [inputMessage, setInputMessage] = useState('');
1414
const formattedTextStyle = { color: 'rgb(var(--theme-palette-discovery-bg-strong))' };
1515
const [loading, setLoading] = useState<boolean>(false);
1616
const { userCredentials } = useCredentials();
17-
const { model } = useFileContext();
1817
const messagesEndRef = useRef<HTMLDivElement>(null);
18+
const [sessionId, setSessionId] = useState<string>(sessionStorage.getItem('session_id') ?? '');
1919

2020
const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {
2121
setInputMessage(e.target.value);
2222
};
2323

24+
useEffect(() => {
25+
if (!sessionStorage.getItem('session_id')) {
26+
const id = uuidv4();
27+
setSessionId(id);
28+
sessionStorage.setItem('session_id', id);
29+
}
30+
}, []);
31+
2432
const simulateTypingEffect = (responseText: string, index = 0) => {
2533
if (index < responseText.length) {
2634
const nextIndex = index + 1;
@@ -72,7 +80,7 @@ export default function Chatbot(props: ChatbotProps) {
7280
setLoading(true);
7381
setInputMessage('');
7482
simulateTypingEffect(' ');
75-
const chatresponse = await chatBotAPI(userCredentials, model, inputMessage);
83+
const chatresponse = await chatBotAPI(userCredentials, inputMessage, sessionId);
7684
chatbotReply = chatresponse?.data?.message;
7785
simulateTypingEffect(chatbotReply);
7886
setLoading(false);

frontend/src/components/Layout/Header.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ export default function Header({ themeMode, toggleTheme }: { themeMode: string;
3535
className='inline-flex gap-x-1'
3636
style={{ display: 'flex', flexGrow: 0, alignItems: 'center', gap: '4px' }}
3737
>
38-
<Button href='https://github.com/neo4j-labs/llm-graph-builder/issues' fill='outlined' target='_blank'>Github Issues</Button>
38+
<Button href='https://github.com/neo4j-labs/llm-graph-builder/issues' fill='outlined' target='_blank'>
39+
Github Issues
40+
</Button>
3941
<IconButton aria-label='Toggle Dark mode' clean size='large' onClick={toggleTheme}>
4042
{themeMode === 'dark' ? (
4143
<span role='img' aria-label='sun'>

frontend/src/services/QnaAPI.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import axios from 'axios';
22
import { url } from '../utils/Utils';
33

4-
const chatBotAPI = async (userCredentials: any, model: string, question: string) => {
4+
const chatBotAPI = async (userCredentials: any, question: string, session_id: string) => {
55
try {
66
const formData = new FormData();
77
formData.append('uri', userCredentials?.uri ?? '');
88
formData.append('database', userCredentials?.database ?? '');
99
formData.append('userName', userCredentials?.userName ?? '');
1010
formData.append('password', userCredentials?.password ?? '');
11-
formData.append('model', model);
1211
formData.append('question', question);
12+
formData.append('session_id', session_id);
1313
const response: any = await axios.post(`${url()}/chat_bot`, formData, {
1414
headers: {
1515
'Content-Type': 'multipart/form-data',

0 commit comments

Comments
 (0)