diff --git a/src/BrowserWindowPlus.js b/src/BrowserWindowPlus.js index 42278c08..f58eebad 100644 --- a/src/BrowserWindowPlus.js +++ b/src/BrowserWindowPlus.js @@ -65,21 +65,21 @@ async function savedStateUpdate(states,closeKey){ } let autoSaveStarted -function startAutoSaveAllWindowsState(){ - if(autoSaveStarted) return - - let prevStates = "" - setInterval(async _=>{ - const states = await saveAllWindowsState() - if(!states.wins.length) return +let prevStates = "" +const _startAutoSaveAllWindowsState = async _=>{ + const states = await saveAllWindowsState() + if(!states.wins.length) return - const statesStr = JSON.stringify(states.wins.map(state=>state.winState)) - if(prevStates == statesStr) return - states.created_at = Date.now() - savedStateUpdate(states) - prevStates = statesStr - },(parseInt(mainState.autoSaveInterval)||60) * 1000) + const statesStr = JSON.stringify(states.wins.map(state=>state.winState)) + if(prevStates == statesStr) return + states.created_at = Date.now() + prevStates = statesStr + await savedStateUpdate(states) +} +function startAutoSaveAllWindowsState(){ + if(autoSaveStarted) return + setInterval(_startAutoSaveAllWindowsState,(parseInt(mainState.autoSaveInterval)||60) * 1000) autoSaveStarted = true } @@ -221,40 +221,42 @@ function create(args){ bw.webContents.send('get-window-state', true) let flag = false - ipcMain.once('get-window-state-reply',async (e,ret)=>{ - - console.log('close-save') - await clearDatas() - // await new Promise(r=>{session.defaultSession.cookies.get({}, (e,cookies)=>{ - // fs.writeFileSync(path.join(app.getPath('userData'), 'cookie.txt'),JSON.stringify(cookies)) //@TODO ELECTRON - // r() - // })}) - - try{ - const saveState = {} - for(let key of Object.keys(settingDefault)){ - if(key == "toggleNav") continue - // if(key == "adBlockDisableSite"){ - // saveState[key] = JSON.stringify(mainState[key]) - // } - else{ - saveState[key] = mainState[key] + _startAutoSaveAllWindowsState().then(()=>{ + ipcMain.once('get-window-state-reply',async (e,ret)=>{ + + console.log('close-save') + await clearDatas() + // await new Promise(r=>{session.defaultSession.cookies.get({}, (e,cookies)=>{ + // fs.writeFileSync(path.join(app.getPath('userData'), 'cookie.txt'),JSON.stringify(cookies)) //@TODO ELECTRON + // r() + // })}) + + try{ + const saveState = {} + for(let key of Object.keys(settingDefault)){ + if(key == "toggleNav") continue + // if(key == "adBlockDisableSite"){ + // saveState[key] = JSON.stringify(mainState[key]) + // } + else{ + saveState[key] = mainState[key] + } } - } - console.log(331,ret) + console.log(331,ret) - state.update({ key: 1 }, { $set: {key: 1, ver:fs.readFileSync(path.join(__dirname,'../VERSION.txt')).toString(), ...bounds, maximize,maxBounds, - toggleNav:mainState.toggleNav==2 || mainState.toggleNav==3 ? 0 :mainState.toggleNav,...saveState,winState:ret, updated_at: Date.now()} }, { upsert: true }).then(_=>{ - InitSetting.reload() - }) + state.update({ key: 1 }, { $set: {key: 1, ver:fs.readFileSync(path.join(__dirname,'../VERSION.txt')).toString(), ...bounds, maximize,maxBounds, + toggleNav:mainState.toggleNav==2 || mainState.toggleNav==3 ? 0 :mainState.toggleNav,...saveState,winState:ret, updated_at: Date.now()} }, { upsert: true }).then(_=>{ + InitSetting.reload() + }) - saved = true - console.log("getState") - if(!flag) bw.close() - }catch(e){ - saved = true - } + saved = true + console.log("getState") + if(!flag) bw.close() + }catch(e){ + saved = true + } + }) }) setTimeout(_=>{ if(!flag){ diff --git a/src/ChromeDownloadWrapper.js b/src/ChromeDownloadWrapper.js index 1f6dac55..3efa3349 100644 --- a/src/ChromeDownloadWrapper.js +++ b/src/ChromeDownloadWrapper.js @@ -101,12 +101,13 @@ export default class ChromeDownloadWrapper extends EventEmitter { this.intervalId = void 0 await Browser.bg.evaluate(downloadId => { return new Promise(resolve => { - chrome.downloads.cancel(downloadId, () => resolve()) + chrome.downloads.cancel(downloadId, () => { + chrome.downloads.erase({id: downloadId}, () => resolve()) + }) }) }, this.item.id) await this.updateState() this.emit('done') - } async kill(){ diff --git a/src/Download.js b/src/Download.js index d1916ca6..b79768d8 100644 --- a/src/Download.js +++ b/src/Download.js @@ -346,7 +346,7 @@ export default class Download { }) } - return savePath; + return savePath } downloadReady(item, url, webContents,win,audioExtract,videoConvert) { @@ -409,6 +409,9 @@ export default class Download { item.once('done', async (event, state) => { console.log(111,audioExtract,videoConvert) + + Browser.bg.evaluate(downloadId => chrome.downloads.erase({id: downloadId}), item.key) + if(audioExtract){ new FfmpegWrapper(item.getSavePath()).exe(_=>_) } diff --git a/src/remoted-chrome/Browser.js b/src/remoted-chrome/Browser.js index 0712cd3d..31a3e944 100644 --- a/src/remoted-chrome/Browser.js +++ b/src/remoted-chrome/Browser.js @@ -813,8 +813,13 @@ Or, please use the Chromium bundled version.` if(PopupPanel.tabId == tabId || this.popUpCache[tabId]) return // const cont = new webContents(tabId) // BrowserView.movedTab(cont, windowId, fromIndex, toIndex) - console.log(999999,Date.now()) - if(this.tabMoveStart || Date.now() - this.tabMoving < 1500) return + // console.log(999999,Date.now()) + if(this.tabMoveStart){ + this.tabMoving = Date.now() + this.tabMoveStart = void 0 + } + if(Date.now() - this.tabMoving < 1000) return + // console.log(99999933,this.tabMoveStart, Date.now() - this.tabMoving,Date.now()) BrowserPanel.MovedTabs(tabId, {windowId, fromIndex, toIndex}) }) @@ -1170,13 +1175,8 @@ Or, please use the Chromium bundled version.` } static async syncTabPosition(panelKey){ - const now = Date.now() - const diff = now - this.prevSyncTabPositionTime - this.prevSyncTabPositionTime = now - console.log(999999994,diff,now) - if(diff < 100){ - return - } + if(this.syncTabPositionProcessing) return + this.syncTabPositionProcessing = true console.log('syncTabPosition') let {myTabIds, selectedTabKey} = await this.getTabIds(panelKey) @@ -1201,8 +1201,10 @@ Or, please use the Chromium bundled version.` } if(flag){ await this.bg.evaluate(tabIds => new Promise(r=>chrome.tabs.remove(tabIds,()=>r())),shouldRemoveTabIdsFromChrome) + this.syncTabPositionProcessing = false return await this.syncTabPosition(panelKey) } + this.syncTabPositionProcessing = false return await new Promise(r=>setTimeout(()=>this.syncTabPosition(panelKey),1700)) } // } @@ -1227,19 +1229,18 @@ Or, please use the Chromium bundled version.` // panel.browserWindow.webContents.send('arrange-tabs',chromeTabIds) // } // else{ - console.log(9999991,Date.now()) + // console.log(9999991,myTabIds,Date.now()) const key = Math.random().toString() this.tabMoveStart = key await this.bg.evaluate((tabIds, windowId) => { return new Promise(resolve => chrome.tabs.move(tabIds,{index: 0, windowId}, () => resolve())) },myTabIds, panel.windowId) - console.log(9999992,Date.now()) - if(this.tabMoveStart == key) this.tabMoveStart = void 0 - this.tabMoving = Date.now() + // console.log(9999992,Date.now()) // } break } } + this.syncTabPositionProcessing = false } } @@ -1348,7 +1349,7 @@ class PopupPanel{ if (bounds.width) { if(Browser.CUSTOM_CHROMIUM){ - // bounds.width = bounds.width + 8 + bounds.width = bounds.width + 16 bounds.height = bounds.height + 36 } this._bounds = bounds