diff --git a/modules/chat.py b/modules/chat.py index 0d4a076c..188453d3 100644 --- a/modules/chat.py +++ b/modules/chat.py @@ -517,6 +517,26 @@ def load_latest_history(state): return history +def load_history_after_deletion(state, idx): + ''' + Loads the latest history for the given character in chat or chat-instruct + mode, or the latest instruct history for instruct mode. + ''' + + if shared.args.multi_user: + return start_new_chat(state) + + histories = find_all_histories(state) + + if len(histories) > 0: + history = load_history(histories[int(idx)], state['character_menu'], state['mode']) + else: + history = start_new_chat(state) + histories = find_all_histories(state) + + return history, gr.update(choices=histories, value=histories[int(idx)]) + + def load_history(unique_id, character, mode): p = get_history_file_path(unique_id, character, mode) diff --git a/modules/ui_chat.py b/modules/ui_chat.py index 1713a39d..480388af 100644 --- a/modules/ui_chat.py +++ b/modules/ui_chat.py @@ -56,9 +56,6 @@ def create_ui(): shared.gradio['Send dummy message'] = gr.Button('Send dummy message') shared.gradio['Send dummy reply'] = gr.Button('Send dummy reply') - with gr.Row(): - shared.gradio['Start new chat'] = gr.Button('Start new chat') - with gr.Row(): shared.gradio['send-chat-to-default'] = gr.Button('Send to default') shared.gradio['send-chat-to-notebook'] = gr.Button('Send to notebook') @@ -73,6 +70,7 @@ def create_ui(): shared.gradio['delete_chat-confirm'] = gr.Button('Confirm', variant='stop', visible=False, elem_classes='refresh-button') shared.gradio['delete_chat-cancel'] = gr.Button('Cancel', visible=False, elem_classes='refresh-button') shared.gradio['rename_chat'] = gr.Button('Rename', elem_classes='refresh-button', interactive=not mu) + shared.gradio['Start new chat'] = gr.Button('New chat', elem_classes='refresh-button') with gr.Row(elem_id='rename-row'): shared.gradio['rename_to'] = gr.Textbox(label='Rename to:', placeholder='New name', visible=False, elem_classes=['no-background']) @@ -248,12 +246,13 @@ def create_event_handlers(): shared.gradio['delete_chat'].click(lambda: [gr.update(visible=True), gr.update(visible=False), gr.update(visible=True)], None, gradio(clear_arr)) shared.gradio['delete_chat-cancel'].click(lambda: [gr.update(visible=False), gr.update(visible=True), gr.update(visible=False)], None, gradio(clear_arr)) + shared.gradio['delete_chat-confirm'].click( ui.gather_interface_values, gradio(shared.input_elements), gradio('interface_state')).then( + lambda x, y: str(chat.find_all_histories(x).index(y)), gradio('interface_state', 'unique_id'), gradio('temporary_text')).then( chat.delete_history, gradio('unique_id', 'character_menu', 'mode'), None).then( - chat.load_latest_history, gradio('interface_state'), gradio('history')).then( + chat.load_history_after_deletion, gradio('interface_state', 'temporary_text'), gradio('history', 'unique_id')).then( chat.redraw_html, gradio(reload_arr), gradio('display')).then( - lambda x: gr.update(choices=(histories := chat.find_all_histories(x)), value=histories[0]), gradio('interface_state'), gradio('unique_id')).then( lambda: [gr.update(visible=False), gr.update(visible=True), gr.update(visible=False)], None, gradio(clear_arr)) shared.gradio['rename_chat'].click(