mattermost-desktop/src/index.js

113 lines
2.6 KiB
JavaScript

'use strict';
const electron = require('electron');
const remote = electron.remote;
const osLocale = require('os-locale');
const fs = require('fs');
var url = require('url');
var contextMenu = require('./menus/context');
var webView = document.getElementById('mainWebview');
try {
var configFile = electron.remote.app.getPath('userData') + '/config.json';
var config = require(configFile);
if (config.url) {
webView.setAttribute('src', config.url);
}
else {
throw 'URL is not configured';
}
}
catch (e) {
window.location.href = './settings.html';
}
var menu = contextMenu.createDefault();
window.addEventListener('contextmenu', function(e) {
menu.popup(remote.getCurrentWindow());
}, false);
webView.addEventListener('page-title-set', function(e) {
document.title = e.title;
});
// Open external link in default browser.
webView.addEventListener('new-window', function(e) {
var currentURL = url.parse(webView.getURL());
var destURL = url.parse(e.url);
// Open in browserWindow. for exmaple, attached files.
if (currentURL.host === destURL.host) {
window.open(e.url, 'Mattermost');
}
else {
require('shell').openExternal(e.url);
}
});
webView.addEventListener("dom-ready", function() {
// webView.openDevTools();
// Use 'Meiryo UI' and 'MS Gothic' to prevent CJK fonts on Windows(JP).
if (process.platform === 'win32') {
var applyCssFile = function(cssFile) {
fs.readFile(cssFile, 'utf8', function(err, data) {
if (err) {
console.log(err);
return;
}
webView.insertCSS(data);
});
};
osLocale(function(err, locale) {
if (err) {
console.log(err);
return;
}
if (locale === 'ja_JP') {
applyCssFile(__dirname + '/css/jp_fonts.css');
}
});
}
});
// Count unread channels.
var timer = setInterval(function() {
webView.send('retrieveUnreadCount');
}, 1000);
var showUnreadBadge = function(unreadCount) {
switch (process.platform) {
case 'win32':
var window = remote.getCurrentWindow();
if (unreadCount > 0) {
window.setOverlayIcon(__dirname + '/resources/badge.png', 'You have unread channels.');
}
else {
window.setOverlayIcon(null, '');
}
break;
case 'darwin':
if (unreadCount > 0) {
remote.app.dock.setBadge(unreadCount.toString());
}
else {
remote.app.dock.setBadge('');
}
break;
default:
}
}
webView.addEventListener('ipc-message', function(event) {
switch (event.channel) {
case 'retrieveUnreadCount':
var unreadCount = event.args[0];
showUnreadBadge(unreadCount);
break;
}
});