preserve manual recording overrides

This commit is contained in:
Luke Pulverenti
2017-02-20 02:04:03 -05:00
parent 5d8fd7ce39
commit 149d16a314
5 changed files with 65 additions and 15 deletions

View File

@@ -635,6 +635,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
existingTimer.Status == RecordingStatus.Completed)
{
existingTimer.Status = RecordingStatus.New;
existingTimer.IsManual = true;
_timerProvider.Update(existingTimer);
return Task.FromResult(existingTimer.Id);
}
@@ -663,6 +664,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
RecordingHelper.CopyProgramInfoToTimerInfo(programInfo, timer);
}
timer.IsManual = true;
_timerProvider.Add(timer);
return Task.FromResult(timer.Id);
}
@@ -758,6 +760,8 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
existingTimer.PostPaddingSeconds = updatedTimer.PostPaddingSeconds;
existingTimer.IsPostPaddingRequired = updatedTimer.IsPostPaddingRequired;
existingTimer.IsPrePaddingRequired = updatedTimer.IsPrePaddingRequired;
_timerProvider.Update(existingTimer);
}
return Task.FromResult(true);
@@ -2203,6 +2207,11 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
private bool ShouldCancelTimerForSeriesTimer(SeriesTimerInfo seriesTimer, TimerInfo timer)
{
if (timer.IsManual)
{
return false;
}
if (!seriesTimer.RecordAnyTime)
{
if (Math.Abs(seriesTimer.StartDate.TimeOfDay.Ticks - timer.StartDate.TimeOfDay.Ticks) >= TimeSpan.FromMinutes(5).Ticks)

View File

@@ -954,8 +954,11 @@ namespace Emby.Server.Implementations.Session
{
var session = GetSessionToRemoteControl(sessionId);
var controllingSession = GetSession(controllingSessionId);
AssertCanControl(session, controllingSession);
if (!string.IsNullOrWhiteSpace(controllingSessionId))
{
var controllingSession = GetSession(controllingSessionId);
AssertCanControl(session, controllingSession);
}
return session.SessionController.SendGeneralCommand(command, cancellationToken);
}
@@ -1042,11 +1045,14 @@ namespace Emby.Server.Implementations.Session
}
}
var controllingSession = GetSession(controllingSessionId);
AssertCanControl(session, controllingSession);
if (controllingSession.UserId.HasValue)
if (!string.IsNullOrWhiteSpace(controllingSessionId))
{
command.ControllingUserId = controllingSession.UserId.Value.ToString("N");
var controllingSession = GetSession(controllingSessionId);
AssertCanControl(session, controllingSession);
if (controllingSession.UserId.HasValue)
{
command.ControllingUserId = controllingSession.UserId.Value.ToString("N");
}
}
await session.SessionController.SendPlayCommand(command, cancellationToken).ConfigureAwait(false);
@@ -1136,11 +1142,14 @@ namespace Emby.Server.Implementations.Session
{
var session = GetSessionToRemoteControl(sessionId);
var controllingSession = GetSession(controllingSessionId);
AssertCanControl(session, controllingSession);
if (controllingSession.UserId.HasValue)
if (!string.IsNullOrWhiteSpace(controllingSessionId))
{
command.ControllingUserId = controllingSession.UserId.Value.ToString("N");
var controllingSession = GetSession(controllingSessionId);
AssertCanControl(session, controllingSession);
if (controllingSession.UserId.HasValue)
{
command.ControllingUserId = controllingSession.UserId.Value.ToString("N");
}
}
return session.SessionController.SendPlaystateCommand(command, cancellationToken);