From 93db90c725bdc56967eb73eace8cc09d6d4b1c70 Mon Sep 17 00:00:00 2001 From: Alexis Svinartchouk Date: Mon, 21 Dec 2020 18:32:42 +0100 Subject: [PATCH] Disable screensaver while flashing (on balena-electron-env) Change-type: patch --- lib/gui/app/models/flash-state.ts | 5 +++++ lib/gui/app/modules/image-writer.ts | 9 ++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/gui/app/models/flash-state.ts b/lib/gui/app/models/flash-state.ts index f5479e5c..e0a3ce96 100644 --- a/lib/gui/app/models/flash-state.ts +++ b/lib/gui/app/models/flash-state.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +import * as electron from 'electron'; import * as sdk from 'etcher-sdk'; import * as _ from 'lodash'; @@ -45,6 +46,8 @@ export function isFlashing(): boolean { * start a flash process. */ export function setFlashingFlag() { + // see https://github.com/balenablocks/balena-electron-env/blob/4fce9c461f294d4a768db8f247eea6f75d7b08b0/README.md#remote-methods + electron.ipcRenderer.send('disable-screensaver'); store.dispatch({ type: Actions.SET_FLASHING_FLAG, data: {}, @@ -66,6 +69,8 @@ export function unsetFlashingFlag(results: { type: Actions.UNSET_FLASHING_FLAG, data: results, }); + // see https://github.com/balenablocks/balena-electron-env/blob/4fce9c461f294d4a768db8f247eea6f75d7b08b0/README.md#remote-methods + electron.ipcRenderer.send('enable-screensaver'); } export function setDevicePaths(devicePaths: string[]) { diff --git a/lib/gui/app/modules/image-writer.ts b/lib/gui/app/modules/image-writer.ts index 220fe64a..650a698a 100644 --- a/lib/gui/app/modules/image-writer.ts +++ b/lib/gui/app/modules/image-writer.ts @@ -272,7 +272,7 @@ export async function flash( throw new Error('There is already a flash in progress'); } - flashState.setFlashingFlag(); + await flashState.setFlashingFlag(); flashState.setDevicePaths( drives.map((d) => d.devicePath).filter((p) => p != null) as string[], ); @@ -290,9 +290,12 @@ export async function flash( try { const result = await write(image, drives, flashState.setProgressState); - flashState.unsetFlashingFlag(result); + await flashState.unsetFlashingFlag(result); } catch (error) { - flashState.unsetFlashingFlag({ cancelled: false, errorCode: error.code }); + await flashState.unsetFlashingFlag({ + cancelled: false, + errorCode: error.code, + }); windowProgress.clear(); const { results = {} } = flashState.getFlashResults(); const eventData = {