Add in missing return statements

Fixes several bugs relating to dupe callbacks on the same tag
This commit is contained in:
Annika Backstrom 2017-04-09 22:40:23 -04:00
parent abe3c9f8aa
commit beacdf98e7
6 changed files with 26 additions and 12 deletions

View File

@ -22,6 +22,14 @@ var html = `
<form method="post" class="pure-form"> <form method="post" class="pure-form">
<input class="pure-button pure-button-primary" type="submit" name="uid" value="BADC0FFEE"> <input class="pure-button pure-button-primary" type="submit" name="uid" value="BADC0FFEE">
</form> </form>
<div>
<form method="post" class="pure-form" style="display: inline-block;">
<input class="pure-button pure-button-primary" type="submit" name="uid" value="STOPSTOP">
</form>
<form method="post" class="pure-form" style="display: inline-block;">
<input class="pure-button pure-button-primary" type="submit" name="uid" value="PAUSEPAUSE">
</form>
</div>
<form method="post" class="pure-form"> <form method="post" class="pure-form">
<input type="text" name="uid" value="0123456789"> <input class="pure-button pure-button-primary" type="submit"> <input type="text" name="uid" value="0123456789"> <input class="pure-button pure-button-primary" type="submit">
</form> </form>

View File

@ -11,7 +11,7 @@ class FileBackend {
find(tag, callback) { find(tag, callback) {
glob('media/' + tag + ' - *.mp3', (err, files) => { glob('media/' + tag + ' - *.mp3', (err, files) => {
if (files.length > 0) { if (files.length > 0) {
callback(basename(files[0])); return callback(basename(files[0]));
} }
callback(); callback();
}); });

View File

@ -13,11 +13,13 @@ class Library extends EventEmitter {
find(tag) { find(tag) {
if (tag === this.config.stop_id) { if (tag === this.config.stop_id) {
this.emit('action', new tags.StopCommand()); this.emit('action', new tags.StopCommand(tag));
return;
} }
if (tag === this.config.pause_id) { if (tag === this.config.pause_id) {
this.emit('action', new tags.PauseCommand()); this.emit('action', new tags.PauseCommand(tag));
return;
} }
this.backend.find(tag, path => { this.backend.find(tag, path => {

View File

@ -15,6 +15,8 @@ module.exports.PlayLog = class PlayLog extends EventEmitter {
updateLog(tag) { updateLog(tag) {
this.last_tag = tag; this.last_tag = tag;
// early exit for NotFoundTag, these don't show
// up in the play history
if (tag instanceof tags.NotFoundTag) { if (tag instanceof tags.NotFoundTag) {
this.emit('update', tag); this.emit('update', tag);
return; return;

View File

@ -43,3 +43,5 @@ module.exports = {
, NotFoundTag: NotFoundTag , NotFoundTag: NotFoundTag
, FileTag: FileTag , FileTag: FileTag
}; };
// vim:ts=2 sw=2 et:

View File

@ -6,6 +6,7 @@ const throttle = require('throttle-debounce/throttle');
const ChildProcessEmitter = require('./child-process').ChildProcessEmitter; const ChildProcessEmitter = require('./child-process').ChildProcessEmitter;
const DEFAULT_STOP_THROTTLE = 2000;
const DEFAULT_PAUSE_THROTTLE = 2000; const DEFAULT_PAUSE_THROTTLE = 2000;
const DEFAULT_PLAY_THROTTLE = 5000; const DEFAULT_PLAY_THROTTLE = 5000;
const DEFAULT_UNKNOWN_THROTTLE = 2000; const DEFAULT_UNKNOWN_THROTTLE = 2000;
@ -18,27 +19,26 @@ class MediaPlayer extends ChildProcessEmitter {
return line.substr(0, 3) == '@F ' return line.substr(0, 3) == '@F '
}); });
this.pauseThrottled = throttle(config.pause_throttle || DEFAULT_PAUSE_THROTTLE, () => { this.stopThrottled = throttle(config.stop_throttle || DEFAULT_STOP_THROTTLE, this._stop);
this._pause(); this.pauseThrottled = throttle(config.pause_throttle || DEFAULT_PAUSE_THROTTLE, this._pause);
}); this.playFileThrottled = throttle(config.play_throttle || DEFAULT_PLAY_THROTTLE, this._playFile);
this.playFileThrottled = throttle(config.play_throttle || DEFAULT_PLAY_THROTTLE, (path) => {
this._playFile(path);
});
// always throttled
this.unknown = throttle(config.unknown_throttle || DEFAULT_UNKNOWN_THROTTLE, this._unknown); this.unknown = throttle(config.unknown_throttle || DEFAULT_UNKNOWN_THROTTLE, this._unknown);
// default to unthrottled // default to unthrottled
this.pause = this._pauseFile; this.pause = this._pause;
this.playFile = this._playFile; this.playFile = this._playFile;
this.stop = this._stop;
} }
throttle() { throttle() {
this.stop = this.stopThrottled;
this.pause = this.pauseThrottled; this.pause = this.pauseThrottled;
this.playFile = this.playFileThrottled; this.playFile = this.playFileThrottled;
} }
stop(tag) { _stop(tag) {
this.emit('command', tag); this.emit('command', tag);
this.send('STOP'); this.send('STOP');
} }