mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Fix character renaming. Workaround for Node 20 bug. Adjust spec v2 fields
This commit is contained in:
@ -818,7 +818,7 @@ async function printCharacters() {
|
||||
template.find('.avatar').attr('title', item.avatar);
|
||||
template.find('.ch_name').text(item.name);
|
||||
template.find('.ch_fav_icon').css("display", 'none');
|
||||
template.addClass(item.fav == "true" ? 'is_fav' : '');
|
||||
template.toggleClass('is_fav', item.fav || item.fav == 'true');
|
||||
template.find('.ch_fav').val(item.fav);
|
||||
|
||||
// Display inline tags
|
||||
@ -4348,7 +4348,7 @@ export function select_selected_character(chid) {
|
||||
this_avatar = getThumbnailUrl('avatar', characters[chid].avatar);
|
||||
}
|
||||
|
||||
updateFavButtonState(characters[chid].fav == "true");
|
||||
updateFavButtonState(characters[chid].fav || characters[chid].fav == "true");
|
||||
|
||||
$("#avatar_load_preview").attr("src", this_avatar);
|
||||
$("#name_div").removeClass('displayBlock');
|
||||
|
@ -201,7 +201,7 @@ async function convertSoloToGroupChat() {
|
||||
const members = [character.avatar];
|
||||
const activationStrategy = group_activation_strategy.NATURAL;
|
||||
const allowSelfResponses = false;
|
||||
const favChecked = character.fav == 'true';
|
||||
const favChecked = character.fav || character.fav == 'true';
|
||||
const metadata = Object.assign({}, chat_metadata);
|
||||
delete metadata.main_chat;
|
||||
|
||||
|
@ -954,7 +954,7 @@ function select_group_chats(groupId, skipAnimation) {
|
||||
template.find(".avatar img").attr("title", character.avatar);
|
||||
template.find(".ch_name").text(character.name);
|
||||
template.attr("chid", characters.indexOf(character));
|
||||
template.addClass(character.fav == 'true' ? 'is_fav' : '');
|
||||
template.toggleClass('is_fav', character.fav || character.fav == 'true');
|
||||
|
||||
if (!group) {
|
||||
template.find('[data-action="speak"]').hide();
|
||||
|
39
server.js
39
server.js
@ -3,6 +3,11 @@
|
||||
const process = require('process')
|
||||
const yargs = require('yargs/yargs');
|
||||
const { hideBin } = require('yargs/helpers');
|
||||
const net = require("net");
|
||||
// work around a node v20 bug: https://github.com/nodejs/node/issues/47822#issuecomment-1564708870
|
||||
if (net.setDefaultAutoSelectFamily) {
|
||||
net.setDefaultAutoSelectFamily(false);
|
||||
}
|
||||
|
||||
const cliArguments = yargs(hideBin(process.argv))
|
||||
.option('ssl', {
|
||||
@ -716,7 +721,7 @@ function readFromV2(char) {
|
||||
return;
|
||||
}
|
||||
if (!_.isUndefined(char[charField]) && !_.isUndefined(v2Value) && char[charField] !== v2Value) {
|
||||
console.debug(`Spec v2 data mismatch with Spec v1 for field: ${charField}`);
|
||||
console.debug(`Spec v2 data mismatch with Spec v1 for field: ${charField}`, char[charField], v2Value);
|
||||
}
|
||||
char[charField] = v2Value;
|
||||
});
|
||||
@ -743,7 +748,7 @@ function charaFormatData(data) {
|
||||
_.set(char, 'avatar', 'none');
|
||||
_.set(char, 'chat', data.ch_name + ' - ' + humanizedISO8601DateTime());
|
||||
_.set(char, 'talkativeness', data.talkativeness);
|
||||
_.set(char, 'fav', data.fav);
|
||||
_.set(char, 'fav', data.fav == 'true');
|
||||
_.set(char, 'create_date', humanizedISO8601DateTime());
|
||||
|
||||
// Spec V2 fields
|
||||
@ -767,13 +772,13 @@ function charaFormatData(data) {
|
||||
|
||||
// ST extension fields to V2 object
|
||||
_.set(char, 'data.extensions.talkativeness', data.talkativeness);
|
||||
_.set(char, 'data.extensions.fav', data.fav);
|
||||
_.set(char, 'data.extensions.fav', data.fav == 'true');
|
||||
//_.set(char, 'data.extensions.create_date', humanizedISO8601DateTime());
|
||||
//_.set(char, 'data.extensions.avatar', 'none');
|
||||
//_.set(char, 'data.extensions.chat', data.ch_name + ' - ' + humanizedISO8601DateTime());
|
||||
|
||||
// TODO: Character book
|
||||
_.set(char, 'data.character_book', undefined);
|
||||
_//.set(char, 'data.character_book', undefined);
|
||||
|
||||
return char;
|
||||
}
|
||||
@ -840,10 +845,12 @@ app.post("/renamecharacter", jsonParser, async function (request, response) {
|
||||
const newChatsPath = path.join(chatsPath, newInternalName);
|
||||
|
||||
try {
|
||||
const _ = require('lodash');
|
||||
// Read old file, replace name int it
|
||||
const rawOldData = await charaRead(oldAvatarPath);
|
||||
const oldData = json5.parse(rawOldData);
|
||||
oldData['name'] = newName;
|
||||
const oldData = getCharaCardV2(json5.parse(rawOldData));
|
||||
_.set(oldData, 'data.name', newName);
|
||||
_.set(oldData, 'name', newName);
|
||||
const newData = JSON.stringify(oldData);
|
||||
|
||||
// Write data to new location
|
||||
@ -1002,14 +1009,7 @@ app.post("/getcharacters", jsonParser, function (request, response) {
|
||||
for (const item of pngFiles) {
|
||||
try {
|
||||
var img_data = await charaRead(charactersPath + item);
|
||||
let jsonObject = json5.parse(img_data);
|
||||
|
||||
if (jsonObject.spec === undefined) {
|
||||
jsonObject = convertToV2(jsonObject);
|
||||
} else {
|
||||
jsonObject = readFromV2(jsonObject);
|
||||
}
|
||||
|
||||
let jsonObject = getCharaCardV2(json5.parse(img_data));
|
||||
jsonObject.avatar = item;
|
||||
characters[i] = {};
|
||||
characters[i] = jsonObject;
|
||||
@ -1183,6 +1183,15 @@ app.post("/savesettings", jsonParser, function (request, response) {
|
||||
});
|
||||
});
|
||||
|
||||
function getCharaCardV2(jsonObject) {
|
||||
if (jsonObject.spec === undefined) {
|
||||
jsonObject = convertToV2(jsonObject);
|
||||
} else {
|
||||
jsonObject = readFromV2(jsonObject);
|
||||
}
|
||||
return jsonObject;
|
||||
}
|
||||
|
||||
function readAndParseFromDirectory(directoryPath, fileExtension = '.json') {
|
||||
const files = fs
|
||||
.readdirSync(directoryPath)
|
||||
@ -1759,7 +1768,7 @@ app.post("/exportcharacter", jsonParser, async function (request, response) {
|
||||
case 'json': {
|
||||
try {
|
||||
let json = await charaRead(filename);
|
||||
let jsonObject = json5.parse(json);
|
||||
let jsonObject = getCharaCardV2(json5.parse(json));
|
||||
return response.type('json').send(jsonObject)
|
||||
}
|
||||
catch {
|
||||
|
Reference in New Issue
Block a user