mirror of
https://github.com/Readarr/Readarr
synced 2026-02-13 18:22:59 +01:00
Send signalr message for episode monitored flag changes
(cherry picked from commit 9e81d41f262fb1f9d798374673b0a0427bf1a6e3) Closes #1049
This commit is contained in:
parent
2317665f33
commit
0e5f45a457
6 changed files with 43 additions and 11 deletions
|
|
@ -176,6 +176,8 @@ public void SetMonitoredFlat(Book book, bool monitored)
|
|||
{
|
||||
book.Monitored = monitored;
|
||||
SetFields(book, p => p.Monitored);
|
||||
|
||||
ModelUpdated(book, true);
|
||||
}
|
||||
|
||||
public void SetMonitored(IEnumerable<int> ids, bool monitored)
|
||||
|
|
|
|||
|
|
@ -473,24 +473,24 @@ protected int GetPagedRecordCount(SqlBuilder builder, PagingSpec<TModel> pagingS
|
|||
}
|
||||
}
|
||||
|
||||
protected void ModelCreated(TModel model)
|
||||
protected void ModelCreated(TModel model, bool forcePublish = false)
|
||||
{
|
||||
PublishModelEvent(model, ModelAction.Created);
|
||||
PublishModelEvent(model, ModelAction.Created, forcePublish);
|
||||
}
|
||||
|
||||
protected void ModelUpdated(TModel model)
|
||||
protected void ModelUpdated(TModel model, bool forcePublish = false)
|
||||
{
|
||||
PublishModelEvent(model, ModelAction.Updated);
|
||||
PublishModelEvent(model, ModelAction.Updated, forcePublish);
|
||||
}
|
||||
|
||||
protected void ModelDeleted(TModel model)
|
||||
protected void ModelDeleted(TModel model, bool forcePublish = false)
|
||||
{
|
||||
PublishModelEvent(model, ModelAction.Deleted);
|
||||
PublishModelEvent(model, ModelAction.Deleted, forcePublish);
|
||||
}
|
||||
|
||||
private void PublishModelEvent(TModel model, ModelAction action)
|
||||
private void PublishModelEvent(TModel model, ModelAction action, bool forcePublish)
|
||||
{
|
||||
if (PublishModelEvents)
|
||||
if (PublishModelEvents || forcePublish)
|
||||
{
|
||||
_eventAggregator.PublishEvent(new ModelEvent<TModel>(model, action));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,14 +1,23 @@
|
|||
using NzbDrone.Common.Messaging;
|
||||
using NzbDrone.Common.Messaging;
|
||||
|
||||
namespace NzbDrone.Core.Datastore.Events
|
||||
{
|
||||
public class ModelEvent<TModel> : IEvent
|
||||
where TModel : ModelBase
|
||||
{
|
||||
public int ModelId { get; set; }
|
||||
public TModel Model { get; set; }
|
||||
public ModelAction Action { get; set; }
|
||||
|
||||
public ModelEvent(int modelId, ModelAction action)
|
||||
{
|
||||
ModelId = modelId;
|
||||
Action = action;
|
||||
}
|
||||
|
||||
public ModelEvent(TModel model, ModelAction action)
|
||||
{
|
||||
ModelId = model.Id;
|
||||
Model = model;
|
||||
Action = action;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -174,6 +174,15 @@ public IActionResult SetBooksMonitored([FromBody]BooksMonitoredResource resource
|
|||
{
|
||||
_bookService.SetMonitored(resource.BookIds, resource.Monitored);
|
||||
|
||||
if (resource.BookIds.Count == 1)
|
||||
{
|
||||
_bookService.SetBookMonitored(resource.BookIds.First(), resource.Monitored);
|
||||
}
|
||||
else
|
||||
{
|
||||
_bookService.SetMonitored(resource.BookIds, resource.Monitored);
|
||||
}
|
||||
|
||||
return Accepted(MapToResource(_bookService.GetBooks(resource.BookIds), false));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -40,6 +40,13 @@ public override BookResource GetResourceById(int id)
|
|||
return resource;
|
||||
}
|
||||
|
||||
protected override BookResource GetResourceByIdForBroadcast(int id)
|
||||
{
|
||||
var book = _bookService.GetBook(id);
|
||||
var resource = MapToResource(book, false);
|
||||
return resource;
|
||||
}
|
||||
|
||||
protected BookResource MapToResource(Book book, bool includeAuthor)
|
||||
{
|
||||
var resource = book.ToResource();
|
||||
|
|
|
|||
|
|
@ -29,6 +29,11 @@ protected RestControllerWithSignalR(IBroadcastSignalRMessage signalRBroadcaster)
|
|||
}
|
||||
}
|
||||
|
||||
protected virtual TResource GetResourceByIdForBroadcast(int id)
|
||||
{
|
||||
return GetResourceById(id);
|
||||
}
|
||||
|
||||
[NonAction]
|
||||
public void Handle(ModelEvent<TModel> message)
|
||||
{
|
||||
|
|
@ -42,7 +47,7 @@ public void Handle(ModelEvent<TModel> message)
|
|||
BroadcastResourceChange(message.Action);
|
||||
}
|
||||
|
||||
BroadcastResourceChange(message.Action, message.Model.Id);
|
||||
BroadcastResourceChange(message.Action, message.ModelId);
|
||||
}
|
||||
|
||||
protected void BroadcastResourceChange(ModelAction action, int id)
|
||||
|
|
@ -58,7 +63,7 @@ protected void BroadcastResourceChange(ModelAction action, int id)
|
|||
}
|
||||
else
|
||||
{
|
||||
var resource = GetResourceById(id);
|
||||
var resource = GetResourceByIdForBroadcast(id);
|
||||
BroadcastResourceChange(action, resource);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue