2015-10-07 06:55:00 -07:00
|
|
|
'use strict';
|
|
|
|
|
2015-10-08 06:15:31 -07:00
|
|
|
var remote = require('remote');
|
2015-10-08 07:19:58 -07:00
|
|
|
var url = require('url');
|
2015-10-07 06:55:00 -07:00
|
|
|
|
|
|
|
var webView = document.getElementById('mainWebview');
|
|
|
|
|
2015-10-23 09:44:10 -07:00
|
|
|
try {
|
2015-10-09 06:50:48 -07:00
|
|
|
var configFile = remote.require('app').getPath('userData') + '/config.json';
|
|
|
|
var config = require(configFile);
|
2015-10-23 09:44:10 -07:00
|
|
|
if (config.url) {
|
2015-10-09 06:50:48 -07:00
|
|
|
webView.setAttribute('src', config.url);
|
|
|
|
}
|
2015-10-23 09:44:10 -07:00
|
|
|
else {
|
2015-10-09 06:50:48 -07:00
|
|
|
throw 'URL is not configured';
|
|
|
|
}
|
2015-10-23 09:44:10 -07:00
|
|
|
}
|
|
|
|
catch (e) {
|
2015-10-09 06:50:48 -07:00
|
|
|
window.location.href = './settings.html';
|
|
|
|
}
|
|
|
|
|
2015-10-23 09:44:10 -07:00
|
|
|
webView.addEventListener('page-title-set', function(e) {
|
2015-10-08 07:27:37 -07:00
|
|
|
document.title = e.title;
|
|
|
|
});
|
|
|
|
|
2015-10-08 07:19:58 -07:00
|
|
|
// Open external link in default browser.
|
2015-10-07 06:55:00 -07:00
|
|
|
webView.addEventListener('new-window', function(e) {
|
2015-10-08 07:19:58 -07:00
|
|
|
var currentUrl = url.parse(webView.getUrl());
|
|
|
|
var destUrl = url.parse(e.url);
|
|
|
|
// Open in browserWindow. for exmaple, attached files.
|
2015-10-23 09:44:10 -07:00
|
|
|
if (currentUrl.host === destUrl.host) {
|
2015-10-08 07:27:37 -07:00
|
|
|
window.open(e.url, 'Mattermost');
|
2015-10-08 07:19:58 -07:00
|
|
|
}
|
2015-10-23 09:44:10 -07:00
|
|
|
else {
|
2015-10-08 07:19:58 -07:00
|
|
|
require('shell').openExternal(e.url);
|
|
|
|
}
|
2015-10-07 06:55:00 -07:00
|
|
|
});
|
|
|
|
|
|
|
|
// Count unread channels.
|
|
|
|
var timer = setInterval(function() {
|
|
|
|
webView.send('retrieveUnreadCount');
|
|
|
|
}, 1000);
|
|
|
|
|
2015-10-23 09:44:10 -07:00
|
|
|
var showUnreadBadge = function(unreadCount) {
|
2015-10-08 06:15:31 -07:00
|
|
|
switch (process.platform) {
|
|
|
|
case 'win32':
|
|
|
|
var window = remote.getCurrentWindow();
|
2015-10-23 09:44:10 -07:00
|
|
|
if (unreadCount > 0) {
|
2015-10-08 06:15:31 -07:00
|
|
|
window.setOverlayIcon(__dirname + '/badge.png', 'You have unread channels.');
|
|
|
|
}
|
2015-10-23 09:44:10 -07:00
|
|
|
else {
|
2015-10-08 06:15:31 -07:00
|
|
|
window.setOverlayIcon(null, '');
|
|
|
|
}
|
|
|
|
break;
|
2015-10-10 01:24:40 -07:00
|
|
|
case 'darwin':
|
|
|
|
var app = remote.require('app');
|
2015-10-23 09:44:10 -07:00
|
|
|
if (unreadCount > 0) {
|
2015-10-10 01:24:40 -07:00
|
|
|
app.dock.setBadge(unreadCount.toString());
|
|
|
|
}
|
2015-10-23 09:44:10 -07:00
|
|
|
else {
|
2015-10-10 01:24:40 -07:00
|
|
|
app.dock.setBadge('');
|
|
|
|
}
|
|
|
|
break;
|
2015-10-08 06:15:31 -07:00
|
|
|
default:
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-10-23 09:44:10 -07:00
|
|
|
webView.addEventListener('ipc-message', function(event) {
|
2015-10-07 06:55:00 -07:00
|
|
|
switch (event.channel) {
|
|
|
|
case 'retrieveUnreadCount':
|
|
|
|
var unreadCount = event.args[0];
|
2015-10-08 06:15:31 -07:00
|
|
|
showUnreadBadge(unreadCount);
|
2015-10-07 06:55:00 -07:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
});
|