Fix character renaming. Workaround for Node 20 bug. Adjust spec v2 fields

This commit is contained in:
SillyLossy
2023-06-03 15:29:35 +03:00
parent 380b20b94d
commit f1924b6c12
4 changed files with 28 additions and 19 deletions

View File

@ -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');

View File

@ -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;

View File

@ -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();

View File

@ -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 {