myplayer/patches/mediaelement-plugins/01-playlist.js.diff

68 lines
3.0 KiB
Diff
Raw Permalink Normal View History

diff --git a/src/playlist/playlist.js b/src/playlist/playlist.js
index 82112fb..bf39681 100644
--- a/src/playlist/playlist.js
+++ b/src/playlist/playlist.js
@@ -81,10 +81,11 @@ Object.assign(MediaElementPlayer.prototype, {
player.endedCallback = () => {
if (player.currentPlaylistItem < player.listItems.length) {
- player.setSrc(player.playlist[++player.currentPlaylistItem]);
+ player.setSrc(player.playlist[++player.currentPlaylistItem].src);
player.load();
setTimeout(() => {
- player.play();
+ var _promise = player.play();
+ console.log("play() returned promise at 'player.endedCallback': ", _promise);
}, 200);
}
};
@@ -172,7 +173,17 @@ Object.assign(MediaElementPlayer.prototype, {
player.currentPlaylistItem = this.getAttribute('data-playlist-index');
player.setSrc(this.value);
player.load();
- player.play();
+ var isPlaying = player.media.currentTime > 0 && !player.media.paused && !player.media.ended && player.media.readyState > player.media.HAVE_CURRENT_DATA;
+ if(isPlaying) {
+ console.log("play() at 'inputs[i].addEventListener' not executed, because media is already playing");
+ }
+ else {
+ var _promise = player.play();
+ console.log("play() returned promise at 'inputs[i].addEventListener': ", _promise);
+ _promise.catch((error) => {
+ console.error(error);
+ });
+ }
if (player.isVideo && player.options.autoClosePlaylist === true) {
mejs.Utils.toggleClass(player.playlistLayer, `${player.options.classPrefix}playlist-hidden`);
@@ -224,7 +235,8 @@ Object.assign(MediaElementPlayer.prototype, {
if (player.playlist[--player.currentPlaylistItem]) {
player.setSrc(player.playlist[player.currentPlaylistItem].src);
player.load();
- player.play();
+ var _promise = player.play();
+ console.log("play() returned promise at 'player.prevPlaylistCallback': ", _promise);
} else {
++player.currentPlaylistItem;
}
@@ -249,7 +261,8 @@ Object.assign(MediaElementPlayer.prototype, {
if (player.playlist[++player.currentPlaylistItem]) {
player.setSrc(player.playlist[player.currentPlaylistItem].src);
player.load();
- player.play();
+ var _promise = player.play();
+ console.log("play() returned promise at 'player.nextPlaylistCallback': ", _promise);
} else {
--player.currentPlaylistItem;
}
@@ -312,7 +325,8 @@ Object.assign(MediaElementPlayer.prototype, {
if (playedItems.indexOf(randomItem) === -1) {
player.setSrc(player.playlist[randomItem].src);
player.load();
- player.play();
+ var _promise = player.play();
+ console.log("play() returned promise at 'randomizeCallback': ", _promise);
player.currentPlaylistItem = randomItem;
playedItems.push(randomItem);