diff --git a/dashboard-ui/scripts/mediacontroller.js b/dashboard-ui/scripts/mediacontroller.js index 3e40b28379..9991fbbfe1 100644 --- a/dashboard-ui/scripts/mediacontroller.js +++ b/dashboard-ui/scripts/mediacontroller.js @@ -16,6 +16,36 @@ }); } + function monitorPlayer(player) { + + $(player).on('playbackstart.mediacontroller', function (e, state) { + + var info = { + QueueableMediaTypes: state.NowPlayingItem.MediaType, + ItemId: state.NowPlayingItem.Id, + NowPlayingItem: state.NowPlayingItem + }; + + info = $.extend(info, state.PlayState); + + ApiClient.reportPlaybackStart(info); + + }).on('playbackstop.mediacontroller', function (e, state) { + + ApiClient.reportPlaybackStopped({ + + itemId: state.NowPlayingItem.Id, + mediaSourceId: state.PlayState.MediaSourceId, + positionTicks: state.PlayState.PositionTicks + + }); + + }).on('positionchange.mediacontroller', function (e, state) { + + + }); + } + function mediaController() { var self = this; @@ -26,6 +56,10 @@ self.registerPlayer = function (player) { players.push(player); + + if (player.isLocalPlayer) { + monitorPlayer(player); + } }; self.getPlayerInfo = function () { diff --git a/dashboard-ui/scripts/mediaplayer.js b/dashboard-ui/scripts/mediaplayer.js index 33e17ddaa7..b3e20ef8ca 100644 --- a/dashboard-ui/scripts/mediaplayer.js +++ b/dashboard-ui/scripts/mediaplayer.js @@ -1059,21 +1059,11 @@ self.updateCanClientSeek(playerElement); - ApiClient.reportPlaybackStart({ - itemId: item.Id, - QueueableMediaTypes: item.MediaType, - CanSeek: mediaSource.RunTimeTicks != null, - MediaSourceId: mediaSource.Id, - IsPaused: playerElement.paused, - IsMuted: playerElement.volume == 0, - VolumeLevel: playerElement.volume * 100 - }); - - self.startProgressInterval(item.Id, mediaSource.Id); - var state = self.getPlayerStateInternal(playerElement, item, mediaSource); $(self).trigger('playbackstart', [state]); + + self.startProgressInterval(item.Id, mediaSource.Id); }; self.onVolumeChanged = function (playerElement) { @@ -1093,23 +1083,11 @@ $(playerElement).off('ended.playbackstopped'); - var endTime = playerElement.currentTime; - clearProgressInterval(); - var position = Math.floor(10000000 * endTime) + self.startTimeTicksOffset; - var item = currentItem; var mediaSource = currentMediaSource; - ApiClient.reportPlaybackStopped({ - - itemId: item.Id, - mediaSourceId: mediaSource.Id, - positionTicks: position - - }); - if (item.MediaType == "Video") { ApiClient.stopActiveEncodings(); if (self.isFullScreen()) {