diff --git a/chatcommand.js b/chatcommand.js index 97fd303e..82928d12 100644 --- a/chatcommand.js +++ b/chatcommand.js @@ -254,26 +254,21 @@ function handleClean(chan, user, target) { // you can use regexps, in case someone tries // to fool you with cyrillic or something. target = new RegExp(target); - var uid = false; // to skip first chan.sendAll() // local variables for deleteNext() callback var pl = chan.playlist; var count = 0; + var matches = pl.items.findAll(function(item) { + return target.test(item.queueby); + }); + console.log(matches); var deleteNext; - // this callback will search for matching items, - // and if one is found, call the remove method - // with itself as the callback to execute after - // the remove is finished. deleteNext = function() { - // notify channel that this is deleted - if (uid !== false) { + if (count < matches.length) { + var uid=matches[count].uid; + count += 1 chan.sendAll("delete", { uid: uid }); - } - // find next match - uid = pl.items.findSubmitter(target); - if (uid !== false) { - // remove, and restart callback when removed. pl.remove(uid, deleteNext); } else { // refresh playlist only once, at the end diff --git a/ullist.js b/ullist.js index 4838e4ad..5b018792 100644 --- a/ullist.js +++ b/ullist.js @@ -181,21 +181,14 @@ ULList.prototype.findVideoId = function (id) { return false; }; -/** -returns the UID of the first item in the queue that -was submitted by a user matching the target regexp. -*/ -ULList.prototype.findSubmitter = function(target) { - var item = this.first; - - while(item !== null) { - if(item.queueby && target.test(item.queueby)) { - console.log("found", item.uid, target, item.queueby); - return item.uid; - } - item = item.next; - } - return false; +ULList.prototype.findAll = function(fn) { + var result = []; + this.forEach(function(item) { + if( fn(item) ) { + result.push(item); + } + }); + return result; } exports.ULList = ULList;