diff --git a/frontend/src/Settings/Notifications/Notifications/Notification.js b/frontend/src/Settings/Notifications/Notifications/Notification.js
index 6e9b01f57..21f0e5ca8 100644
--- a/frontend/src/Settings/Notifications/Notifications/Notification.js
+++ b/frontend/src/Settings/Notifications/Notifications/Notification.js
@@ -60,8 +60,9 @@ class Notification extends Component {
onReleaseImport,
onUpgrade,
onRename,
- onAlbumDelete,
+ onArtistAdd,
onArtistDelete,
+ onAlbumDelete,
onHealthIssue,
onHealthRestored,
onDownloadFailure,
@@ -72,8 +73,9 @@ class Notification extends Component {
supportsOnReleaseImport,
supportsOnUpgrade,
supportsOnRename,
- supportsOnAlbumDelete,
+ supportsOnArtistAdd,
supportsOnArtistDelete,
+ supportsOnAlbumDelete,
supportsOnHealthIssue,
supportsOnHealthRestored,
supportsOnDownloadFailure,
@@ -95,59 +97,75 @@ class Notification extends Component {
{
- supportsOnGrab && onGrab &&
+ supportsOnGrab && onGrab ?
+ :
+ null
}
{
- supportsOnReleaseImport && onReleaseImport &&
+ supportsOnReleaseImport && onReleaseImport ?
+ :
+ null
}
{
- supportsOnUpgrade && onReleaseImport && onUpgrade &&
+ supportsOnUpgrade && onReleaseImport && onUpgrade ?
+ :
+ null
}
{
- supportsOnRename && onRename &&
+ supportsOnRename && onRename ?
+ :
+ null
}
{
- supportsOnTrackRetag && onTrackRetag &&
+ supportsOnTrackRetag && onTrackRetag ?
+ :
+ null
}
{
- supportsOnAlbumDelete && onAlbumDelete &&
+ supportsOnArtistAdd && onArtistAdd ?
+ {translate('OnArtistAdd')}
+ :
+ null
}
{
- supportsOnArtistDelete && onArtistDelete &&
+ supportsOnArtistDelete && onArtistDelete ?
+ :
+ null
+ }
+
+ {
+ supportsOnAlbumDelete && onAlbumDelete ?
+ :
+ null
}
{
- supportsOnHealthIssue && onHealthIssue &&
+ supportsOnHealthIssue && onHealthIssue ?
+ :
+ null
}
{
@@ -159,35 +177,38 @@ class Notification extends Component {
}
{
- supportsOnDownloadFailure && onDownloadFailure &&
+ supportsOnDownloadFailure && onDownloadFailure ?
+ :
+ null
}
{
- supportsOnImportFailure && onImportFailure &&
+ supportsOnImportFailure && onImportFailure ?
+ :
+ null
}
{
- supportsOnApplicationUpdate && onApplicationUpdate &&
+ supportsOnApplicationUpdate && onApplicationUpdate ?
+ :
+ null
}
{
- !onGrab && !onReleaseImport && !onRename && !onTrackRetag && !onAlbumDelete && !onArtistDelete &&
- !onHealthIssue && !onHealthRestored && !onDownloadFailure && !onImportFailure && !onApplicationUpdate &&
-
+ !onGrab && !onReleaseImport && !onRename && !onTrackRetag && !onArtistAdd && !onArtistDelete && !onAlbumDelete && !onHealthIssue && !onHealthRestored && !onDownloadFailure && !onImportFailure && !onApplicationUpdate ?
+ :
+ null
}
@@ -148,18 +150,29 @@ function NotificationEventItems(props) {
+
+
+
+
i.SupportsOnReleaseImport)
.Ignore(i => i.SupportsOnUpgrade)
.Ignore(i => i.SupportsOnRename)
- .Ignore(i => i.SupportsOnAlbumDelete)
+ .Ignore(i => i.SupportsOnArtistAdd)
.Ignore(i => i.SupportsOnArtistDelete)
+ .Ignore(i => i.SupportsOnAlbumDelete)
.Ignore(i => i.SupportsOnHealthIssue)
.Ignore(i => i.SupportsOnHealthRestored)
.Ignore(i => i.SupportsOnDownloadFailure)
diff --git a/src/NzbDrone.Core/Localization/Core/en.json b/src/NzbDrone.Core/Localization/Core/en.json
index 74babb223..8b2eecae4 100644
--- a/src/NzbDrone.Core/Localization/Core/en.json
+++ b/src/NzbDrone.Core/Localization/Core/en.json
@@ -532,7 +532,7 @@
"Importing": "Importing",
"Inactive": "Inactive",
"IncludeCustomFormatWhenRenamingHelpText": "'Include in {Custom Formats} renaming format'",
- "IncludeHealthWarningsHelpText": "Include Health Warnings",
+ "IncludeHealthWarnings": "Include Health Warnings",
"IncludeUnknownArtistItemsHelpText": "Show items without a artist in the queue, this could include removed artists, movies or anything else in {appName}'s category",
"IncludeUnmonitored": "Include Unmonitored",
"Indexer": "Indexer",
@@ -722,29 +722,18 @@
"NotificationTriggers": "Notification Triggers",
"Ok": "Ok",
"OnAlbumDelete": "On Album Delete",
- "OnAlbumDeleteHelpText": "On Album Delete",
"OnApplicationUpdate": "On Application Update",
- "OnApplicationUpdateHelpText": "On Application Update",
+ "OnArtistAdd": "On Artist Add",
"OnArtistDelete": "On Artist Delete",
- "OnArtistDeleteHelpText": "On Artist Delete",
"OnDownloadFailure": "On Download Failure",
- "OnDownloadFailureHelpText": "On Download Failure",
"OnGrab": "On Grab",
- "OnGrabHelpText": "On Grab",
"OnHealthIssue": "On Health Issue",
- "OnHealthIssueHelpText": "On Health Issue",
"OnHealthRestored": "On Health Restored",
- "OnHealthRestoredHelpText": "On Health Restored",
"OnImportFailure": "On Import Failure",
- "OnImportFailureHelpText": "On Import Failure",
"OnReleaseImport": "On Release Import",
- "OnReleaseImportHelpText": "On Release Import",
"OnRename": "On Rename",
- "OnRenameHelpText": "On Rename",
"OnTrackRetag": "On Track Retag",
- "OnTrackRetagHelpText": "On Track Retag",
"OnUpgrade": "On Upgrade",
- "OnUpgradeHelpText": "On Upgrade",
"OneAlbum": "1 album",
"OnlyTorrent": "Only Torrent",
"OnlyUsenet": "Only Usenet",
diff --git a/src/NzbDrone.Core/Music/Events/ArtistAddCompletedEvent.cs b/src/NzbDrone.Core/Music/Events/ArtistAddCompletedEvent.cs
new file mode 100644
index 000000000..861936676
--- /dev/null
+++ b/src/NzbDrone.Core/Music/Events/ArtistAddCompletedEvent.cs
@@ -0,0 +1,14 @@
+using NzbDrone.Common.Messaging;
+
+namespace NzbDrone.Core.Music.Events
+{
+ public class ArtistAddCompletedEvent : IEvent
+ {
+ public Artist Artist { get; private set; }
+
+ public ArtistAddCompletedEvent(Artist artist)
+ {
+ Artist = artist;
+ }
+ }
+}
diff --git a/src/NzbDrone.Core/Music/Handlers/ArtistScannedHandler.cs b/src/NzbDrone.Core/Music/Handlers/ArtistScannedHandler.cs
index 7a415e72b..97221d909 100644
--- a/src/NzbDrone.Core/Music/Handlers/ArtistScannedHandler.cs
+++ b/src/NzbDrone.Core/Music/Handlers/ArtistScannedHandler.cs
@@ -3,6 +3,7 @@ using NzbDrone.Core.IndexerSearch;
using NzbDrone.Core.MediaFiles.Events;
using NzbDrone.Core.Messaging.Commands;
using NzbDrone.Core.Messaging.Events;
+using NzbDrone.Core.Music.Events;
namespace NzbDrone.Core.Music
{
@@ -13,38 +14,46 @@ namespace NzbDrone.Core.Music
private readonly IArtistService _artistService;
private readonly IManageCommandQueue _commandQueueManager;
private readonly IAlbumAddedService _albumAddedService;
+ private readonly IEventAggregator _eventAggregator;
private readonly Logger _logger;
public ArtistScannedHandler(IAlbumMonitoredService albumMonitoredService,
IArtistService artistService,
IManageCommandQueue commandQueueManager,
IAlbumAddedService albumAddedService,
+ IEventAggregator eventAggregator,
Logger logger)
{
_albumMonitoredService = albumMonitoredService;
_artistService = artistService;
_commandQueueManager = commandQueueManager;
_albumAddedService = albumAddedService;
+ _eventAggregator = eventAggregator;
_logger = logger;
}
private void HandleScanEvents(Artist artist)
{
- if (artist.AddOptions != null)
+ var addOptions = artist.AddOptions;
+
+ if (addOptions == null)
{
- _logger.Info("[{0}] was recently added, performing post-add actions", artist.Name);
- _albumMonitoredService.SetAlbumMonitoredStatus(artist, artist.AddOptions);
+ _albumAddedService.SearchForRecentlyAdded(artist.Id);
+ return;
+ }
- if (artist.AddOptions.SearchForMissingAlbums)
- {
- _commandQueueManager.Push(new MissingAlbumSearchCommand(artist.Id));
- }
+ _logger.Info("[{0}] was recently added, performing post-add actions", artist.Name);
+ _albumMonitoredService.SetAlbumMonitoredStatus(artist, addOptions);
- artist.AddOptions = null;
- _artistService.RemoveAddOptions(artist);
+ _eventAggregator.PublishEvent(new ArtistAddCompletedEvent(artist));
+
+ if (artist.AddOptions.SearchForMissingAlbums)
+ {
+ _commandQueueManager.Push(new MissingAlbumSearchCommand(artist.Id));
}
- _albumAddedService.SearchForRecentlyAdded(artist.Id);
+ artist.AddOptions = null;
+ _artistService.RemoveAddOptions(artist);
}
public void Handle(ArtistScannedEvent message)
diff --git a/src/NzbDrone.Core/Notifications/Apprise/Apprise.cs b/src/NzbDrone.Core/Notifications/Apprise/Apprise.cs
index 59dc96f4f..893686840 100644
--- a/src/NzbDrone.Core/Notifications/Apprise/Apprise.cs
+++ b/src/NzbDrone.Core/Notifications/Apprise/Apprise.cs
@@ -27,9 +27,9 @@ namespace NzbDrone.Core.Notifications.Apprise
_proxy.SendNotification(ALBUM_DOWNLOADED_TITLE, message.Message, Settings);
}
- public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
+ public override void OnArtistAdd(ArtistAddMessage message)
{
- _proxy.SendNotification(ALBUM_DELETED_TITLE, deleteMessage.Message, Settings);
+ _proxy.SendNotification(ARTIST_ADDED_TITLE, message.Message, Settings);
}
public override void OnArtistDelete(ArtistDeleteMessage deleteMessage)
@@ -37,6 +37,11 @@ namespace NzbDrone.Core.Notifications.Apprise
_proxy.SendNotification(ARTIST_DELETED_TITLE, deleteMessage.Message, Settings);
}
+ public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
+ {
+ _proxy.SendNotification(ALBUM_DELETED_TITLE, deleteMessage.Message, Settings);
+ }
+
public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck)
{
_proxy.SendNotification(HEALTH_ISSUE_TITLE, healthCheck.Message, Settings);
diff --git a/src/NzbDrone.Core/Notifications/ArtistAddMessage.cs b/src/NzbDrone.Core/Notifications/ArtistAddMessage.cs
new file mode 100644
index 000000000..db03c2fac
--- /dev/null
+++ b/src/NzbDrone.Core/Notifications/ArtistAddMessage.cs
@@ -0,0 +1,15 @@
+using NzbDrone.Core.Music;
+
+namespace NzbDrone.Core.Notifications
+{
+ public class ArtistAddMessage
+ {
+ public string Message { get; set; }
+ public Artist Artist { get; set; }
+
+ public override string ToString()
+ {
+ return Message;
+ }
+ }
+}
diff --git a/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs b/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs
index a3225bf6a..4749a30f6 100644
--- a/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs
+++ b/src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs
@@ -186,28 +186,21 @@ namespace NzbDrone.Core.Notifications.CustomScript
ExecuteScript(environmentVariables);
}
- public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
+ public override void OnArtistAdd(ArtistAddMessage message)
{
- var artist = deleteMessage.Album.Artist.Value;
- var album = deleteMessage.Album;
+ var artist = message.Artist;
var environmentVariables = new StringDictionary();
- environmentVariables.Add("Lidarr_EventType", "AlbumDeleted");
+ environmentVariables.Add("Lidarr_EventType", "ArtistAdd");
environmentVariables.Add("Lidarr_InstanceName", _configFileProvider.InstanceName);
environmentVariables.Add("Lidarr_ApplicationUrl", _configService.ApplicationUrl);
environmentVariables.Add("Lidarr_Artist_Id", artist.Id.ToString());
- environmentVariables.Add("Lidarr_Artist_Name", artist.Metadata.Value.Name);
+ environmentVariables.Add("Lidarr_Artist_Title", artist.Metadata.Value.Name);
environmentVariables.Add("Lidarr_Artist_Path", artist.Path);
- environmentVariables.Add("Lidarr_Artist_MBId", artist.Metadata.Value.ForeignArtistId);
+ environmentVariables.Add("Lidarr_Artist_MBId", artist.Metadata.Value.ForeignArtistId.ToString());
environmentVariables.Add("Lidarr_Artist_Type", artist.Metadata.Value.Type);
environmentVariables.Add("Lidarr_Artist_Genres", string.Join("|", artist.Metadata.Value.Genres));
environmentVariables.Add("Lidarr_Artist_Tags", string.Join("|", artist.Tags.Select(t => _tagRepository.Get(t).Label)));
- environmentVariables.Add("Lidarr_Album_Id", album.Id.ToString());
- environmentVariables.Add("Lidarr_Album_Title", album.Title);
- environmentVariables.Add("Lidarr_Album_Overview", album.Overview);
- environmentVariables.Add("Lidarr_Album_MBId", album.ForeignAlbumId);
- environmentVariables.Add("Lidarr_Album_ReleaseDate", album.ReleaseDate.ToString());
- environmentVariables.Add("Lidarr_Artist_DeletedFiles", deleteMessage.DeletedFiles.ToString());
ExecuteScript(environmentVariables);
}
@@ -232,6 +225,32 @@ namespace NzbDrone.Core.Notifications.CustomScript
ExecuteScript(environmentVariables);
}
+ public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
+ {
+ var artist = deleteMessage.Album.Artist.Value;
+ var album = deleteMessage.Album;
+ var environmentVariables = new StringDictionary();
+
+ environmentVariables.Add("Lidarr_EventType", "AlbumDeleted");
+ environmentVariables.Add("Lidarr_InstanceName", _configFileProvider.InstanceName);
+ environmentVariables.Add("Lidarr_ApplicationUrl", _configService.ApplicationUrl);
+ environmentVariables.Add("Lidarr_Artist_Id", artist.Id.ToString());
+ environmentVariables.Add("Lidarr_Artist_Name", artist.Metadata.Value.Name);
+ environmentVariables.Add("Lidarr_Artist_Path", artist.Path);
+ environmentVariables.Add("Lidarr_Artist_MBId", artist.Metadata.Value.ForeignArtistId);
+ environmentVariables.Add("Lidarr_Artist_Type", artist.Metadata.Value.Type);
+ environmentVariables.Add("Lidarr_Artist_Genres", string.Join("|", artist.Metadata.Value.Genres));
+ environmentVariables.Add("Lidarr_Artist_Tags", string.Join("|", artist.Tags.Select(t => _tagRepository.Get(t).Label)));
+ environmentVariables.Add("Lidarr_Album_Id", album.Id.ToString());
+ environmentVariables.Add("Lidarr_Album_Title", album.Title);
+ environmentVariables.Add("Lidarr_Album_Overview", album.Overview);
+ environmentVariables.Add("Lidarr_Album_MBId", album.ForeignAlbumId);
+ environmentVariables.Add("Lidarr_Album_ReleaseDate", album.ReleaseDate.ToString());
+ environmentVariables.Add("Lidarr_Artist_DeletedFiles", deleteMessage.DeletedFiles.ToString());
+
+ ExecuteScript(environmentVariables);
+ }
+
public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck)
{
var environmentVariables = new StringDictionary();
diff --git a/src/NzbDrone.Core/Notifications/Discord/Discord.cs b/src/NzbDrone.Core/Notifications/Discord/Discord.cs
index adf1f29a9..41c0ae0d7 100644
--- a/src/NzbDrone.Core/Notifications/Discord/Discord.cs
+++ b/src/NzbDrone.Core/Notifications/Discord/Discord.cs
@@ -234,20 +234,20 @@ namespace NzbDrone.Core.Notifications.Discord
_proxy.SendPayload(payload, Settings);
}
- public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
+ public override void OnArtistAdd(ArtistAddMessage message)
{
- var album = deleteMessage.Album;
+ var artist = message.Artist;
var attachments = new List