From 838ae01a924c52222c77f8f5f29b7eb81203b802 Mon Sep 17 00:00:00 2001 From: Bryan Roe Date: Fri, 12 Mar 2021 13:04:30 -0800 Subject: [PATCH] Toaster-1 change --- microscript/ILibDuktape_Polyfills.c | 2 +- modules/promise.js | 74 ++++++++++++++--------------- modules/toaster.js | 61 +++++++++++++++--------- 3 files changed, 74 insertions(+), 63 deletions(-) diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index 0def222..e57f5e3 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -2288,7 +2288,7 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) duk_peval_string_noresult(ctx, "addCompressedModule('clipboard', Buffer.from('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', 'base64'));"); // Promise: This is very important, as it is used everywhere. Refer to /modules/promise.js to see a human readable version of promise.js - duk_peval_string_noresult(ctx, "addCompressedModule('promise', Buffer.from('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', 'base64'));"); + duk_peval_string_noresult(ctx, "addCompressedModule('promise', Buffer.from('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', 'base64'));"); // util-agentlog, used to parse agent error logs. Refer to modules/util-agentlog.js duk_peval_string_noresult(ctx, "addCompressedModule('util-agentlog', Buffer.from('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', 'base64'));"); diff --git a/modules/promise.js b/modules/promise.js index 30a3358..73a60a2 100644 --- a/modules/promise.js +++ b/modules/promise.js @@ -59,7 +59,7 @@ function Promise(promiseFunc) { this._ObjectID = 'promise'; this.promise = this; - this._internal = { _ObjectID: 'promise.internal', promise: this, func: promiseFunc, completed: false, errors: false, completedArgs: [], internalCount: 0, _up: null }; + this._internal = { _ObjectID: 'promise.internal', promise: this, completed: false, errors: false, completedArgs: [], internalCount: 0, _up: null }; require('events').EventEmitter.call(this._internal); Object.defineProperty(this, "parentPromise", { @@ -132,52 +132,53 @@ function Promise(promiseFunc) eventCallback.apply(this, []); } }).internal); - this._internal.resolver = (function _resolver() + this._internal.resolver = function _resolver() { - if (_resolver._self.completed) { return; } - _resolver._self.errors = false; - _resolver._self.completed = true; - _resolver._self.completedArgs = []; + if (this.completed) { return; } + this.errors = false; + this.completed = true; + this.completedArgs = []; var args = ['resolved']; if (this.emit_returnValue && this.emit_returnValue('resolved') != null) { - _resolver._self.completedArgs.push(this.emit_returnValue('resolved')); + this.completedArgs.push(this.emit_returnValue('resolved')); args.push(this.emit_returnValue('resolved')); } else { for (var a in arguments) { - _resolver._self.completedArgs.push(arguments[a]); + this.completedArgs.push(arguments[a]); args.push(arguments[a]); } } if (args.length == 2 && args[1]!=null && typeof(args[1]) == 'object' && args[1]._ObjectID == 'promise') { - var pr = getRootPromise(_resolver._self.promise); - args[1]._XSLF = _resolver._self; + var pr = getRootPromise(this.promise); + args[1]._XSLF = this; args[1].then(return_resolved, return_rejected); } else { - _resolver._self.emit.apply(_resolver._self, args); - _resolver._self.emit('settled'); + this.emit.apply(this, args); + this.emit('settled'); } - }).internal; - this._internal.rejector = (function _rejector() + }; + + this._internal.rejector = function _rejector() { - if (_rejector._self.completed) { return; } - _rejector._self.errors = true; - _rejector._self.completed = true; - _rejector._self.completedArgs = []; + if (this.completed) { return; } + this.errors = true; + this.completed = true; + this.completedArgs = []; var args = ['rejected']; for (var a in arguments) { - _rejector._self.completedArgs.push(arguments[a]); + this.completedArgs.push(arguments[a]); args.push(arguments[a]); } - var r = getRootPromise(_rejector._self.promise); + var r = getRootPromise(this.promise); if ((r._internal.external == null || r._internal.external == false) && r._internal.uncaught == null) { r._internal.uncaught = setImmediate(function (a) @@ -186,10 +187,9 @@ function Promise(promiseFunc) }, arguments[0]); } - _rejector._self.emit.apply(_rejector._self, args); - _rejector._self.emit('settled'); - }).internal; - this._internal.rejector.internal = true; + this.emit.apply(this, args); + this.emit('settled'); + }; this.catch = function(func) { @@ -223,38 +223,35 @@ function Promise(promiseFunc) if(rv._ObjectID == 'promise') { rv.parentPromise = this; - rv._internal.once('resolved', retVal._internal.resolver); - rv._internal.once('rejected', retVal._internal.rejector); + rv._internal.once('resolved', retVal._internal.resolver.bind(retVal._internal).internal); + rv._internal.once('rejected', retVal._internal.rejector.bind(retVal._internal).internal); } else { - retVal._internal.resolver(rv); + retVal._internal.resolver.call(retVal._internal, rv); } } else { - this._internal.once('resolved', retVal._internal.resolver); - this._internal.once('rejected', retVal._internal.rejector); + this._internal.once('resolved', retVal._internal.resolver.bind(retVal._internal).internal); + this._internal.once('rejected', retVal._internal.rejector.bind(retVal._internal).internal); } } else { - this._internal.once('resolved', retVal._internal.resolver); - this._internal.once('rejected', retVal._internal.rejector); + this._internal.once('resolved', retVal._internal.resolver.bind(retVal._internal).internal); + this._internal.once('rejected', retVal._internal.rejector.bind(retVal._internal).internal); } this.__childPromise = retVal; return(retVal); }; - this._internal.resolver._self = this._internal; - this._internal.rejector._self = this._internal;; - try { - promiseFunc.call(this, this._internal.resolver, this._internal.rejector); + promiseFunc.call(this, this._internal.resolver.bind(this._internal), this._internal.rejector.bind(this._internal)); } - catch(e) + catch (e) { this._internal.errors = true; this._internal.completed = true; @@ -281,8 +278,6 @@ function Promise(promiseFunc) this._internal.once('settled', (function () { - delete this.resolver._self; - delete this.rejector._self; delete this.promise._up; delete this.promise.__childPromise; delete this.promise.promise; @@ -355,4 +350,5 @@ Promise.all = function all(promiseList) module.exports = Promise; module.exports.event_switcher = event_switcher; -module.exports.event_forwarder = event_forwarder; \ No newline at end of file +module.exports.event_forwarder = event_forwarder; +module.exports.defaultInit = function defaultInit(res, rej) { this.resolve = res; this.reject = rej; } \ No newline at end of file diff --git a/modules/toaster.js b/modules/toaster.js index 3c6ff67..18daf43 100644 --- a/modules/toaster.js +++ b/modules/toaster.js @@ -38,12 +38,25 @@ if (process.platform == 'linux' || process.platform == 'darwin' || process.platf } } +function stdouthelper(c) +{ + if (c.toString().includes('')) { this.stdin.write('exit\n'); } +} +function exithelper() +{ + if (this.timeout != null) { clearTimeout(this.timeout); } + this.toast.resolve('DISMISSED'); + + this.toast.child = null; + this.toast = null; +} function Toaster() { this._ObjectID = 'toaster'; this.Toast = function Toast(title, caption, tsid) { - var retVal = new promise(function (res, rej) { this._res = res; this._rej = rej; }); + //var retVal = new promise(function (res, rej) { this._res = res; this._rej = rej; }); + var retVal = new promise(promise.defaultInit); if (title == 'MeshCentral') { try { title = require('MeshAgent').displayName; } catch (x) { } } retVal.title = title; @@ -70,7 +83,7 @@ function Toaster() { if(tsid != null && cid != 0) { - retVal._rej('Insufficient permission to display toast as uid: ' + tsid); + retVal.reject('Insufficient permission to display toast as uid: ' + tsid); return (retVal); } retVal.options.type = require('child_process').SpawnTypes.USER; @@ -78,7 +91,7 @@ function Toaster() } catch (ee) { - retVal._rej('Cannot display user notification when a user is not logged in'); + retVal.reject('Cannot display user notification when a user is not logged in'); return (retVal); } @@ -87,24 +100,26 @@ function Toaster() retVal.child.toast = retVal; retVal.child.stdout.stdin = retVal.child.stdin; retVal.child.stderr.stdin = retVal.child.stdin; - retVal.child.stdout.on('data', function (c) { if (c.toString().includes('')) { this.stdin.write('exit\n'); } }); - retVal.child.stderr.once('data', function (c) { this.stdin.write('$objBalloon.dispose();exit\n'); }); + //retVal.child.stdout.on('data', function (c) { if (c.toString().includes('')) { this.stdin.write('exit\n'); } }); + //retVal.child.stderr.once('data', function (c) { this.stdin.write('$objBalloon.dispose();exit\n'); }); + retVal.child.stdout.on('data', stdouthelper); retVal.child.stdin.write('[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")\r\n'); retVal.child.stdin.write('$objBalloon = New-Object System.Windows.Forms.NotifyIcon\r\n'); retVal.child.stdin.write('$objBalloon.Icon = [System.Drawing.SystemIcons]::Information\r\n'); retVal.child.stdin.write('$objBalloon.Visible = $True\r\n'); retVal.child.stdin.write('Register-ObjectEvent -InputObject $objBalloon -EventName BalloonTipClosed -Action { $objBalloon.dispose();Write-Host "<`DISMISSED`>" }') retVal.child.stdin.write('$objBalloon.ShowBalloonTip(10000, $env:_title, $env:_caption, 0)\r\n'); - retVal.child.timeout = setTimeout(function (c) - { - c.timeout = null; - c.stdin.write('$objBalloon.dispose();exit\n'); - }, 10000, retVal.child); - retVal.child.on('exit', function () - { - if (this.timeout != null) { clearTimeout(this.timeout); } - this.toast._res('DISMISSED'); - }); + //retVal.child.timeout = setTimeout(function (c) + //{ + // c.timeout = null; + // c.stdin.write('$objBalloon.dispose();exit\n'); + //}, 10000, retVal.child); + //retVal.child.on('exit', function () + //{ + // if (this.timeout != null) { clearTimeout(this.timeout); } + // this.toast._res('DISMISSED'); + //}); + retVal.child.on('exit', exithelper); return (retVal); } @@ -120,7 +135,7 @@ function Toaster() } catch (xxe) { - retVal._rej(xxe); + retVal.reject(xxe); return (retVal); } @@ -171,7 +186,7 @@ function Toaster() // Timeout Supported retVal._mb = require('message-box').create(retVal.title, retVal.caption, 5, 1); retVal._mb.toast = retVal; - retVal._mb.then(function () { this.toast._res('DISMISSED'); }, function (e) { this.toast._res('DISMISSED'); }); + retVal._mb.then(function () { this.toast.resolve('DISMISSED'); }, function (e) { this.toast.resolve('DISMISSED'); }); return (retVal); } else @@ -196,7 +211,7 @@ function Toaster() retVal.child.on('exit', function (code) { if (this.timeout) { clearTimeout(this.timeout); } - this.parent._res('DISMISSED'); + this.parent.resolve('DISMISSED'); }); } else @@ -208,7 +223,7 @@ function Toaster() var xdg = require('user-sessions').findEnv(retVal.consoleUid, 'XDG_RUNTIME_DIR'); if (xdg == null) { xdg = ''; } if (!retVal.xinfo || !retVal.xinfo.display || !retVal.xinfo.xauthority) { - retVal._rej('Internal Error'); + retVal.reject('Internal Error'); return (retVal); } @@ -217,7 +232,7 @@ function Toaster() retVal._notify.parent = retVal; retVal._notify.stdout.on('data', function (chunk) { }); retVal._notify.stderr.on('data', function (chunk) { }); - retVal._notify.on('exit', function (code) { this.parent._res('DISMISSED'); }); + retVal._notify.on('exit', function (code) { this.parent.resolve('DISMISSED'); }); } else { @@ -242,11 +257,11 @@ function Toaster() { retVal._mb = require('message-box').create(title, caption, 5, 'OK'); retVal._mb.ret = retVal; - retVal._mb.then(function () { this.ret._res('DISMISSED'); }, function () { this.ret._res('DISMISSED'); }); + retVal._mb.then(function () { this.ret.resolve('DISMISSED'); }, function () { this.ret.resolve('DISMISSED'); }); } else { - retVal._rej('Zenity/KDialog/xmessage not found'); + retVal.reject('Zenity/KDialog/xmessage not found'); } } } @@ -255,7 +270,7 @@ function Toaster() case 'darwin': retVal._toast = require('message-box').notify(title, caption); retVal._toast.parent = retVal; - retVal._toast.then(function (v) { this.parent._res(v); }, function (e) { this.parent._rej(e); }); + retVal._toast.then(function (v) { this.parent.resolve(v); }, function (e) { this.parent.reject(e); }); break; }