From 1379ec96b98fccc4f89b598149ac9bf4671c3fad Mon Sep 17 00:00:00 2001 From: Vokturz Date: Mon, 1 May 2023 15:44:58 -0400 Subject: added option to remove conversations --- gui/streamlit_chat_app.py | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) (limited to 'gui/streamlit_chat_app.py') diff --git a/gui/streamlit_chat_app.py b/gui/streamlit_chat_app.py index 99e8428c..af3969e6 100644 --- a/gui/streamlit_chat_app.py +++ b/gui/streamlit_chat_app.py @@ -38,6 +38,17 @@ def save_conversations(conversations, current_conversation): os.replace(temp_conversations_file, conversations_file) +def delete_conversation(conversations, current_conversation): + for idx, conversation in enumerate(conversations): + conversations[idx] = current_conversation + break + conversations.remove(current_conversation) + + temp_conversations_file = "temp_" + conversations_file + with open(temp_conversations_file, "wb") as f: + pickle.dump(conversations, f) + + os.replace(temp_conversations_file, conversations_file) def exit_handler(): print("Exiting, saving data...") @@ -118,17 +129,22 @@ if search_query: sidebar_header = f"Search Results ({len(conversations)})" else: - conversations = enumerate(st.session_state.conversations) + conversations = st.session_state.conversations sidebar_header = "Conversation History" # Sidebar st.sidebar.header(sidebar_header) - -for idx, conversation in conversations: - if st.sidebar.button(f"Conversation {idx + 1}: {conversation['user_inputs'][0]}", key=f"sidebar_btn_{idx}"): +sidebar_col1, sidebar_col2 = st.sidebar.columns([5,1]) +for idx, conversation in enumerate(conversations): + if sidebar_col1.button(f"Conversation {idx + 1}: {conversation['user_inputs'][0]}", key=f"sidebar_btn_{idx}"): st.session_state['selected_conversation'] = idx st.session_state['current_conversation'] = conversation - + if sidebar_col2.button('🗑️', key=f"sidebar_btn_delete_{idx}"): + if st.session_state['selected_conversation'] == idx: + st.session_state['selected_conversation'] = None + st.session_state['current_conversation'] = {'user_inputs': [], 'generated_responses': []} + delete_conversation(conversations, conversation) + st.experimental_rerun() if st.session_state['selected_conversation'] is not None: conversation_to_display = conversations[st.session_state['selected_conversation']] else: -- cgit v1.2.3