mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
support folder playback
This commit is contained in:
parent
92050a79b1
commit
ea0eb5c207
3 changed files with 75 additions and 16 deletions
|
@ -150,7 +150,7 @@
|
||||||
|
|
||||||
function onWebSocketMessageReceived(e, msg) {
|
function onWebSocketMessageReceived(e, msg) {
|
||||||
|
|
||||||
var localPlayer = msg.MessageType === "Play" || msg.MessageType === "Play" ?
|
var localPlayer = msg.MessageType === "Play" || msg.MessageType === "Playstate" ?
|
||||||
MediaController.getLocalPlayer() :
|
MediaController.getLocalPlayer() :
|
||||||
null;
|
null;
|
||||||
|
|
||||||
|
|
|
@ -305,16 +305,70 @@
|
||||||
return currentItem && currentItem.MediaType == mediaType;
|
return currentItem && currentItem.MediaType == mediaType;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function translateItemsForPlayback(items) {
|
||||||
|
|
||||||
|
var deferred = $.Deferred();
|
||||||
|
|
||||||
|
var firstItem = items[0];
|
||||||
|
var promise;
|
||||||
|
|
||||||
|
if (firstItem.IsFolder) {
|
||||||
|
|
||||||
|
promise = self.getItemsForPlayback({
|
||||||
|
ParentId: firstItem.Id,
|
||||||
|
Filters: "IsNotFolder",
|
||||||
|
Recursive: true,
|
||||||
|
SortBy: "SortName",
|
||||||
|
MediaTypes: "Audio,Video"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if (firstItem.Type == "MusicArtist") {
|
||||||
|
|
||||||
|
promise = self.getItemsForPlayback({
|
||||||
|
Artists: firstItem.Name,
|
||||||
|
Filters: "IsNotFolder",
|
||||||
|
Recursive: true,
|
||||||
|
SortBy: "SortName",
|
||||||
|
MediaTypes: "Audio"
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (firstItem.Type == "MusicGenre") {
|
||||||
|
|
||||||
|
promise = self.getItemsForPlayback({
|
||||||
|
Genres: firstItem.Name,
|
||||||
|
Filters: "IsNotFolder",
|
||||||
|
Recursive: true,
|
||||||
|
SortBy: "SortName",
|
||||||
|
MediaTypes: "Audio"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (promise) {
|
||||||
|
promise.done(function (result) {
|
||||||
|
|
||||||
|
deferred.resolveWith(null, [result.Items]);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
deferred.resolveWith(null, [items]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return deferred.promise();
|
||||||
|
}
|
||||||
|
|
||||||
self.play = function (options) {
|
self.play = function (options) {
|
||||||
|
|
||||||
Dashboard.getCurrentUser().done(function (user) {
|
Dashboard.getCurrentUser().done(function (user) {
|
||||||
|
|
||||||
if (options.items) {
|
if (options.items) {
|
||||||
|
|
||||||
self.playInternal(options.items[0], options.startPositionTicks, user);
|
translateItemsForPlayback(options.items).done(function (items) {
|
||||||
|
|
||||||
self.playlist = options.items;
|
self.playInternal(items[0], options.startPositionTicks, user);
|
||||||
currentPlaylistIndex = 0;
|
|
||||||
|
self.playlist = items;
|
||||||
|
currentPlaylistIndex = 0;
|
||||||
|
});
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
@ -324,12 +378,13 @@
|
||||||
|
|
||||||
}).done(function (result) {
|
}).done(function (result) {
|
||||||
|
|
||||||
options.items = result.Items;
|
translateItemsForPlayback(result.Items).done(function (items) {
|
||||||
|
|
||||||
self.playInternal(options.items[0], options.startPositionTicks, user);
|
self.playInternal(items[0], options.startPositionTicks, user);
|
||||||
|
|
||||||
self.playlist = options.items;
|
self.playlist = items;
|
||||||
currentPlaylistIndex = 0;
|
currentPlaylistIndex = 0;
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -580,7 +635,10 @@
|
||||||
|
|
||||||
if (options.items) {
|
if (options.items) {
|
||||||
|
|
||||||
self.queueItems(options.items);
|
translateItemsForPlayback(options.items).done(function (items) {
|
||||||
|
|
||||||
|
self.queueItems(items);
|
||||||
|
});
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
@ -590,13 +648,13 @@
|
||||||
|
|
||||||
}).done(function (result) {
|
}).done(function (result) {
|
||||||
|
|
||||||
options.items = result.Items;
|
translateItemsForPlayback(result.Items).done(function (items) {
|
||||||
|
|
||||||
self.queueItems(options.items);
|
self.queueItems(items);
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -472,11 +472,12 @@
|
||||||
|
|
||||||
var deferred = $.Deferred();
|
var deferred = $.Deferred();
|
||||||
|
|
||||||
ApiClient.getSessions({
|
var sessionQuery = {
|
||||||
|
SupportsRemoteControl: true,
|
||||||
|
ControllableByUserId: Dashboard.getCurrentUserId()
|
||||||
|
};
|
||||||
|
|
||||||
controllableByUserId: Dashboard.getCurrentUserId()
|
ApiClient.getSessions(sessionQuery).done(function (sessions) {
|
||||||
|
|
||||||
}).done(function (sessions) {
|
|
||||||
|
|
||||||
var targets = sessions.filter(function (s) {
|
var targets = sessions.filter(function (s) {
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue