diff --git a/src/App.jsx b/src/App.jsx index 6ec01ec1fb..ae989928fe 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -9,9 +9,9 @@ import useDidMountEffect from './hooks/useDidMountEffect'; const App = () => { const { messages } = useSelector((state) => state.messages); - const convo = useSelector((state) => state.convo); + const { conversationId } = useSelector((state) => state.convo); const { data, error, isLoading, mutate } = swr('http://localhost:3050/convos'); - useDidMountEffect(() => mutate(), [convo]); + useDidMountEffect(() => mutate(), [conversationId]); return (
diff --git a/src/components/Nav/DarkMode.jsx b/src/components/Nav/DarkMode.jsx index 5e4a256295..70167952aa 100644 --- a/src/components/Nav/DarkMode.jsx +++ b/src/components/Nav/DarkMode.jsx @@ -1,19 +1,21 @@ import React, { useState, useContext } from 'react'; import DarkModeIcon from '../svg/DarkModeIcon'; +import LightModeIcon from '../svg/LightModeIcon'; import { ThemeContext } from '~/hooks/ThemeContext'; export default function DarkMode() { const { theme, setTheme } = useContext(ThemeContext); const clickHandler = () => setTheme(theme === 'dark' ? 'light' : 'dark'); + const mode = theme === 'dark' ? 'Light mode' : 'Dark mode'; return ( - - Dark mode + {theme === 'dark' ? : } + {mode} ); } diff --git a/src/components/main/Regenerate.jsx b/src/components/main/Regenerate.jsx new file mode 100644 index 0000000000..8cfa76fe0c --- /dev/null +++ b/src/components/main/Regenerate.jsx @@ -0,0 +1,34 @@ +import React from 'react'; + +export default function Regenerate({ submitMessage }) { + + const clickHandler = (e) => { + e.preventDefault(); + submitMessage(); + }; + + return ( + + There was an error generating a response + + + ); +} diff --git a/src/components/main/TextChat.jsx b/src/components/main/TextChat.jsx index 968825c9d3..cbffa8058c 100644 --- a/src/components/main/TextChat.jsx +++ b/src/components/main/TextChat.jsx @@ -9,7 +9,6 @@ import { setSubmitState } from '~/store/submitSlice'; import { setText } from '~/store/textSlice'; export default function TextChat({ messages, reloadConvos }) { - // const [text, setText] = useState(''); const dispatch = useDispatch(); const convo = useSelector((state) => state.convo); const { isSubmitting } = useSelector((state) => state.submit); @@ -47,6 +46,7 @@ export default function TextChat({ messages, reloadConvos }) { }; dispatch(setSubmitState(false)); dispatch(setMessages([...messages, currentMsg, errorResponse])); + dispatch(setText(payload)); return; }; console.log('User Input:', payload); diff --git a/src/components/svg/LightModeIcon.jsx b/src/components/svg/LightModeIcon.jsx new file mode 100644 index 0000000000..bdb1360d4f --- /dev/null +++ b/src/components/svg/LightModeIcon.jsx @@ -0,0 +1,72 @@ +import React from 'react'; + +export default function LightModeIcon() { + return ( + + + + + + + + + + + + ); +} diff --git a/src/store/convoSlice.js b/src/store/convoSlice.js index dcb96be3f1..994dbd2379 100644 --- a/src/store/convoSlice.js +++ b/src/store/convoSlice.js @@ -2,6 +2,7 @@ import { createSlice } from '@reduxjs/toolkit'; const initialState = { active: false, + error: false, conversationId: null, parentMessageId: null, }; @@ -13,10 +14,13 @@ const currentSlice = createSlice({ setConversation: (state, action) => { return { ...state, ...action.payload }; }, + setError: (state, action) => { + state.error = action.payload; + }, } }); // -export const { setConversation } = currentSlice.actions; +export const { setConversation, setError } = currentSlice.actions; export default currentSlice.reducer;