Skip to content

Commit 6652e57

Browse files
author
prima
committed
fix: V2 not supported in manager
1 parent b6fdd42 commit 6652e57

File tree

2 files changed

+79
-44
lines changed

2 files changed

+79
-44
lines changed

embd_res/js/characterManager.js

Lines changed: 55 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -662,40 +662,47 @@ let showCharacterList = async () => {
662662
saveKLiteSaveToIndexDB(fileName, data)
663663
}
664664
else {
665-
let wiToAdd = data, has_tav_wi_check = has_tavern_wi_check(wiToAdd), wiName = fileName;
666-
if (has_tav_wi_check) {
667-
if (wiToAdd?.name !== undefined && wiToAdd.name.trim().length > 0) {
668-
wiName = wiToAdd.name
669-
}
670-
wiToAdd = load_tavern_wi(wiToAdd);
671-
if (wiToAdd && wiToAdd.length > 0) {
672-
wiToAdd.forEach(wi => wi.wigroup = fileName.replace("'", ""))
673-
}
665+
if (!data.scenarioVersion && (data.name != null || data.description != null ||
666+
data.personality != null || (data.spec == "chara_card_v2" || data.spec == "chara_card_v3") || has_tav_wi_check)) {
667+
saveCharacterDataToIndexDB(undefined, data, fileName)
674668
}
675-
else {
676-
try {
677-
let hasNoGeneralWI = wiToAdd.length === 0 || wiToAdd.find(wi => wi?.wigroup === undefined || wi.wigroup.trim() === null || wi.wigroup === "" || wi.wigroup === "General") === undefined;
678-
if (hasNoGeneralWI) {
679-
let wiAllHaveSameGroup = wiToAdd.find((e, p, a) => a.find(c => c?.wigroup !== e.wigroup)) === undefined
680-
if (wiAllHaveSameGroup) {
681-
wiName = wiToAdd[0].wigroup
669+
else
670+
{
671+
let wiToAdd = data, has_tav_wi_check = has_tavern_wi_check(wiToAdd), wiName = fileName;
672+
if (has_tav_wi_check) {
673+
if (wiToAdd?.name !== undefined && wiToAdd.name.trim().length > 0) {
674+
wiName = wiToAdd.name
675+
}
676+
wiToAdd = load_tavern_wi(wiToAdd);
677+
if (wiToAdd && wiToAdd.length > 0) {
678+
wiToAdd.forEach(wi => wi.wigroup = fileName.replace("'", ""))
679+
}
680+
}
681+
else {
682+
try {
683+
let hasNoGeneralWI = wiToAdd.length === 0 || wiToAdd.find(wi => wi?.wigroup === undefined || wi.wigroup.trim() === null || wi.wigroup === "" || wi.wigroup === "General") === undefined;
684+
if (hasNoGeneralWI) {
685+
let wiAllHaveSameGroup = wiToAdd.find((e, p, a) => a.find(c => c?.wigroup !== e.wigroup)) === undefined
686+
if (wiAllHaveSameGroup) {
687+
wiName = wiToAdd[0].wigroup
688+
}
682689
}
683690
}
691+
catch (e) {
692+
console.error(e)
693+
}
684694
}
685-
catch (e) {
686-
console.error(e)
695+
if (Array.isArray(wiToAdd)) {
696+
wiToAdd = wiToAdd.filter(wi => wi?.key !== undefined)
697+
if (wiToAdd.length > 0) {
698+
saveLorebookToIndexDB(wiName, wiToAdd, JSON.parse(plaintext))
699+
}
687700
}
688-
}
689-
if (Array.isArray(wiToAdd)) {
690-
wiToAdd = wiToAdd.filter(wi => wi?.key !== undefined)
691-
if (wiToAdd.length > 0) {
692-
saveLorebookToIndexDB(wiName, wiToAdd, JSON.parse(plaintext))
701+
else {
702+
waitingToast.hide()
703+
handleError(`${fileName}: JSON does not contain WI or lorebook`)
693704
}
694705
}
695-
else {
696-
waitingToast.hide()
697-
handleError(`${fileName}: JSON does not contain WI or lorebook`)
698-
}
699706
}
700707
}
701708
}
@@ -839,6 +846,13 @@ let showCharacterList = async () => {
839846
a.click();
840847
a.remove();
841848
}
849+
let jsObjToBytes = (data) => {
850+
let bytes = new TextEncoder().encode(JSON.stringify(data)), text = "";
851+
for (var i = 0; i < Math.ceil(bytes.length / 32768.0); i++) {
852+
text += String.fromCharCode.apply(null, bytes.slice(i * 32768, Math.min((i + 1) * 32768, bytes.length)))
853+
}
854+
return text
855+
}
842856
createSearchInput()
843857
for (let i = 0; i < allCharacterNames.length; i++) {
844858
let { name, thumbnail } = allCharacterNames[i], type = getTypeFromAllCharacterData(allCharacterNames[i]);
@@ -889,8 +903,19 @@ let showCharacterList = async () => {
889903
}
890904
}).button("Download character", async () => {
891905
popupUtils.reset()
892-
let charData = await getCharacterData(name), { image } = charData;
893-
downloadB64URL(`${name}.png`, image)
906+
let charData = await getCharacterData(name);
907+
if (!!charData?.image) {
908+
downloadB64URL(`${name}.png`, charData.image)
909+
}
910+
else
911+
{
912+
try {
913+
downloadB64URL(`${name}.json`, `data:application/json;base64,${btoa(jsObjToBytes(charData.data))}`)
914+
}
915+
catch (e) {
916+
handleError(e)
917+
}
918+
}
894919
}).button("Delete character", async () => {
895920
popupUtils.reset()
896921
msgboxYesNo("Are you sure you wish to delete?", "Character manager", async () => {
@@ -924,11 +949,7 @@ let showCharacterList = async () => {
924949
let charData = await getCharacterData(name), { originalData } = charData;
925950
if (!!originalData) {
926951
try {
927-
let bytes = new TextEncoder().encode(JSON.stringify(originalData)), text = "";
928-
for (var i = 0; i < Math.ceil(bytes.length / 32768.0); i++) {
929-
text += String.fromCharCode.apply(null, bytes.slice(i * 32768, Math.min((i + 1) * 32768, bytes.length)))
930-
}
931-
downloadB64URL(`${name}.json`, `data:application/json;base64,${btoa(text)}`)
952+
downloadB64URL(`${name}.json`, `data:application/json;base64,${btoa(jsObjToBytes(originalData))}`)
932953
}
933954
catch (e) {
934955
handleError(e)

embd_res/klite.embd

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5548,22 +5548,36 @@ Current version indicated by LITEVER below.
55485548
{
55495549
try
55505550
{
5551-
bufferToBase64(data).then(async (b64) => {
5552-
let b64Url = `data:image/png;base64,${b64}`
5553-
let charData = !!decoded?.data ? decoded.data : decoded;
5554-
let rawName = !!charData?.name ? charData?.name : (!!filename ? filename : "No character name"), charName = rawName.replaceAll(/[^\w()_\-'",!\[\].]/g, " ").replaceAll(/\s+/g, " ").trim();
5555-
charData.name = charName;
5556-
let dataUrl = await generateThumbnail(b64Url, [256, 256])
5551+
let charData = !!decoded?.data ? decoded.data : decoded;
5552+
let rawName = !!charData?.name ? charData?.name : (!!filename ? filename : "No character name"), charName = rawName.replaceAll(/[^\w()_\-'",!\[\].]/g, " ").replaceAll(/\s+/g, " ").trim();
5553+
charData.name = charName;
5554+
if (!!data)
5555+
{
5556+
bufferToBase64(data).then(async (b64) => {
5557+
let b64Url = `data:image/png;base64,${b64}`
5558+
let dataUrl = await generateThumbnail(b64Url, [256, 256])
5559+
let dataToSave = {
5560+
name: charName,
5561+
data: charData,
5562+
image: b64Url
5563+
}
5564+
indexeddb_save(`character_${charName}`, JSON.stringify(dataToSave)).then(() => {
5565+
allCharacterNames.push({name: charName, thumbnail: dataUrl, type: "Character"})
5566+
updateCharacterListFromAllDe();
5567+
})
5568+
})
5569+
}
5570+
else
5571+
{
55575572
let dataToSave = {
55585573
name: charName,
5559-
data: charData,
5560-
image: b64Url
5574+
data: charData
55615575
}
55625576
indexeddb_save(`character_${charName}`, JSON.stringify(dataToSave)).then(() => {
5563-
allCharacterNames.push({name: charName, thumbnail: dataUrl, type: "Character"})
5577+
allCharacterNames.push({name: charName, type: "Character"})
55645578
updateCharacterListFromAllDe();
55655579
})
5566-
})
5580+
}
55675581
}
55685582
catch (e)
55695583
{

0 commit comments

Comments
 (0)