@ -266,46 +266,43 @@ namespace MediaBrowser.Server.Implementations.Session
/// <summary>
/// Used to report playback progress for an item
/// </summary>
/// <param name="item">The item.</param>
/// <param name="positionTicks">The position ticks.</param>
/// <param name="isPaused">if set to <c>true</c> [is paused].</param>
/// <param name="sessionId">The session id.</param>
/// <param name="info">The info.</param>
/// <returns>Task.</returns>
/// <exception cref="System.ArgumentNullException"></exception>
/// <exception cref="System.ArgumentOutOfRangeException">positionTicks</exception>
public async Task OnPlaybackProgress ( BaseItem item , long? positionTicks , bool isPaused , bool isMuted , Guid sessionId )
public async Task OnPlaybackProgress ( PlaybackProgressInfo info )
{
if ( i tem = = null )
if ( i nfo = = null )
{
throw new ArgumentNullException ( ) ;
throw new ArgumentNullException ( "info" ) ;
}
if ( positionTicks. HasValue & & p ositionTicks. Value < 0 )
if ( info. PositionTicks . HasValue & & info . P ositionTicks. Value < 0 )
{
throw new ArgumentOutOfRangeException ( "positionTicks" ) ;
}
var session = Sessions . First ( i = > i . Id . Equals ( s essionId) ) ;
var session = Sessions . First ( i = > i . Id . Equals ( info. S essionId) ) ;
UpdateNowPlayingItem ( session , i tem, isPaused , isMuted , p ositionTicks) ;
UpdateNowPlayingItem ( session , i nfo. Item , info . IsPaused , info . IsMuted , info . P ositionTicks) ;
var key = i tem. GetUserDataKey ( ) ;
var key = i nfo. I tem. GetUserDataKey ( ) ;
var user = session . User ;
if ( p ositionTicks. HasValue )
if ( info. P ositionTicks. HasValue )
{
var data = _userDataRepository . GetUserData ( user . Id , key ) ;
UpdatePlayState ( i tem, data , p ositionTicks. Value ) ;
UpdatePlayState ( i nfo. Item , data , info . P ositionTicks. Value ) ;
await _userDataRepository . SaveUserData ( user . Id , key , data , CancellationToken . None ) . ConfigureAwait ( false ) ;
}
EventHelper . QueueEventIfNotNull ( PlaybackProgress , this , new PlaybackProgressEventArgs
{
Item = i tem,
Item = i nfo. I tem,
User = user ,
PlaybackPositionTicks = p ositionTicks
PlaybackPositionTicks = info. P ositionTicks
} , _logger ) ;
}
@ -313,36 +310,35 @@ namespace MediaBrowser.Server.Implementations.Session
/// <summary>
/// Used to report that playback has ended for an item
/// </summary>
/// <param name="item">The item.</param>
/// <param name="positionTicks">The position ticks.</param>
/// <param name="sessionId">The session id.</param>
/// <param name="info">The info.</param>
/// <returns>Task.</returns>
/// <exception cref="System.ArgumentNullException"></exception>
public async Task OnPlaybackStopped ( BaseItem item , long? positionTicks , Guid sessionId )
/// <exception cref="System.ArgumentNullException">info</exception>
/// <exception cref="System.ArgumentOutOfRangeException">positionTicks</exception>
public async Task OnPlaybackStopped ( PlaybackStopInfo info )
{
if ( i tem = = null )
if ( i nfo = = null )
{
throw new ArgumentNullException ( ) ;
throw new ArgumentNullException ( "info" ) ;
}
if ( positionTicks. HasValue & & p ositionTicks. Value < 0 )
if ( info. PositionTicks . HasValue & & info . P ositionTicks. Value < 0 )
{
throw new ArgumentOutOfRangeException ( "positionTicks" ) ;
}
var session = Sessions . First ( i = > i . Id . Equals ( s essionId) ) ;
var session = Sessions . First ( i = > i . Id . Equals ( info. S essionId) ) ;
RemoveNowPlayingItem ( session , i tem) ;
RemoveNowPlayingItem ( session , i nfo. I tem) ;
var key = i tem. GetUserDataKey ( ) ;
var key = i nfo. I tem. GetUserDataKey ( ) ;
var user = session . User ;
var data = _userDataRepository . GetUserData ( user . Id , key ) ;
if ( p ositionTicks. HasValue )
if ( info. P ositionTicks. HasValue )
{
UpdatePlayState ( i tem, data , p ositionTicks. Value ) ;
UpdatePlayState ( i nfo. Item , data , info . P ositionTicks. Value ) ;
}
else
{
@ -356,9 +352,9 @@ namespace MediaBrowser.Server.Implementations.Session
EventHelper . QueueEventIfNotNull ( PlaybackStopped , this , new PlaybackProgressEventArgs
{
Item = i tem,
Item = i nfo. I tem,
User = user ,
PlaybackPositionTicks = p ositionTicks
PlaybackPositionTicks = info. P ositionTicks
} , _logger ) ;
}