Skip to content

Commit 38e38a7

Browse files
authored
Simplify auto check for updates (#262)
* Refactored check for updates mechanism * Removed Check For Update option in settings * Added migration scheme for appConfig Removed ‘checkUpdate’ and ‘lastCheck’ from general settings
1 parent 4595555 commit 38e38a7

File tree

4 files changed

+41
-66
lines changed

4 files changed

+41
-66
lines changed

app.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,18 @@ function migrateData() {
300300
})
301301
});
302302
},
303+
304+
3: configs => {
305+
// Return current configs if checkUpdate and lastCheck do not exist
306+
const { checkUpdate, lastCheck} = configs.general;
307+
if ( checkUpdate === undefined || lastCheck === undefined ) {
308+
return configs;
309+
}
310+
// Remove checkUpdate and lastCheck
311+
return Object.assign({}, configs, {
312+
general: omit(configs.general, ['checkUpdate', 'lastCheck'])
313+
});
314+
},
303315
};
304316
// Get the current Config
305317
const configs = appConfig.getAll();

app/components/settings/General.jsx

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,18 @@ class General extends Component {
6161
<div className="row">
6262
<div className="col-md-6">
6363
<div className="pageItem">
64-
<label className="itemLabel">{t('settings:fields:autoCheckUpdate:name')}</label>
64+
<label className="itemLabel">{t('settings:fields:language:name')}</label>
6565
<select
66-
name="checkUpdate"
67-
value={this.state.checkUpdate}
66+
name="language"
67+
value={this.state.language}
6868
onChange={this.handleInputChange}
6969
>
70-
<option value="daily">{t('settings:fields:autoCheckUpdate:daily')}</option>
71-
<option value="weekly">{t('settings:fields:autoCheckUpdate:weekly')}</option>
70+
<option value="de">{t('settings:fields:language:de', { lng: 'de' })}</option>
71+
<option value="en">{t('settings:fields:language:en', { lng: 'en' })}</option>
72+
<option value="fr">{t('settings:fields:language:fr', { lng: 'fr' })}</option>
73+
<option value="id">{t('settings:fields:language:id', { lng: 'id' })}</option>
74+
<option value="vi">{t('settings:fields:language:vi', { lng: 'vi' })}</option>
75+
<option value="zh-CN">{t('settings:fields:language:zh-CN', { lng: 'zh-CN' })}</option>
7276
</select>
7377
</div>
7478
</div>
@@ -87,25 +91,6 @@ class General extends Component {
8791
</div>
8892
</div>
8993
</div>
90-
<div className="row">
91-
<div className="col-md-6">
92-
<div className="pageItem">
93-
<label className="itemLabel">{t('settings:fields:language:name')}</label>
94-
<select
95-
name="language"
96-
value={this.state.language}
97-
onChange={this.handleInputChange}
98-
>
99-
<option value="de">{t('settings:fields:language:de', { lng: 'de' })}</option>
100-
<option value="en">{t('settings:fields:language:en', { lng: 'en' })}</option>
101-
<option value="fr">{t('settings:fields:language:fr', { lng: 'fr' })}</option>
102-
<option value="id">{t('settings:fields:language:id', { lng: 'id' })}</option>
103-
<option value="vi">{t('settings:fields:language:vi', { lng: 'vi' })}</option>
104-
<option value="zh-CN">{t('settings:fields:language:zh-CN', { lng: 'zh-CN' })}</option>
105-
</select>
106-
</div>
107-
</div>
108-
</div>
10994
</div>
11095
);
11196
}

main/auto-check-updates.js

Lines changed: 0 additions & 23 deletions
This file was deleted.

main/updater.js

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,30 @@ const { autoUpdater } = require('electron-updater');
44
const appConfig = require('electron-settings');
55
const isDev = require('electron-is-dev');
66

7+
// Set mainWindow
8+
const mainWindowID = appConfig.get('mainWindowID');
9+
const mainWindow = BrowserWindow.fromId(mainWindowID);
10+
711
// Disable Auto Downloading update;
812
autoUpdater.autoDownload = false;
913

1014
// Check for update silently
1115
let silentMode = true;
1216

13-
// Set mainWindow
14-
const mainWindowID = appConfig.get('mainWindowID');
15-
const mainWindow = BrowserWindow.fromId(mainWindowID);
16-
17-
// Check for Updates
18-
ipcMain.on('check-for-updates', (event) => {
19-
if(!isDev) {
20-
// Turn off silent mode
21-
silentMode = false;
22-
checkForUpdate();
23-
}
17+
// HANDLING IPC
18+
// Check for updates manually
19+
ipcMain.on('check-for-updates', event => {
20+
// Turn off silent mode first
21+
silentMode = false;
22+
checkForUpdate();
2423
});
2524

2625
// Start Download
2726
ipcMain.on('update-download-started', () => {
2827
autoUpdater.downloadUpdate();
2928
});
3029

31-
// All AutoUpdater Events
32-
// ====================================
30+
// CHECKING FOR UPDATE EVENTS
3331
// Checking for Update
3432
autoUpdater.on('checking-for-update', () => {
3533
// Only notice user when they checked manually
@@ -58,10 +56,11 @@ autoUpdater.on('error', error => {
5856
errMessage = 'Unknown Error';
5957
} else {
6058
errMessage = error.message;
61-
}
59+
};
6260
mainWindow.send('update-error', errMessage);
6361
});
6462

63+
// DOWNLOADING UPDATE EVENTS
6564
// Download Progress
6665
autoUpdater.on('download-progress', progressObj => {
6766
mainWindow.send('update-download-progress', progressObj.percent);
@@ -72,11 +71,13 @@ autoUpdater.on('update-downloaded', info => {
7271
mainWindow.send('update-downloaded', info);
7372
});
7473

75-
// Helper
74+
// Main Function
7675
function checkForUpdate() {
77-
autoUpdater.checkForUpdates();
76+
// Only check for update in Production
77+
if (!isDev) {
78+
autoUpdater.checkForUpdates();
79+
}
7880
}
7981

80-
module.exports = {
81-
checkForUpdate,
82-
};
82+
// Check for update on Startup
83+
checkForUpdate();

0 commit comments

Comments
 (0)