[feat] added preset import/export
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
<script>
|
<script>
|
||||||
import { alertConfirm, alertError } from "../../ts/alert";
|
import { alertConfirm, alertError } from "../../ts/alert";
|
||||||
import { language } from "../../lang";
|
import { language } from "../../lang";
|
||||||
import { DataBase, changeToPreset, copyPreset, presetTemplate } from "../../ts/storage/database";
|
import { DataBase, changeToPreset, copyPreset, downloadPreset, importPreset, presetTemplate } from "../../ts/storage/database";
|
||||||
import { CopyIcon, EditIcon, PlusIcon, TrashIcon, XIcon } from "lucide-svelte";
|
import { CopyIcon, DownloadIcon, EditIcon, FolderUpIcon, PlusIcon, TrashIcon, XIcon } from "lucide-svelte";
|
||||||
|
|
||||||
let editMode = false
|
let editMode = false
|
||||||
export let close = () => {}
|
export let close = () => {}
|
||||||
@@ -41,6 +41,13 @@
|
|||||||
}}>
|
}}>
|
||||||
<CopyIcon size={18}/>
|
<CopyIcon size={18}/>
|
||||||
</button>
|
</button>
|
||||||
|
<button class="text-gray-500 hover:text-green-500 cursor-pointer mr-2" on:click={(e) => {
|
||||||
|
e.stopPropagation()
|
||||||
|
downloadPreset(i)
|
||||||
|
}}>
|
||||||
|
|
||||||
|
<DownloadIcon size={18} />
|
||||||
|
</button>
|
||||||
<button class="text-gray-500 hover:text-green-500 cursor-pointer" on:click={async (e) => {
|
<button class="text-gray-500 hover:text-green-500 cursor-pointer" on:click={async (e) => {
|
||||||
e.stopPropagation()
|
e.stopPropagation()
|
||||||
if($DataBase.botPresets.length === 1){
|
if($DataBase.botPresets.length === 1){
|
||||||
@@ -71,6 +78,11 @@
|
|||||||
}}>
|
}}>
|
||||||
<PlusIcon/>
|
<PlusIcon/>
|
||||||
</button>
|
</button>
|
||||||
|
<button class="text-gray-500 hover:text-green-500 mr-2 cursor-pointer" on:click={() => {
|
||||||
|
importPreset()
|
||||||
|
}}>
|
||||||
|
<FolderUpIcon size={18}/>
|
||||||
|
</button>
|
||||||
<button class="text-gray-500 hover:text-green-500 cursor-pointer" on:click={() => {
|
<button class="text-gray-500 hover:text-green-500 cursor-pointer" on:click={() => {
|
||||||
editMode = !editMode
|
editMode = !editMode
|
||||||
}}>
|
}}>
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
import { get, writable } from 'svelte/store';
|
import { get, writable } from 'svelte/store';
|
||||||
import { checkNullish } from '../util';
|
import { checkNullish, selectSingleFile } from '../util';
|
||||||
import { changeLanguage } from '../../lang';
|
import { changeLanguage, language } from '../../lang';
|
||||||
import type { RisuPlugin } from '../process/plugins';
|
import type { RisuPlugin } from '../process/plugins';
|
||||||
import { saveAsset as saveImageGlobal } from './globalApi';
|
import { downloadFile, saveAsset as saveImageGlobal } from './globalApi';
|
||||||
import { cloneDeep } from 'lodash';
|
import { cloneDeep } from 'lodash';
|
||||||
import { defaultAutoSuggestPrompt, defaultJailbreak, defaultMainPrompt } from './defaultPrompts';
|
import { defaultAutoSuggestPrompt, defaultJailbreak, defaultMainPrompt } from './defaultPrompts';
|
||||||
|
import { alertNormal } from '../alert';
|
||||||
|
|
||||||
export const DataBase = writable({} as any as Database)
|
export const DataBase = writable({} as any as Database)
|
||||||
export const loadedStore = writable(false)
|
export const loadedStore = writable(false)
|
||||||
@@ -712,3 +713,26 @@ export function changeToPreset(id =0){
|
|||||||
db.koboldURL = newPres.koboldURL ?? db.koboldURL
|
db.koboldURL = newPres.koboldURL ?? db.koboldURL
|
||||||
DataBase.set(db)
|
DataBase.set(db)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function downloadPreset(id:number){
|
||||||
|
saveCurrentPreset()
|
||||||
|
let db = get(DataBase)
|
||||||
|
let pres = cloneDeep(db.botPresets[id])
|
||||||
|
pres.openAIKey = ''
|
||||||
|
pres.forceReplaceUrl = ''
|
||||||
|
pres.forceReplaceUrl2 = ''
|
||||||
|
downloadFile(pres.name + "_preset.json", Buffer.from(JSON.stringify(pres, null, 2)))
|
||||||
|
alertNormal(language.successExport)
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function importPreset(){
|
||||||
|
const f = await selectSingleFile(["json"])
|
||||||
|
if(!f){
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let db = get(DataBase)
|
||||||
|
const pre = (JSON.parse(Buffer.from(f.data).toString('utf-8')))
|
||||||
|
pre.name ??= "Imported"
|
||||||
|
db.botPresets.push(pre)
|
||||||
|
DataBase.set(db)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user