fixed #4235 - prevent OS from sleeping during transfers

This commit is contained in:
Eugene Pankov 2021-07-24 10:04:14 +02:00
parent a2e0db2a16
commit 4673aa498e
No known key found for this signature in database
GPG Key ID: 5896FCBBDD1CF4F4
2 changed files with 13 additions and 4 deletions

View File

@ -1,5 +1,5 @@
import { Injectable } from '@angular/core'
import { App, IpcRenderer, Shell, Dialog, Clipboard, GlobalShortcut, Screen, Remote, AutoUpdater, TouchBar, BrowserWindow, Menu, MenuItem, NativeImage } from 'electron'
import { App, IpcRenderer, Shell, Dialog, Clipboard, GlobalShortcut, Screen, Remote, AutoUpdater, TouchBar, BrowserWindow, Menu, MenuItem, NativeImage, PowerSaveBlocker } from 'electron'
import * as remote from '@electron/remote'
export interface MessageBoxResponse {
@ -20,6 +20,7 @@ export class ElectronService {
remote: Remote
process: any
autoUpdater: AutoUpdater
powerSaveBlocker: PowerSaveBlocker
TouchBar: typeof TouchBar
BrowserWindow: typeof BrowserWindow
Menu: typeof Menu
@ -39,6 +40,7 @@ export class ElectronService {
this.globalShortcut = remote.globalShortcut
this.nativeImage = remote.nativeImage
this.autoUpdater = remote.autoUpdater
this.powerSaveBlocker = remote.powerSaveBlocker
this.TouchBar = remote.TouchBar
this.BrowserWindow = remote.BrowserWindow
this.Menu = remote.Menu

View File

@ -198,7 +198,7 @@ export class ElectronPlatformService extends PlatformService {
}
return Promise.all(result.filePaths.map(async p => {
const transfer = new ElectronFileUpload(p)
const transfer = new ElectronFileUpload(p, this.electron)
await wrapPromise(this.zone, transfer.open())
this.fileTransferStarted.next(transfer)
return transfer
@ -215,7 +215,7 @@ export class ElectronPlatformService extends PlatformService {
if (!result.filePath) {
return null
}
const transfer = new ElectronFileDownload(result.filePath, mode, size)
const transfer = new ElectronFileDownload(result.filePath, mode, size, this.electron)
await wrapPromise(this.zone, transfer.open())
this.fileTransferStarted.next(transfer)
return transfer
@ -233,10 +233,12 @@ class ElectronFileUpload extends FileUpload {
private mode: number
private file: fs.FileHandle
private buffer: Buffer
private powerSaveBlocker = 0
constructor (private filePath: string) {
constructor (private filePath: string, private electron: ElectronService) {
super()
this.buffer = Buffer.alloc(256 * 1024)
this.powerSaveBlocker = electron.powerSaveBlocker.start('prevent-app-suspension')
}
async open (): Promise<void> {
@ -265,19 +267,23 @@ class ElectronFileUpload extends FileUpload {
}
close (): void {
this.electron.powerSaveBlocker.stop(this.powerSaveBlocker)
this.file.close()
}
}
class ElectronFileDownload extends FileDownload {
private file: fs.FileHandle
private powerSaveBlocker = 0
constructor (
private filePath: string,
private mode: number,
private size: number,
private electron: ElectronService,
) {
super()
this.powerSaveBlocker = electron.powerSaveBlocker.start('prevent-app-suspension')
}
async open (): Promise<void> {
@ -306,6 +312,7 @@ class ElectronFileDownload extends FileDownload {
}
close (): void {
this.electron.powerSaveBlocker.stop(this.powerSaveBlocker)
this.file.close()
}
}