Skip to content

Commit

Permalink
Fixed the bug that the order of tabs is incorrect when creating many …
Browse files Browse the repository at this point in the history
…tabs.

Changed to save session when exiting application.
Changed to delete Chrome download history after download.
  • Loading branch information
kura52 committed Jul 13, 2019
1 parent 1b5f510 commit a4be012
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 60 deletions.
88 changes: 45 additions & 43 deletions src/BrowserWindowPlus.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand Down Expand Up @@ -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){
Expand Down
5 changes: 3 additions & 2 deletions src/ChromeDownloadWrapper.js
Original file line number Diff line number Diff line change
Expand Up @@ -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(){
Expand Down
5 changes: 4 additions & 1 deletion src/Download.js
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,7 @@ export default class Download {
})

}
return savePath;
return savePath
}

downloadReady(item, url, webContents,win,audioExtract,videoConvert) {
Expand Down Expand Up @@ -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(_=>_)
}
Expand Down
29 changes: 15 additions & 14 deletions src/remoted-chrome/Browser.js
Original file line number Diff line number Diff line change
Expand Up @@ -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})
})

Expand Down Expand Up @@ -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)
Expand All @@ -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))
}
// }
Expand All @@ -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
}

}
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit a4be012

Please sign in to comment.