WIP on real-time interruptions (ie: incoming message)

Still need work on *when* they are allowed with good defaults, etc.
This commit is contained in:
Bryan Ashby 2018-11-14 22:47:20 -07:00
parent 4025c3c643
commit 080d1727c2
2 changed files with 35 additions and 17 deletions

View file

@ -192,19 +192,7 @@ exports.MenuModule = class MenuModule extends PluginModule {
async.whilst(
() => this.client.interruptQueue.hasItems(),
next => {
this.client.interruptQueue.displayNext( (err, interruptItem) => {
if(err) {
return next(err);
}
if(interruptItem.pause) {
return this.pausePrompt(next);
}
return next(null);
});
},
next => this.client.interruptQueue.displayNext(next),
err => {
return cb(err);
}
@ -212,7 +200,21 @@ exports.MenuModule = class MenuModule extends PluginModule {
}
attemptInterruptNow(interruptItem, cb) {
return cb(null, false);
if(true !== this.interruptable) {
return cb(null, false); // don't eat up the item; queue for later
}
//
// Default impl: clear screen -> standard display -> reload menu
//
this.client.interruptQueue.displayWithItem(Object.assign({}, interruptItem, { cls : true }), err => {
if(err) {
return cb(err, false);
}
this.reload(err => {
return cb(err, err ? false : true);
});
});
}
getSaveState() {
@ -311,6 +313,8 @@ exports.MenuModule = class MenuModule extends PluginModule {
} else {
return gotoNextMenu();
}
} else {
this.enableInterruption();
}
}