mirror of https://github.com/calzoneman/sync.git
Fix playlist queue issues
This commit is contained in:
parent
6353638115
commit
4c38276f14
43
channel.js
43
channel.js
|
@ -1015,7 +1015,7 @@ Channel.prototype.autoTemp = function(media, user) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Channel.prototype.enqueue = function(data, user) {
|
Channel.prototype.enqueue = function(data, user, callback) {
|
||||||
var idx = data.pos == "next" ? this.position + 1 : this.queue.length;
|
var idx = data.pos == "next" ? this.position + 1 : this.queue.length;
|
||||||
|
|
||||||
if(isLive(data.type) && !this.hasPermission(user, "playlistaddlive")) {
|
if(isLive(data.type) && !this.hasPermission(user, "playlistaddlive")) {
|
||||||
|
@ -1030,6 +1030,8 @@ Channel.prototype.enqueue = function(data, user) {
|
||||||
this.autoTemp(media, user);
|
this.autoTemp(media, user);
|
||||||
this.queueAdd(media, idx);
|
this.queueAdd(media, idx);
|
||||||
this.logger.log("*** Queued from cache: id=" + data.id);
|
this.logger.log("*** Queued from cache: id=" + data.id);
|
||||||
|
if(callback)
|
||||||
|
callback();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
switch(data.type) {
|
switch(data.type) {
|
||||||
|
@ -1049,6 +1051,8 @@ Channel.prototype.enqueue = function(data, user) {
|
||||||
this.cacheMedia(media);
|
this.cacheMedia(media);
|
||||||
if(data.type == "yp")
|
if(data.type == "yp")
|
||||||
idx++;
|
idx++;
|
||||||
|
if(callback)
|
||||||
|
callback();
|
||||||
}.bind(this));
|
}.bind(this));
|
||||||
break;
|
break;
|
||||||
case "li":
|
case "li":
|
||||||
|
@ -1056,18 +1060,24 @@ Channel.prototype.enqueue = function(data, user) {
|
||||||
media.queueby = user ? user.name : "";
|
media.queueby = user ? user.name : "";
|
||||||
this.autoTemp(media, user);
|
this.autoTemp(media, user);
|
||||||
this.queueAdd(media, idx);
|
this.queueAdd(media, idx);
|
||||||
|
if(callback)
|
||||||
|
callback();
|
||||||
break;
|
break;
|
||||||
case "tw":
|
case "tw":
|
||||||
var media = new Media(data.id, "Twitch - " + data.id, "--:--", "tw");
|
var media = new Media(data.id, "Twitch - " + data.id, "--:--", "tw");
|
||||||
media.queueby = user ? user.name : "";
|
media.queueby = user ? user.name : "";
|
||||||
this.autoTemp(media, user);
|
this.autoTemp(media, user);
|
||||||
this.queueAdd(media, idx);
|
this.queueAdd(media, idx);
|
||||||
|
if(callback)
|
||||||
|
callback();
|
||||||
break;
|
break;
|
||||||
case "jt":
|
case "jt":
|
||||||
var media = new Media(data.id, "JustinTV - " + data.id, "--:--", "jt");
|
var media = new Media(data.id, "JustinTV - " + data.id, "--:--", "jt");
|
||||||
media.queueby = user ? user.name : "";
|
media.queueby = user ? user.name : "";
|
||||||
this.autoTemp(media, user);
|
this.autoTemp(media, user);
|
||||||
this.queueAdd(media, idx);
|
this.queueAdd(media, idx);
|
||||||
|
if(callback)
|
||||||
|
callback();
|
||||||
break;
|
break;
|
||||||
case "us":
|
case "us":
|
||||||
InfoGetter.getUstream(data.id, function(id) {
|
InfoGetter.getUstream(data.id, function(id) {
|
||||||
|
@ -1075,6 +1085,8 @@ Channel.prototype.enqueue = function(data, user) {
|
||||||
media.queueby = user ? user.name : "";
|
media.queueby = user ? user.name : "";
|
||||||
this.autoTemp(media, user);
|
this.autoTemp(media, user);
|
||||||
this.queueAdd(media, idx);
|
this.queueAdd(media, idx);
|
||||||
|
if(callback)
|
||||||
|
callback();
|
||||||
}.bind(this));
|
}.bind(this));
|
||||||
break;
|
break;
|
||||||
case "rt":
|
case "rt":
|
||||||
|
@ -1082,18 +1094,24 @@ Channel.prototype.enqueue = function(data, user) {
|
||||||
media.queueby = user ? user.name : "";
|
media.queueby = user ? user.name : "";
|
||||||
this.autoTemp(media, user);
|
this.autoTemp(media, user);
|
||||||
this.queueAdd(media, idx);
|
this.queueAdd(media, idx);
|
||||||
|
if(callback)
|
||||||
|
callback();
|
||||||
break;
|
break;
|
||||||
case "jw":
|
case "jw":
|
||||||
var media = new Media(data.id, "JWPlayer Stream - " + data.id, "--:--", "jw");
|
var media = new Media(data.id, "JWPlayer Stream - " + data.id, "--:--", "jw");
|
||||||
media.queueby = user ? user.name : "";
|
media.queueby = user ? user.name : "";
|
||||||
this.autoTemp(media, user);
|
this.autoTemp(media, user);
|
||||||
this.queueAdd(media, idx);
|
this.queueAdd(media, idx);
|
||||||
|
if(callback)
|
||||||
|
callback();
|
||||||
break;
|
break;
|
||||||
case "im":
|
case "im":
|
||||||
var media = new Media(data.id, "Imgur Album", "--:--", "im");
|
var media = new Media(data.id, "Imgur Album", "--:--", "im");
|
||||||
media.queueby = user ? user.name : "";
|
media.queueby = user ? user.name : "";
|
||||||
this.autoTemp(media, user);
|
this.autoTemp(media, user);
|
||||||
this.queueAdd(media, idx);
|
this.queueAdd(media, idx);
|
||||||
|
if(callback)
|
||||||
|
callback();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -1140,18 +1158,29 @@ Channel.prototype.tryQueuePlaylist = function(user, data) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var pl = Database.loadUserPlaylist(user.name, data.name);
|
var pl = Database.loadUserPlaylist(user.name, data.name);
|
||||||
|
var chan = this;
|
||||||
// Queue in reverse order for qnext
|
// Queue in reverse order for qnext
|
||||||
if(data.pos == "next") {
|
if(data.pos == "next") {
|
||||||
for(var i = pl.length - 1; i >= 0; i--) {
|
var i = pl.length;
|
||||||
pl[i].pos = "next";
|
var cback = function() {
|
||||||
this.enqueue(pl[i], user);
|
i--;
|
||||||
|
if(i > 0) {
|
||||||
|
pl[i].pos = "next";
|
||||||
|
chan.enqueue(pl[i], user, cback);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
this.enqueue(pl[0], user, cback);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for(var i = 0; i < pl.length; i++) {
|
var i = 0;
|
||||||
pl[i].pos = "end";
|
var cback = function() {
|
||||||
this.enqueue(pl[i], user);
|
i++;
|
||||||
|
if(i < pl.length) {
|
||||||
|
pl[i].pos = "end";
|
||||||
|
chan.enqueue(pl[i], user, cback);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
this.enqueue(pl[i], user, cback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue