[feat] add unmigration when logout
This commit is contained in:
@@ -83,7 +83,7 @@
|
|||||||
bias: {},
|
bias: {},
|
||||||
currentChar : currentChar as character
|
currentChar : currentChar as character
|
||||||
}, 'submodel', abortController.signal).then(rq2=>{
|
}, 'submodel', abortController.signal).then(rq2=>{
|
||||||
if(rq2.type !== 'fail' && rq2.type !== 'streaming' && progress){
|
if(rq2.type !== 'fail' && rq2.type !== 'streaming' && rq2.type !== 'multiline' && progress){
|
||||||
var suggestMessagesNew = rq2.result.split('\n').filter(msg => msg.startsWith('-')).map(msg => msg.replace('-','').trim())
|
var suggestMessagesNew = rq2.result.split('\n').filter(msg => msg.startsWith('-')).map(msg => msg.replace('-','').trim())
|
||||||
const db:Database = get(DataBase);
|
const db:Database = get(DataBase);
|
||||||
db.characters[$selectedCharID].chats[currentChar.chatPage].suggestMessages = suggestMessagesNew
|
db.characters[$selectedCharID].chats[currentChar.chatPage].suggestMessages = suggestMessagesNew
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
import Check from "src/lib/Others/Check.svelte";
|
import Check from "src/lib/Others/Check.svelte";
|
||||||
import { alertSelect } from "src/ts/alert";
|
import { alertSelect } from "src/ts/alert";
|
||||||
import { isTauri } from "src/ts/storage/globalApi";
|
import { isTauri } from "src/ts/storage/globalApi";
|
||||||
|
import { unMigrationAccount } from "src/ts/storage/accountStorage";
|
||||||
let openIframe = false
|
let openIframe = false
|
||||||
let openIframeURL = ''
|
let openIframeURL = ''
|
||||||
let popup:Window = null
|
let popup:Window = null
|
||||||
@@ -54,6 +55,10 @@
|
|||||||
<div class="w-full">
|
<div class="w-full">
|
||||||
<h1 class="text-3xl font-black min-w-0">Risu Account{#if $DataBase.account}
|
<h1 class="text-3xl font-black min-w-0">Risu Account{#if $DataBase.account}
|
||||||
<button class="bg-selected p-1 text-sm font-light rounded-md hover:bg-green-500 transition-colors float-right" on:click={async () => {
|
<button class="bg-selected p-1 text-sm font-light rounded-md hover:bg-green-500 transition-colors float-right" on:click={async () => {
|
||||||
|
if($DataBase.account.useSync){
|
||||||
|
unMigrationAccount()
|
||||||
|
}
|
||||||
|
|
||||||
$DataBase.account = undefined
|
$DataBase.account = undefined
|
||||||
}}>{language.logout}</button>
|
}}>{language.logout}</button>
|
||||||
{/if}</h1>
|
{/if}</h1>
|
||||||
|
|||||||
@@ -2,8 +2,9 @@ import { get } from "svelte/store"
|
|||||||
import { DataBase } from "./database"
|
import { DataBase } from "./database"
|
||||||
import { hubURL } from "../characterCards"
|
import { hubURL } from "../characterCards"
|
||||||
import localforage from "localforage"
|
import localforage from "localforage"
|
||||||
import { alertLogin } from "../alert"
|
import { alertLogin, alertStore } from "../alert"
|
||||||
import { getUnpargeables } from "./globalApi"
|
import { forageStorage, getUnpargeables, replaceDbResources } from "./globalApi"
|
||||||
|
import { encodeRisuSave } from "./risuSave"
|
||||||
|
|
||||||
export class AccountStorage{
|
export class AccountStorage{
|
||||||
auth:string
|
auth:string
|
||||||
@@ -89,4 +90,34 @@ export class AccountStorage{
|
|||||||
|
|
||||||
|
|
||||||
listItem = this.keys
|
listItem = this.keys
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function unMigrationAccount() {
|
||||||
|
const keys = await forageStorage.keys()
|
||||||
|
let db = get(DataBase)
|
||||||
|
db.account = null
|
||||||
|
let i = 0;
|
||||||
|
const MigrationStorage = localforage.createInstance({name: "risuai"})
|
||||||
|
|
||||||
|
for(const key of keys){
|
||||||
|
alertStore.set({
|
||||||
|
type: "wait",
|
||||||
|
msg: `Migrating your data...(${i}/${keys.length})`
|
||||||
|
})
|
||||||
|
await MigrationStorage.setItem(key,await forageStorage.getItem(key))
|
||||||
|
i += 1
|
||||||
|
}
|
||||||
|
|
||||||
|
await MigrationStorage.setItem('database/database.bin', encodeRisuSave(db))
|
||||||
|
|
||||||
|
this.realStorage = MigrationStorage
|
||||||
|
alertStore.set({
|
||||||
|
type: "none",
|
||||||
|
msg: ""
|
||||||
|
})
|
||||||
|
|
||||||
|
localStorage.removeItem('dosync')
|
||||||
|
localStorage.removeItem('accountst')
|
||||||
|
localStorage.removeItem('fallbackRisuToken')
|
||||||
|
location.reload()
|
||||||
}
|
}
|
||||||
@@ -11,7 +11,7 @@ import { checkOldDomain, checkUpdate } from "../update";
|
|||||||
import { selectedCharID } from "../stores";
|
import { selectedCharID } from "../stores";
|
||||||
import { Body, ResponseType, fetch as TauriFetch } from "@tauri-apps/api/http";
|
import { Body, ResponseType, fetch as TauriFetch } from "@tauri-apps/api/http";
|
||||||
import { loadPlugins } from "../plugins/plugins";
|
import { loadPlugins } from "../plugins/plugins";
|
||||||
import { alertError } from "../alert";
|
import { alertConfirm, alertError } from "../alert";
|
||||||
import { checkDriverInit, syncDrive } from "../drive/drive";
|
import { checkDriverInit, syncDrive } from "../drive/drive";
|
||||||
import { hasher } from "../parser";
|
import { hasher } from "../parser";
|
||||||
import { characterHubImport, hubURL } from "../characterCards";
|
import { characterHubImport, hubURL } from "../characterCards";
|
||||||
@@ -211,23 +211,36 @@ export async function saveDb(){
|
|||||||
DataBase.subscribe(() => {
|
DataBase.subscribe(() => {
|
||||||
changed = true
|
changed = true
|
||||||
})
|
})
|
||||||
|
let savetrys = 0
|
||||||
while(true){
|
while(true){
|
||||||
if(changed){
|
try {
|
||||||
changed = false
|
if(changed){
|
||||||
const dbData = encodeRisuSave(get(DataBase))
|
changed = false
|
||||||
if(isTauri){
|
const dbData = encodeRisuSave(get(DataBase))
|
||||||
await writeBinaryFile('database/database.bin', dbData, {dir: BaseDirectory.AppData})
|
if(isTauri){
|
||||||
await writeBinaryFile(`database/dbbackup-${(Date.now()/100).toFixed()}.bin`, dbData, {dir: BaseDirectory.AppData})
|
await writeBinaryFile('database/database.bin', dbData, {dir: BaseDirectory.AppData})
|
||||||
|
await writeBinaryFile(`database/dbbackup-${(Date.now()/100).toFixed()}.bin`, dbData, {dir: BaseDirectory.AppData})
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
await forageStorage.setItem('database/database.bin', dbData)
|
||||||
|
if(!forageStorage.isAccount){
|
||||||
|
await forageStorage.setItem(`database/dbbackup-${(Date.now()/100).toFixed()}.bin`, dbData)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!forageStorage.isAccount){
|
||||||
|
await getDbBackups()
|
||||||
|
}
|
||||||
|
savetrys = 0
|
||||||
|
}
|
||||||
|
await sleep(500)
|
||||||
|
} catch (error) {
|
||||||
|
if(savetrys > 4){
|
||||||
|
await alertConfirm(`DBSaveError: ${error.message ?? error}. report to the developer.`)
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
await forageStorage.setItem('database/database.bin', dbData)
|
|
||||||
if(!forageStorage.isAccount){
|
|
||||||
await forageStorage.setItem(`database/dbbackup-${(Date.now()/100).toFixed()}.bin`, dbData)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
await getDbBackups()
|
|
||||||
}
|
}
|
||||||
await sleep(500)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user