Add alertNormalWait function to alert.ts and handle tab activation in saveDb function

This commit is contained in:
kwaroran
2024-04-08 22:00:20 +09:00
parent e65785b225
commit 4e8e6a6f70
2 changed files with 33 additions and 1 deletions

View File

@@ -44,6 +44,19 @@ export function alertNormal(msg:string){
})
}
export async function alertNormalWait(msg:string){
alertStore.set({
'type': 'normal',
'msg': msg
})
while(true){
if (get(alertStore).type === 'none'){
break
}
await sleep(10)
}
}
export async function alertLogin(){
alertStore.set({
'type': 'login',

View File

@@ -11,7 +11,7 @@ import { checkUpdate } from "../update";
import { botMakerMode, selectedCharID } from "../stores";
import { Body, ResponseType, fetch as TauriFetch } from "@tauri-apps/api/http";
import { loadPlugins } from "../plugins/plugins";
import { alertConfirm, alertError, alertNormal } from "../alert";
import { alertConfirm, alertError, alertNormal, alertNormalWait } from "../alert";
import { checkDriverInit, syncDrive } from "../drive/drive";
import { hasher } from "../parser";
import { characterURLImport, hubURL } from "../characterCards";
@@ -258,10 +258,29 @@ export async function saveDb(){
DataBase.subscribe(() => {
changed = true
})
let gotChannel = false
const sessionID = v4()
const channel = new BroadcastChannel('risu-db')
channel.onmessage = async (ev) => {
if(ev.data === sessionID){
return
}
if(!gotChannel){
gotChannel = true
await alertNormalWait("Current tab is inactivated since other tab is active. to activate this tab, click OK")
gotChannel = false
}
}
let savetrys = 0
while(true){
try {
if(changed){
if(gotChannel){
//Data is saved in other tab
await sleep(1000)
continue
}
channel.postMessage(sessionID)
changed = false
let db = get(DataBase)
db.saveTime = Math.floor(Date.now() / 1000)