Migrate all DataBase to DBState

This commit is contained in:
kwaroran
2024-10-24 01:59:57 +09:00
parent 4e9190f1b5
commit b3fddb814e
65 changed files with 331 additions and 434 deletions

View File

@@ -1,7 +1,7 @@
<script>
import { onMount, createEventDispatcher } from 'svelte';
import { EditIcon, LanguagesIcon } from "lucide-svelte";
import { DataBase, DBState } from "../../ts/storage/database.svelte";
import { DBState } from "../../ts/storage/database.svelte";
import CodeMirror from 'codemirror';
import 'codemirror/lib/codemirror.css';

View File

@@ -1,7 +1,6 @@
<script lang="ts">
import { get } from 'svelte/store';
import { FileAudioIcon, PlusIcon } from "lucide-svelte";
import { DataBase, setDatabase, type character, type groupChat } from "src/ts/storage/database.svelte";
import { type character, type groupChat } from "src/ts/storage/database.svelte";
import { getFileSrc, saveAsset } from "src/ts/storage/globalApi";
import { selectMultipleFile } from "src/ts/util";
interface Props {
@@ -48,8 +47,6 @@
currentCharacter.additionalAssets.push([name, imgp, extension])
currentCharacter = currentCharacter
}
const db = get(DataBase);
setDatabase(db)
}
}}>
<PlusIcon />

View File

@@ -1,42 +1,10 @@
<script lang="ts">
import { ParseMarkdown, risuChatParser } from "src/ts/parser";
import { DataBase, type Database, type character, type groupChat } from "src/ts/storage/database.svelte";
import { DBState, type character, type groupChat } from "src/ts/storage/database.svelte";
import { moduleBackgroundEmbedding, ReloadGUIPointer, selectedCharID } from "src/ts/stores";
import { onDestroy } from "svelte";
let backgroundHTML = $state('')
let lastdb:Database
let backgroundHTML = $derived(DBState.db?.characters?.[$selectedCharID]?.backgroundHTML)
let currentChar:character|groupChat = $state()
let selectedId = 0
function checkUpdate(){
if(selectedId > 0 && lastdb){
if(lastdb.characters[selectedId] && lastdb.characters[selectedId].backgroundHTML !== backgroundHTML){
backgroundHTML = lastdb.characters[selectedId].backgroundHTML
currentChar = lastdb.characters[selectedId]
}
}
else{
if(backgroundHTML !== ''){
backgroundHTML = ''
}
}
}
const unsubDatabase = DataBase.subscribe(v => {
lastdb = v
checkUpdate()
})
const unsubID = selectedCharID.subscribe(v => {
selectedId = v
checkUpdate()
})
onDestroy(() => {
unsubDatabase()
unsubID()
})
</script>

View File

@@ -140,15 +140,13 @@
}
if(rerollid < rerolls.length - 1){
if(Array.isArray(rerolls[rerollid + 1])){
let db = DBState.db
rerollid += 1
let rerollData = structuredClone(rerolls[rerollid])
let msgs = db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message
let msgs = DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message
for(let i = 0; i < rerollData.length; i++){
msgs[msgs.length - rerollData.length + i] = rerollData[i]
}
db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message = msgs
DBState.db = db
DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message = msgs
}
return
}
@@ -199,15 +197,13 @@
return
}
if(Array.isArray(rerolls[rerollid - 1])){
let db = DBState.db
rerollid -= 1
let rerollData = structuredClone(rerolls[rerollid])
let msgs = db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message
let msgs = DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message
for(let i = 0; i < rerollData.length; i++){
msgs[msgs.length - rerollData.length + i] = rerollData[i]
}
db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message = msgs
DBState.db = db
DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message = msgs
}
}

View File

@@ -8,27 +8,25 @@
import PlaygroundSyntax from "./PlaygroundSyntax.svelte";
import { findCharacterIndexbyId } from "src/ts/util";
import { characterFormatUpdate, createBlankChar } from "src/ts/characters";
import { get } from "svelte/store";
import { DataBase, setDatabase, type character } from "src/ts/storage/database.svelte";
import { DBState, type character } from "src/ts/storage/database.svelte";
import PlaygroundImageGen from "./PlaygroundImageGen.svelte";
import PlaygroundParser from "./PlaygroundParser.svelte";
import ToolConvertion from "./ToolConvertion.svelte";
import { joinMultiuserRoom } from "src/ts/sync/multiuser";
import { joinMultiuserRoom } from "src/ts/sync/multiuser";
let easterEggTouch = $state(0)
const playgroundChat = () => {
let db = get(DataBase)
const charIndex = findCharacterIndexbyId('§playground')
PlaygroundStore.set(2)
if (charIndex !== -1) {
const char = db.characters[charIndex] as character
const char = DBState.db.characters[charIndex] as character
char.utilityBot = true
char.name = 'assistant'
char.firstMessage = '{{none}}'
db.characters[charIndex] = char
DBState.db.characters[charIndex] = char
characterFormatUpdate(charIndex)
selectedCharID.set(charIndex)
@@ -38,8 +36,7 @@
const character = createBlankChar()
character.chaId = '§playground'
db.characters.push(character)
setDatabase(db)
DBState.db.characters.push(character)
playgroundChat()

View File

@@ -2,9 +2,7 @@
import { language } from "src/lang";
import { alertConfirm } from "src/ts/alert";
import { checkDriver } from "src/ts/drive/drive";
import { DataBase } from "src/ts/storage/database.svelte";
import { isNodeServer, isTauri } from "src/ts/storage/globalApi";
import { persistantStorageRecommended } from "src/ts/storage/persistant";
</script>

View File

@@ -107,7 +107,7 @@
const option = await alertChatOptions()
switch(option){
case 0:{
const newChat = structuredClone(chara.chats[i])
const newChat = structuredClone($state.snapshot(chara.chats[i]))
newChat.name = `Copy of ${newChat.name}`
chara.chats.unshift(newChat)
chara.chatPage = 0

View File

@@ -137,7 +137,7 @@
const da = db.characterOrder[mainIndex.index]
if(typeof(da) !== 'string'){
mainId = da.id
movingFolder = structuredClone(da)
movingFolder = structuredClone($state.snapshot(da))
if(targetIndex.folder){
return
}

View File

@@ -85,7 +85,7 @@
if(!latin1.test(enNotes)){
alertError("English version of creator notes must contain only Latin-1 characters")
}
shareRisuHub2(char, {
shareRisuHub2($state.snapshot(char) as character, {
anon: privateMode,
nsfw: nsfwMode,
tag: tags,