Skip to content

Commit

Permalink
New: Movie Added Notification
Browse files Browse the repository at this point in the history
  • Loading branch information
Qstick committed Jun 4, 2022
1 parent a869595 commit f890aad
Show file tree
Hide file tree
Showing 33 changed files with 234 additions and 4 deletions.
12 changes: 12 additions & 0 deletions frontend/src/Settings/Notifications/Notifications/Notification.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ class Notification extends Component {
onDownload,
onUpgrade,
onRename,
onMovieAdded,
onMovieDelete,
onMovieFileDelete,
onMovieFileDeleteForUpgrade,
Expand All @@ -68,6 +69,7 @@ class Notification extends Component {
supportsOnDownload,
supportsOnUpgrade,
supportsOnRename,
supportsOnMovieAdded,
supportsOnMovieDelete,
supportsOnMovieFileDelete,
supportsOnMovieFileDeleteForUpgrade,
Expand Down Expand Up @@ -117,6 +119,14 @@ class Notification extends Component {
null
}

{
supportsOnMovieAdded && onMovieAdded ?
<Label kind={kinds.SUCCESS}>
{translate('OnMovieAdded')}
</Label> :
null
}

{
supportsOnHealthIssue && onHealthIssue ?
<Label kind={kinds.SUCCESS}>
Expand Down Expand Up @@ -196,6 +206,7 @@ Notification.propTypes = {
onDownload: PropTypes.bool.isRequired,
onUpgrade: PropTypes.bool.isRequired,
onRename: PropTypes.bool.isRequired,
onMovieAdded: PropTypes.bool.isRequired,
onMovieDelete: PropTypes.bool.isRequired,
onMovieFileDelete: PropTypes.bool.isRequired,
onMovieFileDeleteForUpgrade: PropTypes.bool.isRequired,
Expand All @@ -208,6 +219,7 @@ Notification.propTypes = {
supportsOnMovieFileDeleteForUpgrade: PropTypes.bool.isRequired,
supportsOnUpgrade: PropTypes.bool.isRequired,
supportsOnRename: PropTypes.bool.isRequired,
supportsOnMovieAdded: PropTypes.bool.isRequired,
supportsOnHealthIssue: PropTypes.bool.isRequired,
supportsOnApplicationUpdate: PropTypes.bool.isRequired,
onConfirmDeleteNotification: PropTypes.func.isRequired
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ function NotificationEventItems(props) {
onDownload,
onUpgrade,
onRename,
onMovieAdded,
onMovieDelete,
onMovieFileDelete,
onMovieFileDeleteForUpgrade,
Expand All @@ -28,6 +29,7 @@ function NotificationEventItems(props) {
supportsOnDownload,
supportsOnUpgrade,
supportsOnRename,
supportsOnMovieAdded,
supportsOnMovieDelete,
supportsOnMovieFileDelete,
supportsOnMovieFileDeleteForUpgrade,
Expand Down Expand Up @@ -92,6 +94,17 @@ function NotificationEventItems(props) {
/>
</div>

<div>
<FormInputGroup
type={inputTypes.CHECK}
name="onMovieAdded"
helpText={translate('OnMovieAddedHelpText')}
isDisabled={!supportsOnMovieAdded.value}
{...onMovieAdded}
onChange={onInputChange}
/>
</div>

<div>
<FormInputGroup
type={inputTypes.CHECK}
Expand Down
1 change: 1 addition & 0 deletions frontend/src/Store/Actions/Settings/notifications.js
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ export default {
selectedSchema.onDownload = selectedSchema.supportsOnDownload;
selectedSchema.onUpgrade = selectedSchema.supportsOnUpgrade;
selectedSchema.onRename = selectedSchema.supportsOnRename;
selectedSchema.onMovieAdded = selectedSchema.supportsOnMovieAdded;
selectedSchema.onMovieDelete = selectedSchema.supportsOnMovieDelete;
selectedSchema.onMovieFileDelete = selectedSchema.supportsOnMovieFileDelete;
selectedSchema.onMovieFileDeleteForUpgrade = selectedSchema.supportsOnMovieFileDeleteForUpgrade;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,11 @@ public override void OnMovieRename(Movie movie, List<RenamedMovieFile> renamedFi
TestLogger.Info("OnRename was called");
}

public override void OnMovieAdded(Movie movie)
{
TestLogger.Info("OnMovieAdded was called");
}

public override void OnMovieFileDelete(MovieFileDeleteMessage message)
{
TestLogger.Info("OnMovieFileDelete was called");
Expand Down Expand Up @@ -117,6 +122,7 @@ public void should_support_all_if_implemented()
notification.SupportsOnDownload.Should().BeTrue();
notification.SupportsOnUpgrade.Should().BeTrue();
notification.SupportsOnRename.Should().BeTrue();
notification.SupportsOnMovieAdded.Should().BeTrue();
notification.SupportsOnMovieDelete.Should().BeTrue();
notification.SupportsOnMovieFileDelete.Should().BeTrue();
notification.SupportsOnMovieFileDeleteForUpgrade.Should().BeTrue();
Expand All @@ -133,6 +139,7 @@ public void should_support_none_if_none_are_implemented()
notification.SupportsOnDownload.Should().BeFalse();
notification.SupportsOnUpgrade.Should().BeFalse();
notification.SupportsOnRename.Should().BeFalse();
notification.SupportsOnMovieAdded.Should().BeFalse();
notification.SupportsOnMovieDelete.Should().BeFalse();
notification.SupportsOnMovieFileDelete.Should().BeFalse();
notification.SupportsOnMovieFileDeleteForUpgrade.Should().BeFalse();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using FluentMigrator;
using NzbDrone.Core.Datastore.Migration.Framework;

namespace NzbDrone.Core.Datastore.Migration
{
[Migration(210)]
public class movie_added_notifications : NzbDroneMigrationBase
{
protected override void MainDbUpgrade()
{
Alter.Table("Notifications").AddColumn("OnMovieAdded").AsBoolean().WithDefaultValue(false);
}
}
}
1 change: 1 addition & 0 deletions src/NzbDrone.Core/Datastore/TableMapping.cs
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ public static void Map()
.Ignore(i => i.SupportsOnDownload)
.Ignore(i => i.SupportsOnUpgrade)
.Ignore(i => i.SupportsOnRename)
.Ignore(i => i.SupportsOnMovieAdded)
.Ignore(i => i.SupportsOnMovieDelete)
.Ignore(i => i.SupportsOnMovieFileDelete)
.Ignore(i => i.SupportsOnMovieFileDeleteForUpgrade)
Expand Down
3 changes: 2 additions & 1 deletion src/NzbDrone.Core/ImportLists/ImportListSyncService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,8 @@ private void ProcessMovieReport(ImportListDefinition importList, ImportListMovie
AddOptions = new AddMovieOptions
{
SearchForMovie = monitorType != MonitorTypes.None && importList.SearchOnAdd,
Monitor = monitorType
Monitor = monitorType,
AddMethod = AddMovieMethod.List
}
});
}
Expand Down
2 changes: 2 additions & 0 deletions src/NzbDrone.Core/Localization/Core/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -648,6 +648,8 @@
"OnLatestVersion": "The latest version of Radarr is already installed",
"OnlyTorrent": "Only Torrent",
"OnlyUsenet": "Only Usenet",
"OnMovieAdded": "On Movie Added",
"OnMovieAddedHelpText": "On Movie Added",
"OnMovieDelete": "On Movie Delete",
"OnMovieDeleteHelpText": "On Movie Delete",
"OnMovieFileDelete": "On Movie File Delete",
Expand Down
8 changes: 8 additions & 0 deletions src/NzbDrone.Core/Movies/AddMovieOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,13 @@ namespace NzbDrone.Core.Movies
public class AddMovieOptions : MonitoringOptions
{
public bool SearchForMovie { get; set; }
public AddMovieMethod AddMethod { get; set; }
}

public enum AddMovieMethod
{
Manual,
List,
Collection
}
}
3 changes: 2 additions & 1 deletion src/NzbDrone.Core/Movies/RefreshCollectionService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,8 @@ private void SyncCollectionMovies(MovieCollection collection)
MinimumAvailability = collection.MinimumAvailability,
AddOptions = new AddMovieOptions
{
SearchForMovie = collection.SearchOnAdd
SearchForMovie = collection.SearchOnAdd,
AddMethod = AddMovieMethod.Collection
},
Monitored = true
}).ToList());
Expand Down
6 changes: 6 additions & 0 deletions src/NzbDrone.Core/Notifications/Boxcar/Boxcar.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using FluentValidation.Results;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Movies;

namespace NzbDrone.Core.Notifications.Boxcar
{
Expand All @@ -26,6 +27,11 @@ public override void OnDownload(DownloadMessage message)
_proxy.SendNotification(MOVIE_DOWNLOADED_TITLE, message.Message, Settings);
}

public override void OnMovieAdded(Movie movie)
{
_proxy.SendNotification(MOVIE_ADDED_TITLE_BRANDED, $"{movie.Title} added to library", Settings);
}

public override void OnMovieFileDelete(MovieFileDeleteMessage deleteMessage)
{
_proxy.SendNotification(MOVIE_FILE_DELETED_TITLE, deleteMessage.Message, Settings);
Expand Down
16 changes: 16 additions & 0 deletions src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,22 @@ public override void OnMovieRename(Movie movie, List<RenamedMovieFile> renamedFi
ExecuteScript(environmentVariables);
}

public override void OnMovieAdded(Movie movie)
{
var environmentVariables = new StringDictionary();

environmentVariables.Add("Radarr_EventType", "MovieAdded");
environmentVariables.Add("Radarr_Movie_Id", movie.Id.ToString());
environmentVariables.Add("Radarr_Movie_Title", movie.MovieMetadata.Value.Title);
environmentVariables.Add("Radarr_Movie_Year", movie.MovieMetadata.Value.Year.ToString());
environmentVariables.Add("Radarr_Movie_Path", movie.Path);
environmentVariables.Add("Radarr_Movie_ImdbId", movie.MovieMetadata.Value.ImdbId ?? string.Empty);
environmentVariables.Add("Radarr_Movie_TmdbId", movie.MovieMetadata.Value.TmdbId.ToString());
environmentVariables.Add("Radarr_Movie_AddMethod", movie.AddOptions.AddMethod.ToString());

ExecuteScript(environmentVariables);
}

public override void OnMovieFileDelete(MovieFileDeleteMessage deleteMessage)
{
var movie = deleteMessage.Movie;
Expand Down
8 changes: 8 additions & 0 deletions src/NzbDrone.Core/Notifications/Email/Email.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
using NLog;
using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http.Dispatchers;
using NzbDrone.Core.Movies;

namespace NzbDrone.Core.Notifications.Email
{
Expand Down Expand Up @@ -40,6 +41,13 @@ public override void OnDownload(DownloadMessage message)
SendEmail(Settings, MOVIE_DOWNLOADED_TITLE_BRANDED, body);
}

public override void OnMovieAdded(Movie movie)
{
var body = $"{movie.Title} added to library.";

SendEmail(Settings, MOVIE_ADDED_TITLE_BRANDED, body);
}

public override void OnMovieFileDelete(MovieFileDeleteMessage deleteMessage)
{
var body = $"{deleteMessage.Message} deleted.";
Expand Down
6 changes: 6 additions & 0 deletions src/NzbDrone.Core/Notifications/Gotify/Gotify.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Collections.Generic;
using FluentValidation.Results;
using NLog;
using NzbDrone.Core.Movies;

namespace NzbDrone.Core.Notifications.Gotify
{
Expand Down Expand Up @@ -29,6 +30,11 @@ public override void OnDownload(DownloadMessage message)
_proxy.SendNotification(MOVIE_DOWNLOADED_TITLE, message.Message, Settings);
}

public override void OnMovieAdded(Movie movie)
{
_proxy.SendNotification(MOVIE_ADDED_TITLE, $"{movie.Title} added to library", Settings);
}

public override void OnMovieFileDelete(MovieFileDeleteMessage deleteMessage)
{
_proxy.SendNotification(MOVIE_FILE_DELETED_TITLE, deleteMessage.Message, Settings);
Expand Down
2 changes: 2 additions & 0 deletions src/NzbDrone.Core/Notifications/INotification.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,15 @@ public interface INotification : IProvider
void OnMovieRename(Movie movie, List<RenamedMovieFile> renamedFiles);
void OnMovieFileDelete(MovieFileDeleteMessage deleteMessage);
void OnMovieDelete(MovieDeleteMessage deleteMessage);
void OnMovieAdded(Movie movie);
void OnHealthIssue(HealthCheck.HealthCheck healthCheck);
void OnApplicationUpdate(ApplicationUpdateMessage updateMessage);
void ProcessQueue();
bool SupportsOnGrab { get; }
bool SupportsOnDownload { get; }
bool SupportsOnUpgrade { get; }
bool SupportsOnRename { get; }
bool SupportsOnMovieAdded { get; }
bool SupportsOnMovieDelete { get; }
bool SupportsOnMovieFileDelete { get; }
bool SupportsOnMovieFileDeleteForUpgrade { get; }
Expand Down
6 changes: 6 additions & 0 deletions src/NzbDrone.Core/Notifications/Join/Join.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using FluentValidation.Results;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Movies;

namespace NzbDrone.Core.Notifications.Join
{
Expand All @@ -27,6 +28,11 @@ public override void OnDownload(DownloadMessage message)
_proxy.SendNotification(MOVIE_DOWNLOADED_TITLE_BRANDED, message.Message, Settings);
}

public override void OnMovieAdded(Movie movie)
{
_proxy.SendNotification(MOVIE_ADDED_TITLE_BRANDED, $"{movie.Title} added to library", Settings);
}

public override void OnMovieFileDelete(MovieFileDeleteMessage deleteMessage)
{
_proxy.SendNotification(MOVIE_FILE_DELETED_TITLE_BRANDED, deleteMessage.Message, Settings);
Expand Down
6 changes: 6 additions & 0 deletions src/NzbDrone.Core/Notifications/Mailgun/Mailgun.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Collections.Generic;
using FluentValidation.Results;
using NLog;
using NzbDrone.Core.Movies;

namespace NzbDrone.Core.Notifications.Mailgun
{
Expand Down Expand Up @@ -29,6 +30,11 @@ public override void OnDownload(DownloadMessage downloadMessage)
_proxy.SendNotification(downloadMessage.OldMovieFiles.Count > 0 ? MOVIE_UPGRADED_TITLE : MOVIE_DOWNLOADED_TITLE, downloadMessage.Message, Settings);
}

public override void OnMovieAdded(Movie movie)
{
_proxy.SendNotification(MOVIE_ADDED_TITLE, $"{movie.Title} added to library", Settings);
}

public override void OnMovieFileDelete(MovieFileDeleteMessage deleteMessage)
{
var body = $"{deleteMessage.Message} deleted.";
Expand Down
17 changes: 17 additions & 0 deletions src/NzbDrone.Core/Notifications/Notifiarr/Notifiarr.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using FluentValidation.Results;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.HealthCheck;
using NzbDrone.Core.Movies;

namespace NzbDrone.Core.Notifications.Notifiarr
{
Expand Down Expand Up @@ -116,6 +117,22 @@ public override void OnMovieFileDelete(MovieFileDeleteMessage deleteMessage)
_proxy.SendNotification(variables, Settings);
}

public override void OnMovieAdded(Movie movie)
{
var variables = new StringDictionary();

variables.Add("Radarr_EventType", "MovieAdded");
variables.Add("Radarr_Movie_Id", movie.Id.ToString());
variables.Add("Radarr_Movie_Title", movie.MovieMetadata.Value.Title);
variables.Add("Radarr_Movie_Year", movie.MovieMetadata.Value.Year.ToString());
variables.Add("Radarr_Movie_Path", movie.Path);
variables.Add("Radarr_Movie_ImdbId", movie.MovieMetadata.Value.ImdbId ?? string.Empty);
variables.Add("Radarr_Movie_TmdbId", movie.MovieMetadata.Value.TmdbId.ToString());
variables.Add("Radarr_Movie_AddMethod", movie.AddOptions.AddMethod.ToString());

_proxy.SendNotification(variables, Settings);
}

public override void OnMovieDelete(MovieDeleteMessage deleteMessage)
{
var movie = deleteMessage.Movie;
Expand Down
7 changes: 7 additions & 0 deletions src/NzbDrone.Core/Notifications/NotificationBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,14 @@ public abstract class NotificationBase<TSettings> : INotification
protected const string MOVIE_GRABBED_TITLE = "Movie Grabbed";
protected const string MOVIE_DOWNLOADED_TITLE = "Movie Downloaded";
protected const string MOVIE_UPGRADED_TITLE = "Movie Upgraded";
protected const string MOVIE_ADDED_TITLE = "Movie Added";
protected const string MOVIE_DELETED_TITLE = "Movie Deleted";
protected const string MOVIE_FILE_DELETED_TITLE = "Movie File Deleted";
protected const string HEALTH_ISSUE_TITLE = "Health Check Failure";
protected const string APPLICATION_UPDATE_TITLE = "Application Updated";

protected const string MOVIE_GRABBED_TITLE_BRANDED = "Radarr - " + MOVIE_GRABBED_TITLE;
protected const string MOVIE_ADDED_TITLE_BRANDED = "Radarr - " + MOVIE_ADDED_TITLE;
protected const string MOVIE_DOWNLOADED_TITLE_BRANDED = "Radarr - " + MOVIE_DOWNLOADED_TITLE;
protected const string MOVIE_DELETED_TITLE_BRANDED = "Radarr - " + MOVIE_DELETED_TITLE;
protected const string MOVIE_FILE_DELETED_TITLE_BRANDED = "Radarr - " + MOVIE_FILE_DELETED_TITLE;
Expand Down Expand Up @@ -50,6 +52,10 @@ public virtual void OnMovieRename(Movie movie, List<RenamedMovieFile> renamedFil
{
}

public virtual void OnMovieAdded(Movie movie)
{
}

public virtual void OnMovieFileDelete(MovieFileDeleteMessage deleteMessage)
{
}
Expand All @@ -74,6 +80,7 @@ public virtual void ProcessQueue()
public bool SupportsOnRename => HasConcreteImplementation("OnMovieRename");
public bool SupportsOnDownload => HasConcreteImplementation("OnDownload");
public bool SupportsOnUpgrade => SupportsOnDownload;
public bool SupportsOnMovieAdded => HasConcreteImplementation("OnMovieAdded");
public bool SupportsOnMovieDelete => HasConcreteImplementation("OnMovieDelete");
public bool SupportsOnMovieFileDelete => HasConcreteImplementation("OnMovieFileDelete");
public bool SupportsOnMovieFileDeleteForUpgrade => SupportsOnMovieFileDelete;
Expand Down

0 comments on commit f890aad

Please sign in to comment.