mirror of
https://github.com/Eugeny/tabby.git
synced 2025-07-04 10:29:55 +00:00
fixed #4235 - prevent OS from sleeping during transfers
This commit is contained in:
parent
a2e0db2a16
commit
4673aa498e
@ -1,5 +1,5 @@
|
|||||||
import { Injectable } from '@angular/core'
|
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'
|
import * as remote from '@electron/remote'
|
||||||
|
|
||||||
export interface MessageBoxResponse {
|
export interface MessageBoxResponse {
|
||||||
@ -20,6 +20,7 @@ export class ElectronService {
|
|||||||
remote: Remote
|
remote: Remote
|
||||||
process: any
|
process: any
|
||||||
autoUpdater: AutoUpdater
|
autoUpdater: AutoUpdater
|
||||||
|
powerSaveBlocker: PowerSaveBlocker
|
||||||
TouchBar: typeof TouchBar
|
TouchBar: typeof TouchBar
|
||||||
BrowserWindow: typeof BrowserWindow
|
BrowserWindow: typeof BrowserWindow
|
||||||
Menu: typeof Menu
|
Menu: typeof Menu
|
||||||
@ -39,6 +40,7 @@ export class ElectronService {
|
|||||||
this.globalShortcut = remote.globalShortcut
|
this.globalShortcut = remote.globalShortcut
|
||||||
this.nativeImage = remote.nativeImage
|
this.nativeImage = remote.nativeImage
|
||||||
this.autoUpdater = remote.autoUpdater
|
this.autoUpdater = remote.autoUpdater
|
||||||
|
this.powerSaveBlocker = remote.powerSaveBlocker
|
||||||
this.TouchBar = remote.TouchBar
|
this.TouchBar = remote.TouchBar
|
||||||
this.BrowserWindow = remote.BrowserWindow
|
this.BrowserWindow = remote.BrowserWindow
|
||||||
this.Menu = remote.Menu
|
this.Menu = remote.Menu
|
||||||
|
@ -198,7 +198,7 @@ export class ElectronPlatformService extends PlatformService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return Promise.all(result.filePaths.map(async p => {
|
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())
|
await wrapPromise(this.zone, transfer.open())
|
||||||
this.fileTransferStarted.next(transfer)
|
this.fileTransferStarted.next(transfer)
|
||||||
return transfer
|
return transfer
|
||||||
@ -215,7 +215,7 @@ export class ElectronPlatformService extends PlatformService {
|
|||||||
if (!result.filePath) {
|
if (!result.filePath) {
|
||||||
return null
|
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())
|
await wrapPromise(this.zone, transfer.open())
|
||||||
this.fileTransferStarted.next(transfer)
|
this.fileTransferStarted.next(transfer)
|
||||||
return transfer
|
return transfer
|
||||||
@ -233,10 +233,12 @@ class ElectronFileUpload extends FileUpload {
|
|||||||
private mode: number
|
private mode: number
|
||||||
private file: fs.FileHandle
|
private file: fs.FileHandle
|
||||||
private buffer: Buffer
|
private buffer: Buffer
|
||||||
|
private powerSaveBlocker = 0
|
||||||
|
|
||||||
constructor (private filePath: string) {
|
constructor (private filePath: string, private electron: ElectronService) {
|
||||||
super()
|
super()
|
||||||
this.buffer = Buffer.alloc(256 * 1024)
|
this.buffer = Buffer.alloc(256 * 1024)
|
||||||
|
this.powerSaveBlocker = electron.powerSaveBlocker.start('prevent-app-suspension')
|
||||||
}
|
}
|
||||||
|
|
||||||
async open (): Promise<void> {
|
async open (): Promise<void> {
|
||||||
@ -265,19 +267,23 @@ class ElectronFileUpload extends FileUpload {
|
|||||||
}
|
}
|
||||||
|
|
||||||
close (): void {
|
close (): void {
|
||||||
|
this.electron.powerSaveBlocker.stop(this.powerSaveBlocker)
|
||||||
this.file.close()
|
this.file.close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class ElectronFileDownload extends FileDownload {
|
class ElectronFileDownload extends FileDownload {
|
||||||
private file: fs.FileHandle
|
private file: fs.FileHandle
|
||||||
|
private powerSaveBlocker = 0
|
||||||
|
|
||||||
constructor (
|
constructor (
|
||||||
private filePath: string,
|
private filePath: string,
|
||||||
private mode: number,
|
private mode: number,
|
||||||
private size: number,
|
private size: number,
|
||||||
|
private electron: ElectronService,
|
||||||
) {
|
) {
|
||||||
super()
|
super()
|
||||||
|
this.powerSaveBlocker = electron.powerSaveBlocker.start('prevent-app-suspension')
|
||||||
}
|
}
|
||||||
|
|
||||||
async open (): Promise<void> {
|
async open (): Promise<void> {
|
||||||
@ -306,6 +312,7 @@ class ElectronFileDownload extends FileDownload {
|
|||||||
}
|
}
|
||||||
|
|
||||||
close (): void {
|
close (): void {
|
||||||
|
this.electron.powerSaveBlocker.stop(this.powerSaveBlocker)
|
||||||
this.file.close()
|
this.file.close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user