Merge pull request #247 from jgis/master

Force single app instance

Close #236
This commit is contained in:
Yuya Ochiai
2016-08-22 00:17:29 +09:00
committed by GitHub
3 changed files with 30 additions and 1 deletions

View File

@@ -17,10 +17,12 @@ Release date: TBD
#### Windows
- Update Mattermost icon for desktop notifications in Windows 10.
- An existing application instance will be reused instead of starting another instance.
#### Linux (Beta)
- Added an option to make the taskbar icon flash on new messages
- Added the badge to count mentions for Unity.
- An existing application instance will be reused instead of starting another instance.
#### OS X
- Added an option to toggle the red dot icon for unread messages (default is on).
@@ -31,7 +33,6 @@ Release date: TBD
### Bug Fixes
## Release v1.3.0
Release date: 2016-07-18

View File

@@ -128,6 +128,17 @@ const trayImages = function() {
}();
var willAppQuit = false;
// If there is already an instance, activate the window in the existing instace and quit this one
if (app.makeSingleInstance((commandLine, workingDirectory) => {
// Someone tried to run a second instance, we should focus our window.
if (mainWindow) {
if (mainWindow.isMinimized()) mainWindow.restore();
else mainWindow.show();
}
})) {
app.quit()
}
function shouldShowTrayIcon() {
if (process.platform === 'win32') {
return true;

View File

@@ -61,4 +61,21 @@ describe('application', function() {
config.version.should.equal(settings.version);
});
});
it('should be stopped when the app instance already exists', function(done) {
this.app.start().then(() => {
const secondApp = env.getSpectronApp();
secondApp.start().then(() => {
clearTimeout(timer);
return secondApp.stop();
}).then(() => {
done(new Error('Second app instance exists'));
});
// In the correct case, 'start().then' is not called.
// So need to use setTimeout in order to finish this test.
const timer = setTimeout(() => {
done();
}, 3000);
});
});
});