Multiple histories for each character (#4022)
This commit is contained in:
parent
029da9563f
commit
00ab450c13
9 changed files with 240 additions and 197 deletions
|
|
@ -1,9 +1,6 @@
|
|||
import copy
|
||||
import json
|
||||
|
||||
import gradio as gr
|
||||
|
||||
from modules import chat, presets, shared, ui, ui_chat, utils
|
||||
from modules import chat, presets, shared, ui, utils
|
||||
from modules.utils import gradio
|
||||
|
||||
|
||||
|
|
@ -76,35 +73,3 @@ def create_event_handlers():
|
|||
lambda x: f'{x}.yaml', gradio('preset_menu'), gradio('delete_filename')).then(
|
||||
lambda: 'presets/', None, gradio('delete_root')).then(
|
||||
lambda: gr.update(visible=True), None, gradio('file_deleter'))
|
||||
|
||||
if not shared.args.multi_user:
|
||||
shared.gradio['save_session'].click(
|
||||
ui.gather_interface_values, gradio(shared.input_elements), gradio('interface_state')).then(
|
||||
save_session, gradio('interface_state'), gradio('temporary_text')).then(
|
||||
None, gradio('temporary_text'), None, _js=f"(contents) => {{{ui.save_files_js}; saveSession(contents)}}")
|
||||
|
||||
shared.gradio['load_session'].upload(
|
||||
ui.gather_interface_values, gradio(shared.input_elements), gradio('interface_state')).then(
|
||||
load_session, gradio('load_session', 'interface_state'), gradio('interface_state')).then(
|
||||
ui.apply_interface_values, gradio('interface_state'), gradio(ui.list_interface_input_elements()), show_progress=False).then(
|
||||
chat.redraw_html, gradio(ui_chat.reload_arr), gradio('display')).then(
|
||||
None, None, None, _js='() => {alert("The session has been loaded.")}')
|
||||
|
||||
|
||||
def load_session(file, state):
|
||||
decoded_file = file if isinstance(file, str) else file.decode('utf-8')
|
||||
data = json.loads(decoded_file)
|
||||
|
||||
if 'character_menu' in data and state.get('character_menu') != data.get('character_menu'):
|
||||
shared.session_is_loading = True
|
||||
|
||||
state.update(data)
|
||||
return state
|
||||
|
||||
|
||||
def save_session(state):
|
||||
output = copy.deepcopy(state)
|
||||
for key in ['prompt_menu-default', 'prompt_menu-notebook']:
|
||||
del output[key]
|
||||
|
||||
return json.dumps(output, indent=4)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue