From c08c50501cfcd132fcaa234d2fd6c49cdb9dce7f Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Mon, 4 Apr 2022 13:49:00 -0400 Subject: [PATCH] Add copy button on 'About Lens' dialog Signed-off-by: Sebastian Malton --- .../menu/application-menu-items.injectable.ts | 6 ++++-- src/main/menu/menu.ts | 18 ++++++++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/main/menu/application-menu-items.injectable.ts b/src/main/menu/application-menu-items.injectable.ts index 9e95414838..83d2d9536a 100644 --- a/src/main/menu/application-menu-items.injectable.ts +++ b/src/main/menu/application-menu-items.injectable.ts @@ -70,7 +70,8 @@ const applicationMenuItemsInjectable = getInjectable({ label: `About ${productName}`, id: "about", click(menuItem: MenuItem, browserWindow: BrowserWindow) { - showAbout(browserWindow); + showAbout(browserWindow) + .catch(error => logger.error(`[MENU]: Failed to show Lens About view`, { error })); }, }, ...ignoreIf(autoUpdateDisabled, [ @@ -287,7 +288,8 @@ const applicationMenuItemsInjectable = getInjectable({ label: `About ${productName}`, id: "about", click(menuItem: MenuItem, browserWindow: BrowserWindow) { - showAbout(browserWindow); + showAbout(browserWindow) + .catch(error => logger.error(`[MENU]: Failed to show Lens About view`, { error })); }, }, ...ignoreIf(autoUpdateDisabled, [ diff --git a/src/main/menu/menu.ts b/src/main/menu/menu.ts index 4d5092b666..5342633aab 100644 --- a/src/main/menu/menu.ts +++ b/src/main/menu/menu.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import type { BrowserWindow } from "electron"; -import { app, dialog, Menu } from "electron"; +import { app, clipboard, dialog, Menu } from "electron"; import type { IComputedValue } from "mobx"; import { autorun } from "mobx"; import { appName, isWindows, productName } from "../../common/vars"; @@ -20,22 +20,28 @@ export function initMenu( }); } -export function showAbout(browserWindow: BrowserWindow) { +export async function showAbout(browserWindow: BrowserWindow) { const appInfo = [ `${appName}: ${app.getVersion()}`, `Electron: ${process.versions.electron}`, `Chrome: ${process.versions.chrome}`, `Node: ${process.versions.node}`, packageJson.copyright, - ]; + ].join("\n"); - dialog.showMessageBoxSync(browserWindow, { + const result = await dialog.showMessageBox(browserWindow, { title: `${isWindows ? " ".repeat(2) : ""}${appName}`, type: "info", - buttons: ["Close"], + buttons: ["Close", "Copy"], message: productName, - detail: appInfo.join("\r\n"), + detail: appInfo, + cancelId: 0, + defaultId: 0, }); + + if (result.response === 0) { + clipboard.writeText(appInfo); + } } export function buildMenu(