diff --git a/src/lang/en.ts b/src/lang/en.ts
index a960c1c0..f0ff9762 100644
--- a/src/lang/en.ts
+++ b/src/lang/en.ts
@@ -319,6 +319,10 @@ export const languageEnglish = {
notLoggedIn: "Not Logged in to Risu Account",
googleDriveInfo: "Connect to google drive to sync your data.",
googleDriveConnection: "Google Drive Connection",
- googleDriveConnected: "Google Drive Connected"
-
+ googleDriveConnected: "Google Drive Connected",
+ SaveDataInAccount: "Save Data in Account",
+ dataSavingInAccount: "Saving Data in Account",
+ logout: "Logout",
+ loadDataFromAccount: "Load Data from Account",
+ saveCurrentDataToAccount: "Save Current Data to Account"
}
\ No newline at end of file
diff --git a/src/lib/Setting/Pages/UserSettings.svelte b/src/lib/Setting/Pages/UserSettings.svelte
index b8ba955f..bc99c919 100644
--- a/src/lib/Setting/Pages/UserSettings.svelte
+++ b/src/lib/Setting/Pages/UserSettings.svelte
@@ -5,6 +5,8 @@
import { loadRisuAccountData, saveRisuAccountData } from "src/ts/drive/accounter";
import { DataBase } from "src/ts/storage/database";
import Check from "src/lib/Others/Check.svelte";
+ import { alertSelect } from "src/ts/alert";
+ import { isTauri } from "src/ts/storage/globalApi";
let openIframe = false
let openIframeURL = ''
let popup:Window = null
@@ -53,14 +55,23 @@
Risu Account{#if $DataBase.account}
+ }}>{language.logout}
{/if}
{#if $DataBase.account}
ID: {$DataBase.account.id}
- {#if $DataBase.useExperimental && localStorage.getItem('ac_flag!') === "able"}
+ {#if $DataBase.useExperimental && (!isTauri)}
-
+ {#if $DataBase.account.useSync}
+ {language.dataSavingInAccount}
+ {:else}
+ {
+ if(v){
+ localStorage.setItem('dosync', 'sync')
+ location.reload()
+ }
+ }}/>
+ {/if}
{/if}
diff --git a/src/ts/storage/accountStorage.ts b/src/ts/storage/accountStorage.ts
index 73f09364..b291a3ed 100644
--- a/src/ts/storage/accountStorage.ts
+++ b/src/ts/storage/accountStorage.ts
@@ -3,6 +3,7 @@ import { DataBase } from "./database"
import { hubURL } from "../characterCards"
import localforage from "localforage"
import { alertLogin } from "../alert"
+import { getUnpargeables } from "./globalApi"
export class AccountStorage{
auth:string
@@ -21,6 +22,9 @@ export class AccountStorage{
'x-risu-auth': this.auth
}
})
+ if(da.status === 304){
+ return key
+ }
if(da.status === 403){
localStorage.setItem("fallbackRisuToken",await alertLogin())
this.checkAuth()
@@ -66,10 +70,11 @@ export class AccountStorage{
return Buffer.from(ab)
}
async keys():Promise{
- throw "Error: You cannot list in account. report this to dev if you found this."
+ let db = get(DataBase)
+ return getUnpargeables(db, 'pure')
}
async removeItem(key:string){
- throw "Error: You remove data in account. report this to dev if you found this."
+ throw "Error: You cannot remove data in account. report this to dev if you found this."
}
private checkAuth(){
@@ -78,6 +83,7 @@ export class AccountStorage{
if(!this.auth){
db.account = JSON.parse(localStorage.getItem("fallbackRisuToken"))
this.auth = db?.account?.token
+ db.account.useSync = true
}
}
diff --git a/src/ts/storage/autoStorage.ts b/src/ts/storage/autoStorage.ts
index f27e4e23..6a18d80a 100644
--- a/src/ts/storage/autoStorage.ts
+++ b/src/ts/storage/autoStorage.ts
@@ -2,11 +2,12 @@ import localforage from "localforage"
import { getUnpargeables, isNodeServer, replaceDbResources } from "./globalApi"
import { NodeStorage } from "./nodeStorage"
import { OpfsStorage } from "./opfsStorage"
-import { alertConfirm, alertStore } from "../alert"
+import { alertConfirm, alertSelect, alertStore } from "../alert"
import { get } from "svelte/store"
import { DataBase } from "./database"
import { AccountStorage } from "./accountStorage"
import { encodeRisuSave } from "./risuSave";
+import { language } from "src/lang"
export class AutoStorage{
isAccount:boolean = false
@@ -41,12 +42,28 @@ export class AutoStorage{
if(this.isAccount){
return true
}
- if(db.account?.useSync && (localStorage.getItem('accountst') !== 'able')){
+ if((localStorage.getItem('dosync') === 'sync' || db.account?.useSync) && (localStorage.getItem('accountst') !== 'able')){
getUnpargeables(db)
console.log("migrating")
const keys = await this.realStorage.keys()
let i = 0;
const accountStorage = new AccountStorage()
+
+ const a = accountStorage.getItem('database/database.bin')
+ if(a){
+ const sel = await alertSelect([language.loadDataFromAccount, language.saveCurrentDataToAccount])
+ if(sel === "0"){
+ this.realStorage = accountStorage
+ alertStore.set({
+ type: "none",
+ msg: ""
+ })
+ localStorage.setItem('accountst', 'able')
+ localStorage.setItem('fallbackRisuToken',JSON.stringify(db.account))
+ this.isAccount = true
+ return true
+ }
+ }
let replaced:{[key:string]:string} = {}
for(const key of keys){
diff --git a/src/ts/storage/globalApi.ts b/src/ts/storage/globalApi.ts
index 21491f19..ebd28a96 100644
--- a/src/ts/storage/globalApi.ts
+++ b/src/ts/storage/globalApi.ts
@@ -677,7 +677,7 @@ function getBasename(data:string){
return lasts
}
-export function getUnpargeables(db:Database) {
+export function getUnpargeables(db:Database, uptype:'basename'|'pure' = 'basename') {
let unpargeable:string[] = []
function addUnparge(data:string){
@@ -687,9 +687,9 @@ export function getUnpargeables(db:Database) {
if(data === ''){
return
}
- const bn = getBasename(data)
+ const bn = uptype === 'basename' ? getBasename(data) : data
if(!unpargeable.includes(bn)){
- unpargeable.push(getBasename(data))
+ unpargeable.push(bn)
}
}