From 53972fdae9a6dfad999ac576553ddb35dfe6db55 Mon Sep 17 00:00:00 2001 From: Maigo Erit Date: Fri, 27 May 2016 23:34:19 +0300 Subject: [PATCH] changes --- app/app.js | 9 +++++++-- app/assistive-access-el-capitan.osa | 2 ++ app/assistive-access-osx.osa | 2 ++ app/background.service.js | 21 +++++++++++++++++++++ app/package.json | 4 ++-- app/plugin-manager.js | 26 +++++++++++++++++--------- package.json | 2 +- 7 files changed, 52 insertions(+), 14 deletions(-) create mode 100755 app/assistive-access-el-capitan.osa create mode 100755 app/assistive-access-osx.osa diff --git a/app/app.js b/app/app.js index de9f7e31..02a19f7e 100755 --- a/app/app.js +++ b/app/app.js @@ -5,6 +5,7 @@ var mb = require('./tray') var pluginMgr = require('./plugin-manager') var backgroundService = require('./background.service') var ipcMain = require('electron').ipcMain; +var config = require('./config') //require('./lib/crash-handler') var AutoLaunch = require('auto-launch'); @@ -17,6 +18,7 @@ appLauncher.isEnabled().then(function (enabled) { if (enabled) { return; } + console.log('Enabling app launcher'); return appLauncher.enable() }).then(function (err) { @@ -76,16 +78,19 @@ app.on('activate-with-no-open-windows', function () { /* Single Instance Check */ var iShouldQuit = app.makeSingleInstance(function (commandLine, workingDirectory) { - if (pluginMgr.windows['main-window']) { + if (pluginMgr.windows && pluginMgr.windows['main-window']) { if (pluginMgr.windows['main-window'].isMinimized()) { pluginMgr.windows['main-window'].restore(); } pluginMgr.windows['main-window'].show(); pluginMgr.windows['main-window'].focus(); + console.log('Focusing main window'); } return true; }); -if (iShouldQuit) { +if (iShouldQuit && !config.isDev) { + console.log('Quiting instance.'); + pluginMgr.removeAll(); app.quit(); return; } diff --git a/app/assistive-access-el-capitan.osa b/app/assistive-access-el-capitan.osa new file mode 100755 index 00000000..7da31c8a --- /dev/null +++ b/app/assistive-access-el-capitan.osa @@ -0,0 +1,2 @@ +set sh to "sqlite3 \"/Library/Application Support/com.apple.TCC/TCC.db\" \"INSERT or REPLACE INTO access VALUES('kTCCServiceAccessibility','ee.trimatech.BackerTimetracker',0,1,1,NULL,NULL);\"" +do shell script sh with administrator privileges diff --git a/app/assistive-access-osx.osa b/app/assistive-access-osx.osa new file mode 100755 index 00000000..32bd5094 --- /dev/null +++ b/app/assistive-access-osx.osa @@ -0,0 +1,2 @@ +set sh to "sqlite3 \"/Library/Application Support/com.apple.TCC/TCC.db\" \"INSERT or REPLACE INTO access VALUES('kTCCServiceAccessibility','ee.trimatech.BackerTimetracker',0,1,1,NULL);\"" +do shell script sh with administrator privileges diff --git a/app/background.service.js b/app/background.service.js index 57d9ce4f..294d8eab 100755 --- a/app/background.service.js +++ b/app/background.service.js @@ -2,6 +2,7 @@ var app = require('electron').app; +var compareVersion = require('compare-version'); var bunyan = require('bunyan'); var log; @@ -317,6 +318,8 @@ BackgroundService.onResume = function () { isSleeping = false; }; +var isOsxScriptRunned = false; + BackgroundService.saveForegroundWindowTitle = function () { //'darwin', 'freebsd', 'linux', 'sunos' or 'win32' @@ -344,6 +347,22 @@ BackgroundService.saveForegroundWindowTitle = function () { if (typeof active_a[0] !== "undefined") { active.app = active_a[0]; + // isElCapitanScriptRunned = true;//some applications doe not have app, check only when started + } + if (active.app) { + isOsxScriptRunned = true;//some applications doe not have app, check only when started + } + + if (process.platform === 'darwin' && isOsxScriptRunned === false) { + /*console.log('Running assistive-access-el-capitan.osa'); + var access_script = "osascript " + path.join(__dirname, "assistive-access-el-capitan.osa"); + if (compareVersion(require('os').release(), '10.11.0') === -1) { + access_script = "osascript " + path.join(__dirname, "assistive-access-osx.osa"); + } + isOsxScriptRunned = true; + exec(access_script, function (error, stdout, stderr) { + console.log('Assistive access: ', stdout, error, stderr); + });*/ } if (typeof active_a[1] !== "undefined") { @@ -394,6 +413,8 @@ BackgroundService.saveUserIdleTime = function () { script = "sh " + path.join(__dirname, "get-user-idle-time.mac.sh"); } else if (process.platform === 'win32') { script = 'powershell.exe "& ""' + path.join(__dirname, "get-user-idle-time.ps1") + '"""'; + + } else if (process.platform === 'linux') { script = "sh " + path.join(__dirname, "get-user-idle-time.linux.sh"); } diff --git a/app/package.json b/app/package.json index 278a30cf..90730efe 100644 --- a/app/package.json +++ b/app/package.json @@ -1,6 +1,6 @@ { "name": "backer-timetracker", - "version": "1.0.9", + "version": "1.0.12", "description": "Track your time by monitoring your active windows and idle time", "main": "app.js", "author": "Maigo Erit ", @@ -9,11 +9,11 @@ "type": "git", "url": "git@github.com:MayGo/backer-timetracker.git" }, - "dependencies": { "async": "^1.5.2", "auto-launch": "^2.0.1", "bunyan": "^1.7.1", + "compare-version": "^0.1.2", "js-data": "^2.9.0", "js-data-nedb": "^1.0.0", "lodash": "^4.5.0", diff --git a/app/plugin-manager.js b/app/plugin-manager.js index 7ca53e0a..f7835383 100755 --- a/app/plugin-manager.js +++ b/app/plugin-manager.js @@ -1,6 +1,5 @@ - var path = require('path') -var ipc = require("electron").ipcMain; +var ipc = require("electron").ipcMain; //var BrowserWindow = require("electron").browserWindow; const {BrowserWindow} = require('electron'); var _ = require('lodash') @@ -60,10 +59,13 @@ PluginManager.prototype.load = function (name, opt) { }); oWindow.on('close', function () { - console.log("Closing window"); - console.log(this.windows[name]); - this.windows[name] = null; - }.bind(this)) + if (this.windows) { + console.log("Closing window"); + console.log(this.windows[name]); + this.windows[name] = null; + } + + }.bind(this)); // open devtools if (config.isDev && opt.showDevtools !== false) @@ -101,7 +103,7 @@ PluginManager.prototype.hide = function (name) { */ PluginManager.prototype.toggle = function (name) { console.log(this.windows[name]); - if (this.windows[name] && this.windows[name].isVisible()) + if (this.windows[name] && this.windows[name].isVisible()) this.hide(name) else this.show(name) @@ -139,13 +141,19 @@ PluginManager.prototype._initEvents = function () { ipc.on('set-on-top', function (ev, name, flag) { self.setOnTop(name, flag) }) - -} +}; /** * Remove all windows objects */ PluginManager.prototype.removeAll = function () { + _.forIn(this.windows, function (win, k) { + if (win) { + console.log('Closing window...', win, k); + win.close(); + } + + }); this.windows = null } diff --git a/package.json b/package.json index 44d44776..9d88c032 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "backer-timetracker", - "version": "1.0.9", + "version": "1.0.12", "description": "Track your time by monitoring your active windows and idle time", "main": "app/app.js", "scripts": {