New: Missing/Cutoff Unmet will update when an episode is grabbed

pull/4/head
Mark McDowall 11 years ago
parent 83207a0baf
commit cb291d30b3

@ -4,18 +4,12 @@ using System.Linq;
using NzbDrone.Api.Episodes;
using NzbDrone.Api.Extensions;
using NzbDrone.Api.Mapping;
using NzbDrone.Core.Datastore.Events;
using NzbDrone.Core.Download;
using NzbDrone.Core.MediaFiles.Events;
using NzbDrone.Core.Messaging.Commands;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Tv;
namespace NzbDrone.Api.Calendar
{
public class CalendarModule : NzbDroneRestModuleWithSignalR<EpisodeResource, Episode>,
IHandle<EpisodeGrabbedEvent>,
IHandle<EpisodeDownloadedEvent>
public class CalendarModule : EpisodeModuleWithSignalR<EpisodeResource, Episode>
{
private readonly IEpisodeService _episodeService;
private readonly SeriesRepository _seriesRepository;
@ -53,24 +47,5 @@ namespace NzbDrone.Api.Calendar
return resources.OrderBy(e => e.AirDateUtc).ToList();
}
public void Handle(EpisodeGrabbedEvent message)
{
foreach (var episode in message.Episode.Episodes)
{
var resource = episode.InjectTo<EpisodeResource>();
resource.Grabbed = true;
BroadcastResourceChange(ModelAction.Updated, resource);
}
}
public void Handle(EpisodeDownloadedEvent message)
{
foreach (var episode in message.Episode.Episodes)
{
BroadcastResourceChange(ModelAction.Updated, episode.Id);
}
}
}
}

@ -5,14 +5,11 @@ using NzbDrone.Core.Datastore.Events;
using NzbDrone.Core.Download;
using NzbDrone.Core.MediaFiles.Events;
using NzbDrone.Core.Messaging.Commands;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Tv;
namespace NzbDrone.Api.Episodes
{
public class EpisodeModule : NzbDroneRestModuleWithSignalR<EpisodeResource, Episode>,
IHandle<EpisodeGrabbedEvent>,
IHandle<EpisodeDownloadedEvent>
public class EpisodeModule : EpisodeModuleWithSignalR<EpisodeResource, Episode>
{
private readonly IEpisodeService _episodeService;

@ -0,0 +1,46 @@
using NzbDrone.Api.Mapping;
using NzbDrone.Core.Datastore.Events;
using NzbDrone.Core.Download;
using NzbDrone.Core.MediaFiles.Events;
using NzbDrone.Core.Messaging.Commands;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Tv;
namespace NzbDrone.Api.Episodes
{
public abstract class EpisodeModuleWithSignalR<TResource, TModel> : NzbDroneRestModuleWithSignalR<TResource, TModel>,
IHandle<EpisodeGrabbedEvent>,
IHandle<EpisodeDownloadedEvent>
where TResource : EpisodeResource, new()
where TModel : Episode
{
protected EpisodeModuleWithSignalR(ICommandExecutor commandExecutor)
: base(commandExecutor)
{
}
protected EpisodeModuleWithSignalR(ICommandExecutor commandExecutor, string resource)
: base(commandExecutor, resource)
{
}
public void Handle(EpisodeGrabbedEvent message)
{
foreach (var episode in message.Episode.Episodes)
{
var resource = episode.InjectTo<TResource>();
resource.Grabbed = true;
BroadcastResourceChange(ModelAction.Updated, resource);
}
}
public void Handle(EpisodeDownloadedEvent message)
{
foreach (var episode in message.Episode.Episodes)
{
BroadcastResourceChange(ModelAction.Updated, episode.Id);
}
}
}
}

@ -117,6 +117,7 @@
<Compile Include="EpisodeFiles\EpisodeFileResource.cs" />
<Compile Include="Directories\DirectoryLookupService.cs" />
<Compile Include="Directories\DirectoryModule.cs" />
<Compile Include="Episodes\EpisodeModuleWithSignalR.cs" />
<Compile Include="Episodes\EpisodeModule.cs" />
<Compile Include="Episodes\EpisodeResource.cs" />
<Compile Include="Episodes\RenameEpisodeModule.cs" />

@ -2,17 +2,18 @@
using NzbDrone.Api.Episodes;
using NzbDrone.Api.Extensions;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.Messaging.Commands;
using NzbDrone.Core.Tv;
namespace NzbDrone.Api.Wanted
{
public class CutoffModule : NzbDroneRestModule<EpisodeResource>
public class CutoffModule : EpisodeModuleWithSignalR<EpisodeResource, Episode>
{
private readonly IEpisodeCutoffService _episodeCutoffService;
private readonly SeriesRepository _seriesRepository;
private readonly ISeriesRepository _seriesRepository;
public CutoffModule(IEpisodeCutoffService episodeCutoffService, SeriesRepository seriesRepository)
:base("wanted/cutoff")
public CutoffModule(IEpisodeCutoffService episodeCutoffService, ISeriesRepository seriesRepository, ICommandExecutor commandExecutor)
:base(commandExecutor, "wanted/cutoff")
{
_episodeCutoffService = episodeCutoffService;
_seriesRepository = seriesRepository;

@ -2,17 +2,18 @@
using NzbDrone.Api.Episodes;
using NzbDrone.Api.Extensions;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.Messaging.Commands;
using NzbDrone.Core.Tv;
namespace NzbDrone.Api.Wanted
{
public class MissingModule : NzbDroneRestModule<EpisodeResource>
public class MissingModule : EpisodeModuleWithSignalR<EpisodeResource, Episode>
{
private readonly IEpisodeService _episodeService;
private readonly SeriesRepository _seriesRepository;
private readonly ISeriesRepository _seriesRepository;
public MissingModule(IEpisodeService episodeService, SeriesRepository seriesRepository)
:base("wanted/missing")
public MissingModule(IEpisodeService episodeService, ISeriesRepository seriesRepository, ICommandExecutor commandExecutor)
:base(commandExecutor, "wanted/missing")
{
_episodeService = episodeService;
_seriesRepository = seriesRepository;

@ -14,7 +14,8 @@ define([
'Shared/LoadingView',
'Shared/Messenger',
'Commands/CommandController',
'backgrid.selectall'
'backgrid.selectall',
'Mixins/backbone.signalr.mixin'
], function (_,
Marionette,
Backgrid,
@ -81,7 +82,7 @@ define([
],
initialize : function () {
this.collection = new CutoffUnmetCollection();
this.collection = new CutoffUnmetCollection().bindSignalR({ updateOnly: true });
this.listenTo(this.collection, 'sync', this._showTable);
},

@ -14,7 +14,8 @@ define([
'Shared/LoadingView',
'Shared/Messenger',
'Commands/CommandController',
'backgrid.selectall'
'backgrid.selectall',
'Mixins/backbone.signalr.mixin'
], function (_,
Marionette,
Backgrid,
@ -81,7 +82,7 @@ define([
],
initialize : function () {
this.collection = new MissingCollection();
this.collection = new MissingCollection().bindSignalR({ updateOnly: true });
this.listenTo(this.collection, 'sync', this._showTable);
},

Loading…
Cancel
Save