Add lorebook import for modules
This commit is contained in:
@@ -320,7 +320,22 @@ export async function importLoreBook(mode:'global'|'local'|'sglobal'){
|
||||
}
|
||||
}
|
||||
else if(importedlore.entries){
|
||||
const entries:{[key:string]:{
|
||||
const entries:{[key:string]:CCLorebook} = importedlore.entries
|
||||
lore.push(...convertExternalLorebook(entries))
|
||||
}
|
||||
if(mode === 'global'){
|
||||
db.characters[selectedID].globalLore = lore
|
||||
}
|
||||
else{
|
||||
db.characters[selectedID].chats[page].localLore = lore
|
||||
}
|
||||
setDatabase(db)
|
||||
} catch (error) {
|
||||
alertError(`${error}`)
|
||||
}
|
||||
}
|
||||
|
||||
interface CCLorebook{
|
||||
key:string[]
|
||||
comment:string
|
||||
content:string
|
||||
@@ -341,7 +356,10 @@ export async function importLoreBook(mode:'global'|'local'|'sglobal'){
|
||||
prefix:string
|
||||
suffix:string
|
||||
}
|
||||
}} = importedlore.entries
|
||||
}
|
||||
|
||||
export function convertExternalLorebook(entries:{[key:string]:CCLorebook}){
|
||||
let lore:loreBook[] = []
|
||||
for(const key in entries){
|
||||
const currentLore = entries[key]
|
||||
lore.push({
|
||||
@@ -357,17 +375,7 @@ export async function importLoreBook(mode:'global'|'local'|'sglobal'){
|
||||
selective: currentLore.selective ?? false
|
||||
})
|
||||
}
|
||||
}
|
||||
if(mode === 'global'){
|
||||
db.characters[selectedID].globalLore = lore
|
||||
}
|
||||
else{
|
||||
db.characters[selectedID].chats[page].localLore = lore
|
||||
}
|
||||
setDatabase(db)
|
||||
} catch (error) {
|
||||
alertError(`${error}`)
|
||||
}
|
||||
return lore
|
||||
}
|
||||
|
||||
export async function exportLoreBook(mode:'global'|'local'|'sglobal'){
|
||||
|
||||
@@ -6,6 +6,7 @@ import { get } from "svelte/store"
|
||||
import { CurrentChat } from "../stores"
|
||||
import { selectSingleFile } from "../util"
|
||||
import { v4 } from "uuid"
|
||||
import { convertExternalLorebook } from "./lorebook"
|
||||
|
||||
export interface RisuModule{
|
||||
name: string
|
||||
@@ -26,25 +27,50 @@ export async function exportModule(module:RisuModule){
|
||||
}
|
||||
|
||||
export async function importModule(){
|
||||
const f = await selectSingleFile(['json'])
|
||||
const f = await selectSingleFile(['json', 'lorebook'])
|
||||
if(!f){
|
||||
return
|
||||
}
|
||||
const file = f.data
|
||||
try {
|
||||
const importedModule = JSON.parse(Buffer.from(file).toString())
|
||||
if(importedModule.type === 'risuModule'){
|
||||
const db = get(DataBase)
|
||||
try {
|
||||
const importData = JSON.parse(Buffer.from(file).toString())
|
||||
if(importData.type === 'risuModule'){
|
||||
if(
|
||||
(!importedModule.name)
|
||||
|| (!importedModule.description)
|
||||
|| (!importedModule.id)
|
||||
(!importData.name)
|
||||
|| (!importData.description)
|
||||
|| (!importData.id)
|
||||
){
|
||||
alertError(language.errors.noData)
|
||||
}
|
||||
importedModule.id = v4()
|
||||
db.modules.push(importedModule)
|
||||
importData.id = v4()
|
||||
db.modules.push(importData)
|
||||
setDatabase(db)
|
||||
return
|
||||
}
|
||||
if(importData.type === 'risu' && importData.data){
|
||||
const lores:loreBook[] = importData.data
|
||||
const importModule = {
|
||||
name: importData.name,
|
||||
description: importData.description,
|
||||
lorebook: lores,
|
||||
id: v4()
|
||||
}
|
||||
db.modules.push(importModule)
|
||||
setDatabase(db)
|
||||
return
|
||||
}
|
||||
if(importData.entries){
|
||||
const lores:loreBook[] = convertExternalLorebook(importData.entries)
|
||||
const importModule = {
|
||||
name: importData.name,
|
||||
description: importData.description,
|
||||
lorebook: lores,
|
||||
id: v4()
|
||||
}
|
||||
db.modules.push(importModule)
|
||||
setDatabase(db)
|
||||
return
|
||||
}
|
||||
} catch (error) {
|
||||
alertNormal(language.errors.noData)
|
||||
|
||||
Reference in New Issue
Block a user