From 098c46e88349d36d44a479f47a6c8b5516f12879 Mon Sep 17 00:00:00 2001 From: vantezzen Date: Wed, 2 Oct 2019 11:43:28 +0200 Subject: Implement #87 --- .../settings/settings/EditSettingsForm.js | 5 +- src/config.js | 1 + src/containers/settings/EditSettingsScreen.js | 12 +++++ src/electron/ipc-api/autoUpdate.js | 53 ++++++++++++++-------- src/i18n/locales/defaultMessages.json | 21 +++++++-- src/i18n/locales/en-US.json | 1 + .../containers/settings/EditSettingsScreen.json | 21 +++++++-- 7 files changed, 85 insertions(+), 29 deletions(-) diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js index 1d2383125..75f0d9d23 100644 --- a/src/components/settings/settings/EditSettingsForm.js +++ b/src/components/settings/settings/EditSettingsForm.js @@ -146,6 +146,7 @@ export default @observer class EditSettingsForm extends Component { isTodosEnabled: PropTypes.bool.isRequired, isWorkspaceEnabled: PropTypes.bool.isRequired, server: PropTypes.string.isRequired, + noUpdates: PropTypes.bool.isRequired, }; static contextTypes = { @@ -179,6 +180,7 @@ export default @observer class EditSettingsForm extends Component { isTodosEnabled, isWorkspaceEnabled, server, + noUpdates, } = this.props; const { intl } = this.context; @@ -412,7 +414,7 @@ export default @observer class EditSettingsForm extends Component { buttonType="secondary" label={intl.formatMessage(updateButtonLabelMessage)} onClick={checkForUpdates} - disabled={isCheckingForUpdates || isUpdateAvailable} + disabled={noUpdates || isCheckingForUpdates || isUpdateAvailable} loaded={!isCheckingForUpdates || !isUpdateAvailable} /> )} @@ -421,6 +423,7 @@ export default @observer class EditSettingsForm extends Component { )}
+ {intl.formatMessage(messages.currentVersion)} {' '} {remote.app.getVersion()} diff --git a/src/config.js b/src/config.js index ea36be1f9..c6c31ce23 100644 --- a/src/config.js +++ b/src/config.js @@ -63,6 +63,7 @@ export const DEFAULT_APP_SETTINGS = { scheduledDNDStart: '17:00', scheduledDNDEnd: '09:00', hibernate: false, + noUpdates: false, }; export const DEFAULT_FEATURES_CONFIG = { diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js index 962dc1b65..463a290d2 100644 --- a/src/containers/settings/EditSettingsScreen.js +++ b/src/containers/settings/EditSettingsScreen.js @@ -109,6 +109,10 @@ const messages = defineMessages({ id: 'settings.app.form.beta', defaultMessage: '!!!Include beta versions', }, + noUpdates: { + id: 'settings.app.form.noUpdates', + defaultMessage: '!!!Disable updates', + }, enableTodos: { id: 'settings.app.form.enableTodos', defaultMessage: '!!!Enable Franz Todos', @@ -161,12 +165,14 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e enableSpellchecking: settingsData.enableSpellchecking, spellcheckerLanguage: settingsData.spellcheckerLanguage, beta: settingsData.beta, // we need this info in the main process as well + noUpdates: settingsData.noUpdates, // we need this info in the main process as well locale: settingsData.locale, // we need this info in the main process as well }, }); user.update({ userData: { + noUpdates: settingsData.noUpdates, beta: settingsData.beta, locale: settingsData.locale, }, @@ -319,6 +325,11 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e value: user.data.beta, default: DEFAULT_APP_SETTINGS.beta, }, + noUpdates: { + label: intl.formatMessage(messages.noUpdates), + value: settings.app.noUpdates, + default: DEFAULT_APP_SETTINGS.noUpdates, + }, }, }; @@ -381,6 +392,7 @@ export default @inject('stores', 'actions') @observer class EditSettingsScreen e isWorkspaceEnabled={workspaces.isFeatureActive} server={server || 'https://api.franzinfra.com'} lockingFeatureEnabled={lockingFeatureEnabled} + noUpdates={this.props.stores.settings.app.noUpdates} /> ); diff --git a/src/electron/ipc-api/autoUpdate.js b/src/electron/ipc-api/autoUpdate.js index 6a3314b2b..506aecdf7 100644 --- a/src/electron/ipc-api/autoUpdate.js +++ b/src/electron/ipc-api/autoUpdate.js @@ -4,24 +4,33 @@ import { autoUpdater } from 'electron-updater'; const debug = require('debug')('Ferdi:ipcApi:autoUpdate'); export default (params) => { - if (process.platform === 'darwin' || process.platform === 'win32' || process.env.APPIMAGE) { + const disableUpdates = Boolean(params.settings.app.get('noUpdates')); + + if (disableUpdates) { + autoUpdater.autoInstallOnAppQuit = false; + autoUpdater.autoDownload = false; + } else if (process.platform === 'darwin' || process.platform === 'win32' || process.env.APPIMAGE) { ipcMain.on('autoUpdate', (event, args) => { - try { - autoUpdater.autoInstallOnAppQuit = false; - autoUpdater.allowPrerelease = Boolean(params.settings.app.get('beta')); - if (args.action === 'check') { - autoUpdater.checkForUpdates(); - } else if (args.action === 'install') { - debug('install update'); - autoUpdater.quitAndInstall(); - // we need to send a quit event - setTimeout(() => { - app.quit(); - }, 20); + const enableUpdate = !params.settings.app.get('noUpdates'); + + if (enableUpdate) { + try { + autoUpdater.autoInstallOnAppQuit = false; + autoUpdater.allowPrerelease = Boolean(params.settings.app.get('beta')); + if (args.action === 'check') { + autoUpdater.checkForUpdates(); + } else if (args.action === 'install') { + debug('install update'); + autoUpdater.quitAndInstall(); + // we need to send a quit event + setTimeout(() => { + app.quit(); + }, 20); + } + } catch (e) { + console.error(e); + event.sender.send('autoUpdate', { error: true }); } - } catch (e) { - console.error(e); - event.sender.send('autoUpdate', { error: true }); } }); @@ -32,10 +41,14 @@ export default (params) => { autoUpdater.on('update-available', (event) => { debug('update-available'); - params.mainWindow.webContents.send('autoUpdate', { - version: event.version, - available: true, - }); + + const enableUpdate = !params.settings.app.get('noUpdates'); + if (enableUpdate) { + params.mainWindow.webContents.send('autoUpdate', { + version: event.version, + available: true, + }); + } }); autoUpdater.on('download-progress', (progressObj) => { diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 4033407e3..2cb42d134 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -4032,29 +4032,42 @@ } }, { - "defaultMessage": "!!!Enable Franz Todos", + "defaultMessage": "!!!Disable updates", "end": { "column": 3, "line": 115 }, "file": "src/containers/settings/EditSettingsScreen.js", + "id": "settings.app.form.noUpdates", + "start": { + "column": 13, + "line": 112 + } + }, + { + "defaultMessage": "!!!Enable Franz Todos", + "end": { + "column": 3, + "line": 119 + }, + "file": "src/containers/settings/EditSettingsScreen.js", "id": "settings.app.form.enableTodos", "start": { "column": 15, - "line": 112 + "line": 116 } }, { "defaultMessage": "!!!Keep all workspaces loaded", "end": { "column": 3, - "line": 119 + "line": 123 }, "file": "src/containers/settings/EditSettingsScreen.js", "id": "settings.app.form.keepAllWorkspacesLoaded", "start": { "column": 27, - "line": 116 + "line": 120 } } ], diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index ad64bec14..c8cf09366 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -231,6 +231,7 @@ "settings.app.form.language": "Language", "settings.app.form.lockPassword": "Ferdi Lock password", "settings.app.form.minimizeToSystemTray": "Minimize Ferdi to system tray", + "settings.app.form.noUpdates": "Disable updates", "settings.app.form.privateNotifications": "Don't show message content in notifications", "settings.app.form.runInBackground": "Keep Ferdi in background when closing the window", "settings.app.form.scheduledDNDEnabled": "Enable scheduled Do-not-Disturb", diff --git a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json index dccf8b992..110b7787b 100644 --- a/src/i18n/messages/src/containers/settings/EditSettingsScreen.json +++ b/src/i18n/messages/src/containers/settings/EditSettingsScreen.json @@ -272,16 +272,29 @@ "column": 3 } }, + { + "id": "settings.app.form.noUpdates", + "defaultMessage": "!!!Disable updates", + "file": "src/containers/settings/EditSettingsScreen.js", + "start": { + "line": 112, + "column": 13 + }, + "end": { + "line": 115, + "column": 3 + } + }, { "id": "settings.app.form.enableTodos", "defaultMessage": "!!!Enable Franz Todos", "file": "src/containers/settings/EditSettingsScreen.js", "start": { - "line": 112, + "line": 116, "column": 15 }, "end": { - "line": 115, + "line": 119, "column": 3 } }, @@ -290,11 +303,11 @@ "defaultMessage": "!!!Keep all workspaces loaded", "file": "src/containers/settings/EditSettingsScreen.js", "start": { - "line": 116, + "line": 120, "column": 27 }, "end": { - "line": 119, + "line": 123, "column": 3 } } -- cgit v1.2.3-70-g09d2