Fix for new story bug

This commit is contained in:
ebolam
2022-10-01 14:12:32 -04:00
parent 7db4f61127
commit d041da4ec6
2 changed files with 24 additions and 10 deletions

View File

@@ -8261,11 +8261,12 @@ def UI_2_load_story(file):
logger.debug("Load Story took {}s".format(time.time()-start_time)) logger.debug("Load Story took {}s".format(time.time()-start_time))
#==================================================================# #==================================================================#
# Event triggered on load story # Event triggered on new story
#==================================================================# #==================================================================#
@socketio.on('new_story') @socketio.on('new_story')
@logger.catch @logger.catch
def UI_2_new_story(data): def UI_2_new_story(data):
logger.info("Starting new story")
koboldai_vars.create_story("") koboldai_vars.create_story("")

View File

@@ -2,7 +2,7 @@ from dataclasses import dataclass
import os, re, time, threading, json, pickle, base64, copy, tqdm, datetime, sys import os, re, time, threading, json, pickle, base64, copy, tqdm, datetime, sys
from io import BytesIO from io import BytesIO
from flask import has_request_context, session from flask import has_request_context, session
from flask_socketio import SocketIO from flask_socketio import SocketIO, join_room, leave_room
from collections import OrderedDict from collections import OrderedDict
import multiprocessing import multiprocessing
from logger import logger from logger import logger
@@ -106,8 +106,15 @@ class koboldai_vars(object):
original_story_name = story_name original_story_name = story_name
if not multi_story: if not multi_story:
story_name = 'default' story_name = 'default'
#Leave the old room and join the new one
logger.debug("Leaving room {}".format(session['story']))
leave_room(session['story'])
logger.debug("Joining room {}".format(story_name))
join_room(story_name)
session['story'] = story_name
logger.debug("Sending story reset")
self._story_settings[story_name].socketio.emit("reset_story", {}, broadcast=True, room=story_name)
if story_name in self._story_settings: if story_name in self._story_settings:
self._story_settings[story_name].socketio.emit("reset_story", {}, broadcast=True, room="UI_2")
self._story_settings[story_name].no_save = True self._story_settings[story_name].no_save = True
self._story_settings[story_name].from_json(json_data) self._story_settings[story_name].from_json(json_data)
self._story_settings[story_name].no_save = False self._story_settings[story_name].no_save = False
@@ -131,16 +138,22 @@ class koboldai_vars(object):
#story_name = 'default' #story_name = 'default'
if not multi_story: if not multi_story:
story_name = 'default' story_name = 'default'
if story_name in self._story_settings: self._story_settings[story_name] = story_settings(self.socketio, self)
self._story_settings[story_name].reset() #self._story_settings[story_name].reset()
else:
self._story_settings[story_name] = story_settings(self.socketio, self)
self._story_settings[story_name].reset()
if json_data is not None: if json_data is not None:
self.load_story(story_name, json_data) self.load_story(story_name, json_data)
else:
#Leave the old room and join the new one
logger.debug("Leaving room {}".format(session['story']))
leave_room(session['story'])
logger.debug("Joining room {}".format(story_name))
join_room(story_name)
session['story'] = story_name
logger.debug("Sending story reset")
self._story_settings[story_name].socketio.emit("reset_story", {}, broadcast=True, room=story_name)
self._story_settings[story_name].send_to_ui()
session['story'] = story_name session['story'] = story_name
self._story_settings[story_name].send_to_ui()
def story_list(self): def story_list(self):
return [x for x in self._story_settings] return [x for x in self._story_settings]
@@ -751,7 +764,7 @@ class story_settings(settings):
old_value = getattr(self, name, None) old_value = getattr(self, name, None)
super().__setattr__(name, value) super().__setattr__(name, value)
#Put variable change actions here #Put variable change actions here
if name not in self.local_only_variables and name[0] != "_" and not new_variable: if name not in self.local_only_variables and name[0] != "_" and not new_variable and old_value != value:
process_variable_changes(self.socketio, self.__class__.__name__.replace("_settings", ""), name, value, old_value) process_variable_changes(self.socketio, self.__class__.__name__.replace("_settings", ""), name, value, old_value)
#We want to automatically set gamesaved to false if something happens to the actions list (pins, redos, generations, text, etc) #We want to automatically set gamesaved to false if something happens to the actions list (pins, redos, generations, text, etc)
#To do that we need to give the actions list a copy of this data so it can set the gamesaved variable as needed #To do that we need to give the actions list a copy of this data so it can set the gamesaved variable as needed