diff --git a/src/assets/css/videoosd.css b/src/assets/css/videoosd.css
index 59a485468d..808915e58b 100644
--- a/src/assets/css/videoosd.css
+++ b/src/assets/css/videoosd.css
@@ -248,8 +248,6 @@
}
@media all and (max-width: 30em) {
- .btnFastForward,
- .btnRewind,
.osdMediaInfo,
.osdPoster {
display: none !important;
diff --git a/src/components/remotecontrol/remotecontrol.css b/src/components/remotecontrol/remotecontrol.css
index c260799585..1c31b4382b 100644
--- a/src/components/remotecontrol/remotecontrol.css
+++ b/src/components/remotecontrol/remotecontrol.css
@@ -222,18 +222,10 @@
margin: 0;
}
-.layout-mobile .nowPlayingSecondaryButtons .btnShuffleQueue {
- display: none;
-}
-
.layout-mobile .nowPlayingSecondaryButtons .volumecontrol {
display: none;
}
-.layout-mobile .nowPlayingSecondaryButtons .btnRepeat {
- display: none;
-}
-
.layout-desktop .nowPlayingInfoButtons .btnRepeat,
.layout-tv .nowPlayingInfoButtons .btnRepeat {
display: none;
@@ -362,7 +354,8 @@
border-radius: 0;
}
- .nowPlayingInfoButtons .btnRepeat {
+ .nowPlayingInfoButtons .btnRepeat,
+ .nowPlayingInfoButtons .btnRewind {
position: absolute;
left: 0;
margin-left: 0;
@@ -370,7 +363,8 @@
font-size: smaller;
}
- .nowPlayingInfoButtons .btnShuffleQueue {
+ .nowPlayingInfoButtons .btnShuffleQueue,
+ .nowPlayingInfoButtons .btnFastForward {
position: absolute;
right: 0;
margin-right: 0;
@@ -468,7 +462,6 @@
}
@media all and (max-width: 63em) {
- .nowPlayingSecondaryButtons .repeatToggleButton,
.nowPlayingInfoButtons .playlist .listItemMediaInfo,
.nowPlayingInfoButtons .btnStop {
display: none !important;
diff --git a/src/components/remotecontrol/remotecontrol.js b/src/components/remotecontrol/remotecontrol.js
index 3216241e7a..8d6c53cead 100644
--- a/src/components/remotecontrol/remotecontrol.js
+++ b/src/components/remotecontrol/remotecontrol.js
@@ -134,7 +134,7 @@ function imageUrl(item, options) {
function updateNowPlayingInfo(context, state, serverId) {
const item = state.NowPlayingItem;
const displayName = item ? getNowPlayingNameHtml(item).replace('
', ' - ') : '';
- if (typeof item !== 'undefined') {
+ if (item) {
const nowPlayingServerId = (item.ServerId || serverId);
if (item.Type == 'Audio' || item.MediaStreams[0].Type == 'Audio') {
const songName = item.Name;
@@ -192,11 +192,11 @@ function updateNowPlayingInfo(context, state, serverId) {
context.querySelector('.nowPlayingPageTitle').classList.add('hide');
}
- const url = item ? seriesImageUrl(item, {
+ const url = seriesImageUrl(item, {
maxHeight: 300
}) || imageUrl(item, {
maxHeight: 300
- }) : null;
+ });
let contextButton = context.querySelector('.btnToggleContextMenu');
// We remove the previous event listener by replacing the item in each update event
@@ -228,18 +228,16 @@ function updateNowPlayingInfo(context, state, serverId) {
});
});
setImageUrl(context, state, url);
- if (item) {
- backdrop.setBackdrops([item]);
- apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function (fullItem) {
- const userData = fullItem.UserData || {};
- const likes = userData.Likes == null ? '' : userData.Likes;
- context.querySelector('.nowPlayingPageUserDataButtonsTitle').innerHTML = '';
- context.querySelector('.nowPlayingPageUserDataButtons').innerHTML = '';
- });
- } else {
- backdrop.clearBackdrop();
- context.querySelector('.nowPlayingPageUserDataButtons').innerHTML = '';
- }
+ backdrop.setBackdrops([item]);
+ apiClient.getItem(apiClient.getCurrentUserId(), item.Id).then(function (fullItem) {
+ const userData = fullItem.UserData || {};
+ const likes = userData.Likes == null ? '' : userData.Likes;
+ context.querySelector('.nowPlayingPageUserDataButtonsTitle').innerHTML = '';
+ context.querySelector('.nowPlayingPageUserDataButtons').innerHTML = '';
+ });
+ } else {
+ backdrop.clearBackdrop();
+ context.querySelector('.nowPlayingPageUserDataButtons').innerHTML = '';
}
}
@@ -332,8 +330,14 @@ export default function () {
buttonVisible(context.querySelector('.btnNextTrack'), item != null);
buttonVisible(context.querySelector('.btnPreviousTrack'), item != null);
if (layoutManager.mobile) {
- buttonVisible(context.querySelector('.btnRewind'), false);
- buttonVisible(context.querySelector('.btnFastForward'), false);
+ const playingVideo = playbackManager.isPlayingVideo() && item !== null;
+ const playingAudio = !playbackManager.isPlayingVideo() && item !== null;
+ buttonVisible(context.querySelector('.btnRepeat'), playingAudio);
+ buttonVisible(context.querySelector('.btnShuffleQueue'), playingAudio);
+ buttonVisible(context.querySelector('.btnRewind'), playingVideo);
+ buttonVisible(context.querySelector('.btnFastForward'), playingVideo);
+ buttonVisible(context.querySelector('.nowPlayingSecondaryButtons .btnShuffleQueue'), playingVideo);
+ buttonVisible(context.querySelector('.nowPlayingSecondaryButtons .btnRepeat'), playingVideo);
} else {
buttonVisible(context.querySelector('.btnRewind'), item != null);
buttonVisible(context.querySelector('.btnFastForward'), item != null);
diff --git a/src/plugins/chromecastPlayer/plugin.js b/src/plugins/chromecastPlayer/plugin.js
index b7e6d05969..5ba8596089 100644
--- a/src/plugins/chromecastPlayer/plugin.js
+++ b/src/plugins/chromecastPlayer/plugin.js
@@ -931,9 +931,9 @@ class ChromecastPlayer {
return state.VolumeLevel == null ? 100 : state.VolumeLevel;
}
- isPlaying() {
+ isPlaying(mediaType) {
const state = this.lastPlayerData || {};
- return state.NowPlayingItem != null;
+ return state.NowPlayingItem != null && (state.NowPlayingItem.MediaType === mediaType || !mediaType);
}
isPlayingVideo() {
diff --git a/src/plugins/sessionPlayer/plugin.js b/src/plugins/sessionPlayer/plugin.js
index cbeb6f34b4..7e5dc9f4f7 100644
--- a/src/plugins/sessionPlayer/plugin.js
+++ b/src/plugins/sessionPlayer/plugin.js
@@ -466,9 +466,9 @@ class SessionPlayer {
sendCommandByName(this, 'DisplayContent', options);
}
- isPlaying() {
+ isPlaying(mediaType) {
const state = this.lastPlayerData || {};
- return state.NowPlayingItem != null;
+ return state.NowPlayingItem != null && (state.NowPlayingItem.MediaType === mediaType || !mediaType);
}
isPlayingVideo() {