From 13c51fdf5b9fd42a244bc1620e7e96c80a080f66 Mon Sep 17 00:00:00 2001 From: André Oliveira <37463445+SpecialAro@users.noreply.github.com> Date: Thu, 30 Jun 2022 14:35:45 +0100 Subject: Feature: Copy Ferdium info from the 'About' dialog into the clipboard (#402) Co-authored-by: Vijay A --- src/lib/Menu.js | 57 +++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 45 insertions(+), 12 deletions(-) (limited to 'src/lib') diff --git a/src/lib/Menu.js b/src/lib/Menu.js index d3a3163b9..7b048d3fa 100644 --- a/src/lib/Menu.js +++ b/src/lib/Menu.js @@ -9,6 +9,7 @@ import { } from '@electron/remote'; import { autorun, observable } from 'mobx'; import { defineMessages } from 'react-intl'; +import osName from 'os-name'; import { CUSTOM_WEBSITE_RECIPE_ID, GITHUB_FERDIUM_URL, @@ -27,8 +28,12 @@ import { addNewServiceShortcutKey, splitModeToggleShortcutKey, muteFerdiumShortcutKey, + electronVersion, + chromeVersion, + nodeVersion, + osArch, } from '../environment'; -import { aboutAppDetails, ferdiumVersion } from '../environment-remote'; +import { ferdiumVersion } from '../environment-remote'; import { todoActions } from '../features/todos/actions'; import { workspaceActions } from '../features/workspaces/actions'; import { workspaceStore } from '../features/workspaces/index'; @@ -36,6 +41,9 @@ import apiBase, { serverBase } from '../api/apiBase'; import { openExternalUrl } from '../helpers/url-helpers'; import globalMessages from '../i18n/globalMessages'; +// @ts-expect-error Cannot find module '../buildInfo.json' or its corresponding type declarations. +import * as buildInfo from '../buildInfo.json'; + const menuItems = defineMessages({ edit: { id: 'menu.edit', @@ -325,6 +333,14 @@ const menuItems = defineMessages({ id: 'menu.services.goHome', defaultMessage: 'Home', }, + ok: { + id: 'global.ok', + defaultMessage: 'Ok', + }, + copyToClipboard: { + id: 'menu.services.copyToClipboard', + defaultMessage: 'Copy to clipboard', + }, }); function getActiveService() { @@ -796,10 +812,6 @@ class FranzMenu { label: isMac ? app.name : intl.formatMessage(menuItems.file), accelerator: `${altKey()}+F`, submenu: [ - { - label: intl.formatMessage(menuItems.about), - role: 'about', - }, { type: 'separator', }, @@ -856,15 +868,36 @@ class FranzMenu { ], }); + const aboutAppDetails = [ + `Version: ${ferdiumVersion}`, + `Electron: ${electronVersion}`, + `Chrome: ${chromeVersion}`, + `Node.js: ${nodeVersion}`, + `Platform: ${osName()}`, + `Arch: ${osArch}`, + `Build date: ${new Date(Number(buildInfo.timestamp))}`, + `Git SHA: ${buildInfo.gitHashShort}`, + `Git branch: ${buildInfo.gitBranch}`, + ].join('\n'); + const about = { label: intl.formatMessage(menuItems.about), click: () => { - dialog.showMessageBox({ - type: 'info', - title: 'Ferdium', - message: 'Ferdium', - detail: aboutAppDetails(), - }); + dialog + .showMessageBox({ + type: 'info', + title: 'Ferdium', + message: 'Ferdium', + detail: aboutAppDetails, + buttons: [intl.formatMessage(menuItems.copyToClipboard), intl.formatMessage(menuItems.ok)], + }) + .then(result => { + if (result.response === 0) { + clipboard.write({ + text: aboutAppDetails, + }); + } + }); }, }; @@ -889,7 +922,7 @@ class FranzMenu { }, ); - tpl[5].submenu.unshift(about, { + tpl[0].submenu.unshift(about, { type: 'separator', }); } else { -- cgit v1.2.3-70-g09d2