refactor: Add importPreset function to handle importing presets in characterCards.ts
This commit is contained in:
@@ -1,9 +1,9 @@
|
|||||||
import { get, writable, type Writable } from "svelte/store"
|
import { get, writable, type Writable } from "svelte/store"
|
||||||
import { alertCardExport, alertConfirm, alertError, alertInput, alertMd, alertNormal, alertSelect, alertStore, alertTOS, alertWait } from "./alert"
|
import { alertCardExport, alertConfirm, alertError, alertInput, alertMd, alertNormal, alertSelect, alertStore, alertTOS, alertWait } from "./alert"
|
||||||
import { DataBase, defaultSdDataFunc, type character, setDatabase, type customscript, type loreSettings, type loreBook, type triggerscript } from "./storage/database"
|
import { DataBase, defaultSdDataFunc, type character, setDatabase, type customscript, type loreSettings, type loreBook, type triggerscript, importPreset } from "./storage/database"
|
||||||
import { checkNullish, decryptBuffer, encryptBuffer, isKnownUri, selectFileByDom, selectMultipleFile, sleep } from "./util"
|
import { checkNullish, decryptBuffer, encryptBuffer, isKnownUri, selectFileByDom, selectMultipleFile, sleep } from "./util"
|
||||||
import { language } from "src/lang"
|
import { language } from "src/lang"
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4, v4 } from 'uuid';
|
||||||
import { characterFormatUpdate } from "./characters"
|
import { characterFormatUpdate } from "./characters"
|
||||||
import { AppendableBuffer, checkCharOrder, downloadFile, loadAsset, LocalWriter, openURL, readImage, saveAsset, VirtualWriter } from "./storage/globalApi"
|
import { AppendableBuffer, checkCharOrder, downloadFile, loadAsset, LocalWriter, openURL, readImage, saveAsset, VirtualWriter } from "./storage/globalApi"
|
||||||
import { CurrentCharacter, selectedCharID } from "./stores"
|
import { CurrentCharacter, selectedCharID } from "./stores"
|
||||||
@@ -242,6 +242,35 @@ export async function characterURLImport() {
|
|||||||
alertError(language.errors.noData)
|
alertError(language.errors.noData)
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const hash = location.hash
|
||||||
|
if(hash.startsWith('#import_module=')){
|
||||||
|
const data = hash.replace('#import_module=', '')
|
||||||
|
const importData = JSON.parse(Buffer.from(decodeURIComponent(data), 'base64').toString('utf-8'))
|
||||||
|
importData.id = v4()
|
||||||
|
|
||||||
|
const db = get(DataBase)
|
||||||
|
if(importData.lowLevelAccess){
|
||||||
|
const conf = await alertConfirm(language.lowLevelAccessConfirm)
|
||||||
|
if(!conf){
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
db.modules.push(importData)
|
||||||
|
setDatabase(db)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if(hash.startsWith('#import_preset=')){
|
||||||
|
const data = hash.replace('#import_preset=', '')
|
||||||
|
const importData =Buffer.from(decodeURIComponent(data), 'base64')
|
||||||
|
await importPreset({
|
||||||
|
name: 'imported.risupreset',
|
||||||
|
data: importData
|
||||||
|
})
|
||||||
|
return
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1301,8 +1301,13 @@ export async function downloadPreset(id:number, type:'json'|'risupreset'|'return
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export async function importPreset(){
|
export async function importPreset(f:{
|
||||||
const f = await selectSingleFile(["json", "preset", "risupreset"])
|
name:string
|
||||||
|
data:Uint8Array
|
||||||
|
}|null = null){
|
||||||
|
if(!f){
|
||||||
|
f = await selectSingleFile(["json", "preset", "risupreset"])
|
||||||
|
}
|
||||||
if(!f){
|
if(!f){
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user