Initial sync up with master after Prettier
This commit is contained in:
@@ -2,31 +2,28 @@
|
||||
'use strict';
|
||||
|
||||
// ENiGMA½
|
||||
const Art = require('./art.js');
|
||||
const {
|
||||
getActiveConnections
|
||||
} = require('./client_connections.js');
|
||||
const ANSI = require('./ansi_term.js');
|
||||
const { pipeToAnsi } = require('./color_codes.js');
|
||||
const Art = require('./art.js');
|
||||
const { getActiveConnections } = require('./client_connections.js');
|
||||
const ANSI = require('./ansi_term.js');
|
||||
const { pipeToAnsi } = require('./color_codes.js');
|
||||
|
||||
// deps
|
||||
const _ = require('lodash');
|
||||
const _ = require('lodash');
|
||||
|
||||
module.exports = class UserInterruptQueue
|
||||
{
|
||||
module.exports = class UserInterruptQueue {
|
||||
constructor(client) {
|
||||
this.client = client;
|
||||
this.queue = [];
|
||||
this.client = client;
|
||||
this.queue = [];
|
||||
}
|
||||
|
||||
static queue(interruptItem, opts) {
|
||||
opts = opts || {};
|
||||
if(!opts.clients) {
|
||||
if (!opts.clients) {
|
||||
let omitNodes = [];
|
||||
if(Array.isArray(opts.omit)) {
|
||||
if (Array.isArray(opts.omit)) {
|
||||
omitNodes = opts.omit;
|
||||
} else if(opts.omit) {
|
||||
omitNodes = [ opts.omit ];
|
||||
} else if (opts.omit) {
|
||||
omitNodes = [opts.omit];
|
||||
}
|
||||
omitNodes = omitNodes.map(n => _.isNumber(n) ? n : n.node);
|
||||
const connOpts = {
|
||||
@@ -34,10 +31,10 @@ module.exports = class UserInterruptQueue
|
||||
visibleOnly: true,
|
||||
availOnly: true,
|
||||
};
|
||||
opts.clients = getActiveConnections(true).filter(ac => !omitNodes.includes(ac.node));
|
||||
opts.clients = getActiveConnections(connOpts).filter(ac => !omitNodes.includes(ac.node));
|
||||
}
|
||||
if(!Array.isArray(opts.clients)) {
|
||||
opts.clients = [ opts.clients ];
|
||||
if (!Array.isArray(opts.clients)) {
|
||||
opts.clients = [opts.clients];
|
||||
}
|
||||
opts.clients.forEach(c => {
|
||||
c.interruptQueue.queueItem(interruptItem);
|
||||
@@ -45,7 +42,7 @@ module.exports = class UserInterruptQueue
|
||||
}
|
||||
|
||||
queueItem(interruptItem) {
|
||||
if(!_.isString(interruptItem.contents) && !_.isString(interruptItem.text)) {
|
||||
if (!_.isString(interruptItem.contents) && !_.isString(interruptItem.text)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -53,14 +50,17 @@ module.exports = class UserInterruptQueue
|
||||
interruptItem.pause = _.get(interruptItem, 'pause', true);
|
||||
|
||||
try {
|
||||
this.client.currentMenuModule.attemptInterruptNow(interruptItem, (err, ateIt) => {
|
||||
if(err) {
|
||||
// :TODO: Log me
|
||||
} else if(true !== ateIt) {
|
||||
this.queue.push(interruptItem);
|
||||
this.client.currentMenuModule.attemptInterruptNow(
|
||||
interruptItem,
|
||||
(err, ateIt) => {
|
||||
if (err) {
|
||||
// :TODO: Log me
|
||||
} else if (true !== ateIt) {
|
||||
this.queue.push(interruptItem);
|
||||
}
|
||||
}
|
||||
});
|
||||
} catch(e) {
|
||||
);
|
||||
} catch (e) {
|
||||
this.queue.push(interruptItem);
|
||||
}
|
||||
}
|
||||
@@ -70,12 +70,12 @@ module.exports = class UserInterruptQueue
|
||||
}
|
||||
|
||||
displayNext(options, cb) {
|
||||
if(!cb && _.isFunction(options)) {
|
||||
if (!cb && _.isFunction(options)) {
|
||||
cb = options;
|
||||
options = {};
|
||||
}
|
||||
const interruptItem = this.queue.pop();
|
||||
if(!interruptItem) {
|
||||
if (!interruptItem) {
|
||||
return cb(null);
|
||||
}
|
||||
|
||||
@@ -84,15 +84,15 @@ module.exports = class UserInterruptQueue
|
||||
}
|
||||
|
||||
displayWithItem(interruptItem, cb) {
|
||||
if(interruptItem.cls) {
|
||||
if (interruptItem.cls) {
|
||||
this.client.term.rawWrite(ANSI.resetScreen());
|
||||
} else {
|
||||
this.client.term.rawWrite('\r\n\r\n');
|
||||
}
|
||||
|
||||
const maybePauseAndFinish = () => {
|
||||
if(interruptItem.pause) {
|
||||
this.client.currentMenuModule.pausePrompt( () => {
|
||||
if (interruptItem.pause) {
|
||||
this.client.currentMenuModule.pausePrompt(() => {
|
||||
return cb(null);
|
||||
});
|
||||
} else {
|
||||
@@ -100,18 +100,22 @@ module.exports = class UserInterruptQueue
|
||||
}
|
||||
};
|
||||
|
||||
if(interruptItem.contents) {
|
||||
if (interruptItem.contents) {
|
||||
Art.display(this.client, interruptItem.contents, err => {
|
||||
if(err) {
|
||||
if (err) {
|
||||
return cb(err);
|
||||
}
|
||||
//this.client.term.rawWrite('\r\n\r\n'); // :TODO: Prob optional based on contents vs text
|
||||
maybePauseAndFinish();
|
||||
});
|
||||
} else {
|
||||
this.client.term.write(pipeToAnsi(`${interruptItem.text}\r\n\r\n`, this.client), true, () => {
|
||||
maybePauseAndFinish();
|
||||
});
|
||||
this.client.term.write(
|
||||
pipeToAnsi(`${interruptItem.text}\r\n\r\n`, this.client),
|
||||
true,
|
||||
() => {
|
||||
maybePauseAndFinish();
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user