From c1e24406d9ecbbbc0e371cc6605396d7711e22a5 Mon Sep 17 00:00:00 2001 From: Alexis Svinartchouk Date: Tue, 7 Jan 2020 15:49:11 +0100 Subject: [PATCH] Convert notification.js to typescript Change-type: patch --- lib/gui/app/os/notification.js | 56 -------------------------------- lib/gui/app/os/notification.ts | 36 ++++++++++++++++++++ lib/gui/app/pages/main/Flash.tsx | 18 +++++----- 3 files changed, 46 insertions(+), 64 deletions(-) delete mode 100644 lib/gui/app/os/notification.js create mode 100644 lib/gui/app/os/notification.ts diff --git a/lib/gui/app/os/notification.js b/lib/gui/app/os/notification.js deleted file mode 100644 index 757866dd..00000000 --- a/lib/gui/app/os/notification.js +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2017 balena.io - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -'use strict' - -const electron = require('electron') -const settings = require('../models/settings') - -/** - * @summary Send a notification - * @function - * @public - * - * @description - * This function makes use of Electron's notification desktop - * integration feature. See: - * http://electron.atom.io/docs/v0.37.5/tutorial/desktop-environment-integration/ - * - * @param {String} title - notification title - * @param {Object} options - options object - * @param {String} options.body - notification body - * @param {String} options.icon - supported icon path - * @returns {Object} HTML5 notification instance - * - * @example - * notification.send('Hello', { - * body: 'Foo Bar Bar', - * icon: 'icon.png' - * }); - */ -exports.send = (title, options) => { - // Bail out if desktop notifications are disabled - if (!settings.get('desktopNotifications')) { - return null - } - - // `app.dock` is only defined in OS X - if (electron.remote.app.dock) { - electron.remote.app.dock.bounce() - } - - return new window.Notification(title, options) -} diff --git a/lib/gui/app/os/notification.ts b/lib/gui/app/os/notification.ts new file mode 100644 index 00000000..0a074094 --- /dev/null +++ b/lib/gui/app/os/notification.ts @@ -0,0 +1,36 @@ +/* + * Copyright 2017 balena.io + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import * as electron from 'electron'; + +import * as settings from '../models/settings'; + +/** + * @summary Send a notification + */ +export function send(title: string, body: string, icon: string) { + // Bail out if desktop notifications are disabled + if (!settings.get('desktopNotifications')) { + return; + } + + // `app.dock` is only defined in OS X + if (electron.remote.app.dock) { + electron.remote.app.dock.bounce(); + } + + return new window.Notification(title, { body, icon }); +} diff --git a/lib/gui/app/pages/main/Flash.tsx b/lib/gui/app/pages/main/Flash.tsx index ce605a95..f51da739 100644 --- a/lib/gui/app/pages/main/Flash.tsx +++ b/lib/gui/app/pages/main/Flash.tsx @@ -93,14 +93,15 @@ const flashImageToDrive = async (goToSuccess: () => void) => { await imageWriter.flash(image.path, drives); if (!flashState.wasLastFlashCancelled()) { const flashResults: any = flashState.getFlashResults(); - notification.send('Flash complete!', { - body: messages.info.flashComplete( + notification.send( + 'Flash complete!', + messages.info.flashComplete( basename, drives as any, flashResults.results.devices, ), - icon: iconPath, - }); + iconPath, + ); goToSuccess(); } } catch (error) { @@ -109,10 +110,11 @@ const flashImageToDrive = async (goToSuccess: () => void) => { return ''; } - notification.send('Oops! Looks like the flash failed.', { - body: messages.error.flashFailure(path.basename(image.path), drives), - icon: iconPath, - }); + notification.send( + 'Oops! Looks like the flash failed.', + messages.error.flashFailure(path.basename(image.path), drives), + iconPath, + ); let errorMessage = getErrorMessageFromCode(error.code); if (!errorMessage) {