@ -164,26 +164,26 @@ namespace Emby.Server.Implementations.SyncPlay
/// <summary>
/// Filters sessions of this group.
/// </summary>
/// <param name="from ">The current session.</param>
/// <param name="from Id ">The current session identifier .</param>
/// <param name="type">The filtering type.</param>
/// <returns>The list of sessions matching the filter.</returns>
private IEnumerable < SessionInfo > FilterSessions ( SessionInfo from , SyncPlayBroadcastType type )
private IEnumerable < string > FilterSessions ( string fromId , SyncPlayBroadcastType type )
{
return type switch
{
SyncPlayBroadcastType . CurrentSession = > new SessionInfo [ ] { from } ,
SyncPlayBroadcastType . CurrentSession = > new string [ ] { fromId } ,
SyncPlayBroadcastType . AllGroup = > _participants
. Values
. Select ( session = > session . Session ) ,
. Select ( member = > member . SessionId ) ,
SyncPlayBroadcastType . AllExceptCurrentSession = > _participants
. Values
. Select ( session = > session . Session )
. Where ( session = > ! session . Id . Equals ( from . Id, StringComparison . OrdinalIgnoreCase ) ) ,
. Select ( member = > member . SessionId )
. Where ( session Id = > ! sessionId . Equals ( from Id, StringComparison . OrdinalIgnoreCase ) ) ,
SyncPlayBroadcastType . AllReady = > _participants
. Values
. Where ( session = > ! session . IsBuffering )
. Select ( session = > session . Session ) ,
_ = > Enumerable . Empty < SessionInfo > ( )
. Where ( member = > ! member . IsBuffering )
. Select ( member = > member . SessionId ) ,
_ = > Enumerable . Empty < string > ( )
} ;
}
@ -225,7 +225,7 @@ namespace Emby.Server.Implementations.SyncPlay
// Get list of users.
var users = _participants
. Values
. Select ( participant = > _userManager . GetUserById ( participant . Session. UserId) ) ;
. Select ( participant = > _userManager . GetUserById ( participant . UserId) ) ;
// Find problematic users.
var usersWithNoAccess = users . Where ( user = > ! HasAccessToQueue ( user , queue ) ) ;
@ -353,7 +353,7 @@ namespace Emby.Server.Implementations.SyncPlay
/// <returns>The group info for the clients.</returns>
public GroupInfoDto GetInfo ( )
{
var participants = _participants . Values . Select ( session = > session . Session. UserName) . Distinct ( ) . ToList ( ) ;
var participants = _participants . Values . Select ( session = > session . UserName) . Distinct ( ) . ToList ( ) ;
return new GroupInfoDto ( GroupId , GroupName , _state . Type , participants , DateTime . UtcNow ) ;
}
@ -389,9 +389,9 @@ namespace Emby.Server.Implementations.SyncPlay
{
IEnumerable < Task > GetTasks ( )
{
foreach ( var session in FilterSessions ( from , type ) )
foreach ( var session Id in FilterSessions ( from . Id , type ) )
{
yield return _sessionManager . SendSyncPlayGroupUpdate ( session , message , cancellationToken ) ;
yield return _sessionManager . SendSyncPlayGroupUpdate ( session Id , message , cancellationToken ) ;
}
}
@ -403,9 +403,9 @@ namespace Emby.Server.Implementations.SyncPlay
{
IEnumerable < Task > GetTasks ( )
{
foreach ( var session in FilterSessions ( from , type ) )
foreach ( var session Id in FilterSessions ( from . Id , type ) )
{
yield return _sessionManager . SendSyncPlayCommand ( session , message , cancellationToken ) ;
yield return _sessionManager . SendSyncPlayCommand ( session Id , message , cancellationToken ) ;
}
}
@ -659,8 +659,9 @@ namespace Emby.Server.Implementations.SyncPlay
public PlayQueueUpdate GetPlayQueueUpdate ( PlayQueueUpdateReason reason )
{
var startPositionTicks = PositionTicks ;
var isPlaying = _state . Type . Equals ( GroupStateType . Playing ) ;
if ( _state. Type . Equals ( GroupStateType . Playing ) )
if ( isPlaying )
{
var currentTime = DateTime . UtcNow ;
var elapsedTime = currentTime - LastActivity ;
@ -679,6 +680,7 @@ namespace Emby.Server.Implementations.SyncPlay
PlayQueue . GetPlaylist ( ) ,
PlayQueue . PlayingItemIndex ,
startPositionTicks ,
isPlaying ,
PlayQueue . ShuffleMode ,
PlayQueue . RepeatMode ) ;
}