mirror of
https://github.com/keeweb/keeweb.git
synced 2024-06-21 07:06:39 +02:00
auto-type helper
This commit is contained in:
parent
db17018f9d
commit
c21ecbc785
|
@ -4,6 +4,9 @@ var Launcher = require('../../comp/launcher');
|
|||
|
||||
var AutoTypeEmitterImplFactory = {
|
||||
create: function() {
|
||||
if (!Launcher) {
|
||||
return null;
|
||||
}
|
||||
var AutoTypeEmitterImpl = require('./emitter-impl/auto-type-emitter-impl-' + Launcher.platform());
|
||||
return new AutoTypeEmitterImpl();
|
||||
}
|
||||
|
|
15
app/scripts/comp/auto-type/auto-type-helper-factory.js
Normal file
15
app/scripts/comp/auto-type/auto-type-helper-factory.js
Normal file
|
@ -0,0 +1,15 @@
|
|||
'use strict';
|
||||
|
||||
var Launcher = require('../../comp/launcher');
|
||||
|
||||
var AutoTypeHelperFactory = {
|
||||
create: function() {
|
||||
if (!Launcher) {
|
||||
return null;
|
||||
}
|
||||
var AutoTypeHelperImpl = require('./helper/auto-type-helper-' + Launcher.platform());
|
||||
return new AutoTypeHelperImpl();
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = AutoTypeHelperFactory;
|
42
app/scripts/comp/auto-type/helper/auto-type-helper-darwin.js
Normal file
42
app/scripts/comp/auto-type/helper/auto-type-helper-darwin.js
Normal file
|
@ -0,0 +1,42 @@
|
|||
'use strict';
|
||||
|
||||
var Launcher = require('../../launcher');
|
||||
|
||||
var spawn = Launcher.req('child_process').spawn;
|
||||
|
||||
var AutoTypeHelper = function() {
|
||||
};
|
||||
|
||||
AutoTypeHelper.prototype.getActiveWindowTitle = function(callback) {
|
||||
var script = 'global frontApp, frontAppName, windowTitle\n' +
|
||||
'set windowTitle to ""\n' +
|
||||
'tell application "System Events"\n' +
|
||||
' set frontApp to first application process whose frontmost is true\n' +
|
||||
' set frontAppName to name of frontApp\n' +
|
||||
' tell process frontAppName\n' +
|
||||
' tell (1st window whose value of attribute "AXMain" is true)\n' +
|
||||
' set windowTitle to value of attribute "AXTitle"\n' +
|
||||
' end tell\n' +
|
||||
' end tell\n' +
|
||||
'end tell\n' +
|
||||
'return windowTitle';
|
||||
|
||||
var ps = spawn('osascript', ['-e', script]);
|
||||
var stderr = '';
|
||||
var stdout = '';
|
||||
ps.stdout.on('data', function(data) {
|
||||
stdout += data.toString();
|
||||
});
|
||||
ps.stderr.on('data', function(data) {
|
||||
stderr += data.toString();
|
||||
});
|
||||
ps.on('close', function(code) {
|
||||
if (code) {
|
||||
callback('Exit code ' + code + ': ' + stderr + (stdout ? '\nout: ' + stdout : ''));
|
||||
} else {
|
||||
callback(stdout);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
module.exports = AutoTypeHelper;
|
|
@ -1,13 +1,17 @@
|
|||
'use strict';
|
||||
|
||||
var AutoTypeParser = require('./auto-type-parser');
|
||||
var Logger = require('../../util/logger');
|
||||
var AutoTypeParser = require('./auto-type-parser'),
|
||||
AutoTypeHelperFactory = require('./auto-type-helper-factory'),
|
||||
Launcher = require('../launcher'),
|
||||
Logger = require('../../util/logger'),
|
||||
Timeouts = require('../../const/timeouts');
|
||||
|
||||
var logger = new Logger('auto-type');
|
||||
|
||||
var clearTextAutoTypeLog = localStorage.autoTypeDebug;
|
||||
|
||||
var AutoType = {
|
||||
helper: AutoTypeHelperFactory.create(),
|
||||
|
||||
run: function(entry, sequence, obfuscate, callback) {
|
||||
logger.debug('Start', sequence);
|
||||
var that = this;
|
||||
|
@ -62,6 +66,27 @@ var AutoType = {
|
|||
return mod + value;
|
||||
}
|
||||
return mod + op.type + ':' + op.value;
|
||||
},
|
||||
|
||||
hideWindow: function(callback) {
|
||||
logger.debug('Hide window');
|
||||
if (Launcher.hideWindowIfActive()) {
|
||||
setTimeout(callback, Timeouts.AutoTypeAfterHide);
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
},
|
||||
|
||||
getActiveWindowTitle: function(callback) {
|
||||
logger.debug('Get window title');
|
||||
return this.helper.getActiveWindowTitle(function(err, title) {
|
||||
if (err) {
|
||||
logger.error('Error get window title', err);
|
||||
} else {
|
||||
logger.debug('Window title: ', title);
|
||||
}
|
||||
return callback(err, title);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -114,6 +114,20 @@ if (window.process && window.process.versions && window.process.versions.electro
|
|||
openWindow: function(opts) {
|
||||
return this.remReq('app').openWindow(opts);
|
||||
},
|
||||
hideWindowIfActive: function() {
|
||||
var app = this.remReq('app');
|
||||
var win = app.getMainWindow();
|
||||
var visible = win.isVisible(), focused = win.isFocused();
|
||||
if (!visible || !focused) {
|
||||
return false;
|
||||
}
|
||||
if (process.platform === 'darwin') {
|
||||
app.hide();
|
||||
} else {
|
||||
win.minimize();
|
||||
}
|
||||
return true;
|
||||
},
|
||||
platform: function() {
|
||||
return process.platform;
|
||||
}
|
||||
|
|
|
@ -7,7 +7,8 @@ var Timeouts = {
|
|||
FileChangeSync: 3000,
|
||||
BeforeAutoLock: 300,
|
||||
CheckWindowClosed: 300,
|
||||
OtpFadeDuration: 10000
|
||||
OtpFadeDuration: 10000,
|
||||
AutoTypeAfterHide: 100
|
||||
};
|
||||
|
||||
module.exports = Timeouts;
|
||||
|
|
Loading…
Reference in New Issue
Block a user