feat(chat_manager.py): add empty_history method to ChatHistory class

fix(chat_manager.py): empty chat history for a client when an exception is raised
fix(GenericNode): fix useEffect dependencies to avoid unnecessary re-renders
This commit is contained in:
Gabriel Almeida 2023-04-28 20:31:53 -03:00
commit c3dffa3508
2 changed files with 13 additions and 8 deletions

View file

@ -36,6 +36,10 @@ class ChatHistory(Subject):
else: else:
return [] return []
def empty_history(self, client_id: str):
"""Empty the chat history for a client."""
self.history[client_id] = []
class ChatManager: class ChatManager:
def __init__(self): def __init__(self):
@ -119,6 +123,7 @@ class ChatManager:
except Exception as e: except Exception as e:
# Log stack trace # Log stack trace
logger.exception(e) logger.exception(e)
self.chat_history.empty_history(client_id)
raise e raise e
# Send a response back to the frontend, if needed # Send a response back to the frontend, if needed
intermediate_steps = intermediate_steps or "" intermediate_steps = intermediate_steps or ""

View file

@ -29,6 +29,13 @@ export default function GenericNode({
const [isGreenOutline, setIsGreenOutline] = useState(false); const [isGreenOutline, setIsGreenOutline] = useState(false);
const [isRedOutline, setIsRedOutline] = useState(false); const [isRedOutline, setIsRedOutline] = useState(false);
const { reactFlowInstance } = useContext(typesContext); const { reactFlowInstance } = useContext(typesContext);
const [params, setParams] = useState([]);
useEffect(() => {
if (reactFlowInstance) {
setParams(Object.values(reactFlowInstance.toObject()));
}
}, [reactFlowInstance]);
const debouncedValidateNode = useDebouncedCallback(async () => { const debouncedValidateNode = useDebouncedCallback(async () => {
// Check if the validationStatus is "success" // Check if the validationStatus is "success"
@ -60,14 +67,7 @@ export default function GenericNode({
useEffect(() => { useEffect(() => {
validateNode(); validateNode();
}, [ }, [validateNode, params]);
validateNode,
// Use the result of ...reactFlowInstance.toObject()
// to determine if the node has changed
// turn into an array of nodes and edges
// and compare the length of the array
...Object.values(reactFlowInstance.toObject()),
]);
useEffect(() => { useEffect(() => {
if (validationStatus === "success") { if (validationStatus === "success") {