2016-01-29 14:04:41 +00:00
|
|
|
import wurl from 'wurl';
|
|
|
|
import os from 'os';
|
2016-02-25 06:56:32 +00:00
|
|
|
import fs from 'fs';
|
|
|
|
import path from 'path';
|
|
|
|
|
|
|
|
const INJECT_CSS_PATH = path.join(__dirname, '..', 'inject/inject.css');
|
2017-12-19 13:42:06 +00:00
|
|
|
const log = require('loglevel');
|
2016-01-23 02:09:47 +00:00
|
|
|
|
|
|
|
function isOSX() {
|
2017-04-29 14:52:12 +00:00
|
|
|
return os.platform() === 'darwin';
|
2016-01-23 02:09:47 +00:00
|
|
|
}
|
|
|
|
|
2016-02-23 08:46:14 +00:00
|
|
|
function isLinux() {
|
2017-04-29 14:52:12 +00:00
|
|
|
return os.platform() === 'linux';
|
2016-02-23 08:46:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function isWindows() {
|
2017-04-29 14:52:12 +00:00
|
|
|
return os.platform() === 'win32';
|
2016-02-23 08:46:14 +00:00
|
|
|
}
|
|
|
|
|
2016-08-06 18:03:53 +00:00
|
|
|
function linkIsInternal(currentUrl, newUrl, internalUrlRegex) {
|
2018-05-27 21:18:59 +00:00
|
|
|
if (newUrl === 'about:blank') {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2017-04-29 14:52:12 +00:00
|
|
|
if (internalUrlRegex) {
|
|
|
|
const regex = RegExp(internalUrlRegex);
|
|
|
|
return regex.test(newUrl);
|
|
|
|
}
|
2016-08-06 18:03:53 +00:00
|
|
|
|
2017-04-29 14:52:12 +00:00
|
|
|
const currentDomain = wurl('domain', currentUrl);
|
|
|
|
const newDomain = wurl('domain', newUrl);
|
|
|
|
return currentDomain === newDomain;
|
2016-01-23 02:09:47 +00:00
|
|
|
}
|
|
|
|
|
2016-06-16 07:28:36 +00:00
|
|
|
function shouldInjectCss() {
|
2017-04-29 14:52:12 +00:00
|
|
|
try {
|
|
|
|
fs.accessSync(INJECT_CSS_PATH, fs.F_OK);
|
|
|
|
return true;
|
|
|
|
} catch (e) {
|
|
|
|
return false;
|
|
|
|
}
|
2016-06-16 07:28:36 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function getCssToInject() {
|
2017-04-29 14:52:12 +00:00
|
|
|
return fs.readFileSync(INJECT_CSS_PATH).toString();
|
2016-02-25 06:56:32 +00:00
|
|
|
}
|
|
|
|
|
2016-06-16 07:28:36 +00:00
|
|
|
/**
|
|
|
|
* Helper method to print debug messages from the main process in the browser window
|
|
|
|
* @param {BrowserWindow} browserWindow
|
|
|
|
* @param message
|
|
|
|
*/
|
|
|
|
function debugLog(browserWindow, message) {
|
2017-04-29 14:52:12 +00:00
|
|
|
// need the timeout as it takes time for the preload javascript to be loaded in the window
|
|
|
|
setTimeout(() => {
|
|
|
|
browserWindow.webContents.send('debug', message);
|
|
|
|
}, 3000);
|
2017-12-19 13:42:06 +00:00
|
|
|
log.info(message);
|
2016-06-16 07:28:36 +00:00
|
|
|
}
|
|
|
|
|
2017-11-26 04:27:19 +00:00
|
|
|
function getAppIcon() {
|
|
|
|
return path.join(__dirname, '../', `/icon.${isWindows() ? 'ico' : 'png'}`);
|
|
|
|
}
|
|
|
|
|
2018-05-01 23:24:35 +00:00
|
|
|
function nativeTabsSupported() {
|
|
|
|
return isOSX();
|
|
|
|
}
|
|
|
|
|
2016-01-29 14:04:41 +00:00
|
|
|
export default {
|
2017-04-29 14:52:12 +00:00
|
|
|
isOSX,
|
|
|
|
isLinux,
|
|
|
|
isWindows,
|
|
|
|
linkIsInternal,
|
|
|
|
getCssToInject,
|
|
|
|
debugLog,
|
|
|
|
shouldInjectCss,
|
2017-11-26 04:27:19 +00:00
|
|
|
getAppIcon,
|
2018-05-01 23:24:35 +00:00
|
|
|
nativeTabsSupported,
|
2016-01-23 02:09:47 +00:00
|
|
|
};
|