diff options
| author | Ionut Andrei Oanca <oancaionutandrei@gmail.com> | 2020-11-14 18:09:25 +0100 |
|---|---|---|
| committer | Ionut Andrei Oanca <oancaionutandrei@gmail.com> | 2020-11-14 18:09:25 +0100 |
| commit | fa69f6fd511b88f2c10f37c45e1924b8bfe2e7ec (patch) | |
| tree | 05f916619a9300aaf45bc9f163bbe9d0a4f4d325 /MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs | |
| parent | 83333e1fe8ed35f73fafdc200a4bf39be7d80f1b (diff) | |
Handle ignore-wait request in waiting state in SyncPlay
Diffstat (limited to 'MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs')
| -rw-r--r-- | MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs b/MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs index 7f454570a..c78077b35 100644 --- a/MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs +++ b/MediaBrowser.Controller/SyncPlay/GroupStates/WaitingGroupState.cs @@ -25,13 +25,7 @@ namespace MediaBrowser.Controller.SyncPlay } /// <inheritdoc /> - public override GroupStateType Type - { - get - { - return GroupStateType.Waiting; - } - } + public override GroupStateType Type { get; } = GroupStateType.Waiting; /// <summary> /// Gets or sets a value indicating whether playback should resume when group is ready. @@ -651,5 +645,31 @@ namespace MediaBrowser.Controller.SyncPlay Logger.LogDebug("HandleRequest: {0} in group {1}, no previous track available.", request.Type, context.GroupId.ToString()); } } + + /// <inheritdoc /> + public override void HandleRequest(IGroupStateContext context, GroupStateType prevState, IgnoreWaitGroupRequest request, SessionInfo session, CancellationToken cancellationToken) + { + context.SetIgnoreGroupWait(session, request.IgnoreWait); + + if (!context.IsBuffering()) + { + Logger.LogDebug("HandleRequest: {0} in group {1}, returning to previous state.", request.Type, context.GroupId.ToString()); + + if (ResumePlaying) + { + // Client, that was buffering, stopped following playback. + var playingState = new PlayingGroupState(Logger); + context.SetState(playingState); + var unpauseRequest = new UnpauseGroupRequest(); + playingState.HandleRequest(context, Type, unpauseRequest, session, cancellationToken); + } + else + { + // Group is ready, returning to previous state. + var pausedState = new PausedGroupState(Logger); + context.SetState(pausedState); + } + } + } } } |
