diff --git a/electron/src/electron-main.js b/electron/src/electron-main.js index 2ca0b9d3..788d4602 100644 --- a/electron/src/electron-main.js +++ b/electron/src/electron-main.js @@ -159,10 +159,14 @@ electron.app.on('ready', () => { mainWindow = new electron.BrowserWindow({ icon: `${__dirname}/../img/riot.ico`, width: 1024, height: 768, + show: false, }); mainWindow.loadURL(`file://${__dirname}/../../webapp/index.html`); electron.Menu.setApplicationMenu(VectorMenu); + mainWindow.once('ready-to-show', () => { + mainWindow.show(); + }); mainWindow.on('closed', () => { mainWindow = null; }); @@ -198,3 +202,9 @@ electron.app.on('activate', () => { electron.app.on('before-quit', () => { appQuitting = true; }); + +// Set the App User Model ID to match what the squirrel +// installer uses for the shortcut icon. +// This makes notifications work on windows 8.1 (and is +// a noop on other platforms). +electron.app.setAppUserModelId('com.squirrel.riot-web.Riot'); diff --git a/src/vector/platform/ElectronPlatform.js b/src/vector/platform/ElectronPlatform.js index 3894896a..d6f4013a 100644 --- a/src/vector/platform/ElectronPlatform.js +++ b/src/vector/platform/ElectronPlatform.js @@ -79,7 +79,7 @@ export default class ElectronPlatform extends VectorBasePlatform { return true; } - displayNotification(title: string, msg: string, avatarUrl: string): Notification { + displayNotification(title: string, msg: string, avatarUrl: string, room: Object): Notification { // Notifications in Electron use the HTML5 notification API const notification = new global.Notification( title, @@ -97,6 +97,7 @@ export default class ElectronPlatform extends VectorBasePlatform { room_id: room.roomId }); global.focus(); + electron.remote.getCurrentWindow().restore(); }; return notification; diff --git a/src/vector/platform/WebPlatform.js b/src/vector/platform/WebPlatform.js index 9998f7c7..c4ed4d55 100644 --- a/src/vector/platform/WebPlatform.js +++ b/src/vector/platform/WebPlatform.js @@ -103,7 +103,7 @@ export default class WebPlatform extends VectorBasePlatform { return defer.promise; } - displayNotification(title: string, msg: string, avatarUrl: string) { + displayNotification(title: string, msg: string, avatarUrl: string, room: Object) { const notification = new global.Notification( title, { @@ -120,6 +120,7 @@ export default class WebPlatform extends VectorBasePlatform { room_id: room.roomId }); global.focus(); + notification.close(); }; // Chrome only dismisses notifications after 20s, which