mirror of https://github.com/lidarr/Lidarr
New: On Artist Add connection event
(cherry picked from commit dec6e140365981f0391a759db33f4f5de46adc24) Closes #3531
This commit is contained in:
parent
f31ecaf03e
commit
5f9c616bff
|
@ -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 {
|
|||
</div>
|
||||
|
||||
{
|
||||
supportsOnGrab && onGrab &&
|
||||
supportsOnGrab && onGrab ?
|
||||
<Label kind={kinds.SUCCESS}>
|
||||
{translate('OnGrab')}
|
||||
</Label>
|
||||
</Label> :
|
||||
null
|
||||
}
|
||||
|
||||
{
|
||||
supportsOnReleaseImport && onReleaseImport &&
|
||||
supportsOnReleaseImport && onReleaseImport ?
|
||||
<Label kind={kinds.SUCCESS}>
|
||||
{translate('OnReleaseImport')}
|
||||
</Label>
|
||||
</Label> :
|
||||
null
|
||||
}
|
||||
|
||||
{
|
||||
supportsOnUpgrade && onReleaseImport && onUpgrade &&
|
||||
supportsOnUpgrade && onReleaseImport && onUpgrade ?
|
||||
<Label kind={kinds.SUCCESS}>
|
||||
{translate('OnUpgrade')}
|
||||
</Label>
|
||||
</Label> :
|
||||
null
|
||||
}
|
||||
|
||||
{
|
||||
supportsOnRename && onRename &&
|
||||
supportsOnRename && onRename ?
|
||||
<Label kind={kinds.SUCCESS}>
|
||||
{translate('OnRename')}
|
||||
</Label>
|
||||
</Label> :
|
||||
null
|
||||
}
|
||||
|
||||
{
|
||||
supportsOnTrackRetag && onTrackRetag &&
|
||||
supportsOnTrackRetag && onTrackRetag ?
|
||||
<Label kind={kinds.SUCCESS}>
|
||||
{translate('OnTrackRetag')}
|
||||
</Label>
|
||||
</Label> :
|
||||
null
|
||||
}
|
||||
|
||||
{
|
||||
supportsOnAlbumDelete && onAlbumDelete &&
|
||||
supportsOnArtistAdd && onArtistAdd ?
|
||||
<Label kind={kinds.SUCCESS}>
|
||||
{translate('OnAlbumDelete')}
|
||||
</Label>
|
||||
{translate('OnArtistAdd')}
|
||||
</Label> :
|
||||
null
|
||||
}
|
||||
|
||||
{
|
||||
supportsOnArtistDelete && onArtistDelete &&
|
||||
supportsOnArtistDelete && onArtistDelete ?
|
||||
<Label kind={kinds.SUCCESS}>
|
||||
{translate('OnArtistDelete')}
|
||||
</Label>
|
||||
</Label> :
|
||||
null
|
||||
}
|
||||
|
||||
{
|
||||
supportsOnHealthIssue && onHealthIssue &&
|
||||
supportsOnAlbumDelete && onAlbumDelete ?
|
||||
<Label kind={kinds.SUCCESS}>
|
||||
{translate('OnAlbumDelete')}
|
||||
</Label> :
|
||||
null
|
||||
}
|
||||
|
||||
{
|
||||
supportsOnHealthIssue && onHealthIssue ?
|
||||
<Label kind={kinds.SUCCESS}>
|
||||
{translate('OnHealthIssue')}
|
||||
</Label>
|
||||
</Label> :
|
||||
null
|
||||
}
|
||||
|
||||
{
|
||||
|
@ -159,35 +177,38 @@ class Notification extends Component {
|
|||
}
|
||||
|
||||
{
|
||||
supportsOnDownloadFailure && onDownloadFailure &&
|
||||
supportsOnDownloadFailure && onDownloadFailure ?
|
||||
<Label kind={kinds.SUCCESS} >
|
||||
{translate('OnDownloadFailure')}
|
||||
</Label>
|
||||
</Label> :
|
||||
null
|
||||
}
|
||||
|
||||
{
|
||||
supportsOnImportFailure && onImportFailure &&
|
||||
supportsOnImportFailure && onImportFailure ?
|
||||
<Label kind={kinds.SUCCESS} >
|
||||
{translate('OnImportFailure')}
|
||||
</Label>
|
||||
</Label> :
|
||||
null
|
||||
}
|
||||
|
||||
{
|
||||
supportsOnApplicationUpdate && onApplicationUpdate &&
|
||||
supportsOnApplicationUpdate && onApplicationUpdate ?
|
||||
<Label kind={kinds.SUCCESS} >
|
||||
{translate('OnApplicationUpdate')}
|
||||
</Label>
|
||||
</Label> :
|
||||
null
|
||||
}
|
||||
|
||||
{
|
||||
!onGrab && !onReleaseImport && !onRename && !onTrackRetag && !onAlbumDelete && !onArtistDelete &&
|
||||
!onHealthIssue && !onHealthRestored && !onDownloadFailure && !onImportFailure && !onApplicationUpdate &&
|
||||
<Label
|
||||
kind={kinds.DISABLED}
|
||||
outline={true}
|
||||
>
|
||||
{translate('Disabled')}
|
||||
</Label>
|
||||
!onGrab && !onReleaseImport && !onRename && !onTrackRetag && !onArtistAdd && !onArtistDelete && !onAlbumDelete && !onHealthIssue && !onHealthRestored && !onDownloadFailure && !onImportFailure && !onApplicationUpdate ?
|
||||
<Label
|
||||
kind={kinds.DISABLED}
|
||||
outline={true}
|
||||
>
|
||||
{translate('Disabled')}
|
||||
</Label> :
|
||||
null
|
||||
}
|
||||
|
||||
<TagList
|
||||
|
@ -223,8 +244,9 @@ Notification.propTypes = {
|
|||
onReleaseImport: PropTypes.bool.isRequired,
|
||||
onUpgrade: PropTypes.bool.isRequired,
|
||||
onRename: PropTypes.bool.isRequired,
|
||||
onAlbumDelete: PropTypes.bool.isRequired,
|
||||
onArtistAdd: PropTypes.bool.isRequired,
|
||||
onArtistDelete: PropTypes.bool.isRequired,
|
||||
onAlbumDelete: PropTypes.bool.isRequired,
|
||||
onHealthIssue: PropTypes.bool.isRequired,
|
||||
onHealthRestored: PropTypes.bool.isRequired,
|
||||
onDownloadFailure: PropTypes.bool.isRequired,
|
||||
|
@ -235,8 +257,9 @@ Notification.propTypes = {
|
|||
supportsOnReleaseImport: PropTypes.bool.isRequired,
|
||||
supportsOnUpgrade: PropTypes.bool.isRequired,
|
||||
supportsOnRename: PropTypes.bool.isRequired,
|
||||
supportsOnAlbumDelete: PropTypes.bool.isRequired,
|
||||
supportsOnArtistAdd: PropTypes.bool.isRequired,
|
||||
supportsOnArtistDelete: PropTypes.bool.isRequired,
|
||||
supportsOnAlbumDelete: PropTypes.bool.isRequired,
|
||||
supportsOnHealthIssue: PropTypes.bool.isRequired,
|
||||
supportsOnHealthRestored: PropTypes.bool.isRequired,
|
||||
supportsOnDownloadFailure: PropTypes.bool.isRequired,
|
||||
|
|
|
@ -19,8 +19,9 @@ function NotificationEventItems(props) {
|
|||
onReleaseImport,
|
||||
onUpgrade,
|
||||
onRename,
|
||||
onAlbumDelete,
|
||||
onArtistAdd,
|
||||
onArtistDelete,
|
||||
onAlbumDelete,
|
||||
onHealthIssue,
|
||||
onHealthRestored,
|
||||
onDownloadFailure,
|
||||
|
@ -31,8 +32,9 @@ function NotificationEventItems(props) {
|
|||
supportsOnReleaseImport,
|
||||
supportsOnUpgrade,
|
||||
supportsOnRename,
|
||||
supportsOnAlbumDelete,
|
||||
supportsOnArtistAdd,
|
||||
supportsOnArtistDelete,
|
||||
supportsOnAlbumDelete,
|
||||
supportsOnHealthIssue,
|
||||
supportsOnHealthRestored,
|
||||
includeHealthWarnings,
|
||||
|
@ -57,7 +59,7 @@ function NotificationEventItems(props) {
|
|||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="onGrab"
|
||||
helpText={translate('OnGrabHelpText')}
|
||||
helpText={translate('OnGrab')}
|
||||
isDisabled={!supportsOnGrab.value}
|
||||
{...onGrab}
|
||||
onChange={onInputChange}
|
||||
|
@ -68,7 +70,7 @@ function NotificationEventItems(props) {
|
|||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="onReleaseImport"
|
||||
helpText={translate('OnReleaseImportHelpText')}
|
||||
helpText={translate('OnReleaseImport')}
|
||||
isDisabled={!supportsOnReleaseImport.value}
|
||||
{...onReleaseImport}
|
||||
onChange={onInputChange}
|
||||
|
@ -81,7 +83,7 @@ function NotificationEventItems(props) {
|
|||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="onUpgrade"
|
||||
helpText={translate('OnUpgradeHelpText')}
|
||||
helpText={translate('OnUpgrade')}
|
||||
isDisabled={!supportsOnUpgrade.value}
|
||||
{...onUpgrade}
|
||||
onChange={onInputChange}
|
||||
|
@ -93,7 +95,7 @@ function NotificationEventItems(props) {
|
|||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="onDownloadFailure"
|
||||
helpText={translate('OnDownloadFailureHelpText')}
|
||||
helpText={translate('OnDownloadFailure')}
|
||||
isDisabled={!supportsOnDownloadFailure.value}
|
||||
{...onDownloadFailure}
|
||||
onChange={onInputChange}
|
||||
|
@ -104,7 +106,7 @@ function NotificationEventItems(props) {
|
|||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="onImportFailure"
|
||||
helpText={translate('OnImportFailureHelpText')}
|
||||
helpText={translate('OnImportFailure')}
|
||||
isDisabled={!supportsOnImportFailure.value}
|
||||
{...onImportFailure}
|
||||
onChange={onInputChange}
|
||||
|
@ -115,7 +117,7 @@ function NotificationEventItems(props) {
|
|||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="onRename"
|
||||
helpText={translate('OnRenameHelpText')}
|
||||
helpText={translate('OnRename')}
|
||||
isDisabled={!supportsOnRename.value}
|
||||
{...onRename}
|
||||
onChange={onInputChange}
|
||||
|
@ -126,7 +128,7 @@ function NotificationEventItems(props) {
|
|||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="onTrackRetag"
|
||||
helpText={translate('OnTrackRetagHelpText')}
|
||||
helpText={translate('OnTrackRetag')}
|
||||
isDisabled={!supportsOnTrackRetag.value}
|
||||
{...onTrackRetag}
|
||||
onChange={onInputChange}
|
||||
|
@ -136,10 +138,10 @@ function NotificationEventItems(props) {
|
|||
<div>
|
||||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="onAlbumDelete"
|
||||
helpText={translate('OnAlbumDeleteHelpText')}
|
||||
isDisabled={!supportsOnAlbumDelete.value}
|
||||
{...onAlbumDelete}
|
||||
name="onArtistAdd"
|
||||
helpText={translate('OnArtistAdd')}
|
||||
isDisabled={!supportsOnArtistAdd.value}
|
||||
{...onArtistAdd}
|
||||
onChange={onInputChange}
|
||||
/>
|
||||
</div>
|
||||
|
@ -148,18 +150,29 @@ function NotificationEventItems(props) {
|
|||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="onArtistDelete"
|
||||
helpText={translate('OnArtistDeleteHelpText')}
|
||||
helpText={translate('OnArtistDelete')}
|
||||
isDisabled={!supportsOnArtistDelete.value}
|
||||
{...onArtistDelete}
|
||||
onChange={onInputChange}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="onAlbumDelete"
|
||||
helpText={translate('OnAlbumDelete')}
|
||||
isDisabled={!supportsOnAlbumDelete.value}
|
||||
{...onAlbumDelete}
|
||||
onChange={onInputChange}
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="onApplicationUpdate"
|
||||
helpText={translate('OnApplicationUpdateHelpText')}
|
||||
helpText={translate('OnApplicationUpdate')}
|
||||
isDisabled={!supportsOnApplicationUpdate.value}
|
||||
{...onApplicationUpdate}
|
||||
onChange={onInputChange}
|
||||
|
@ -170,7 +183,7 @@ function NotificationEventItems(props) {
|
|||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="onHealthIssue"
|
||||
helpText={translate('OnHealthIssueHelpText')}
|
||||
helpText={translate('OnHealthIssue')}
|
||||
isDisabled={!supportsOnHealthIssue.value}
|
||||
{...onHealthIssue}
|
||||
onChange={onInputChange}
|
||||
|
@ -181,7 +194,7 @@ function NotificationEventItems(props) {
|
|||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="onHealthRestored"
|
||||
helpText={translate('OnHealthRestoredHelpText')}
|
||||
helpText={translate('OnHealthRestored')}
|
||||
isDisabled={!supportsOnHealthRestored.value}
|
||||
{...onHealthRestored}
|
||||
onChange={onInputChange}
|
||||
|
@ -194,7 +207,7 @@ function NotificationEventItems(props) {
|
|||
<FormInputGroup
|
||||
type={inputTypes.CHECK}
|
||||
name="includeHealthWarnings"
|
||||
helpText={translate('IncludeHealthWarningsHelpText')}
|
||||
helpText={translate('IncludeHealthWarnings')}
|
||||
isDisabled={!supportsOnHealthIssue.value}
|
||||
{...includeHealthWarnings}
|
||||
onChange={onInputChange}
|
||||
|
|
|
@ -107,6 +107,8 @@ export default {
|
|||
selectedSchema.onReleaseImport = selectedSchema.supportsOnReleaseImport;
|
||||
selectedSchema.onUpgrade = selectedSchema.supportsOnUpgrade;
|
||||
selectedSchema.onRename = selectedSchema.supportsOnRename;
|
||||
selectedSchema.onArtistAdd = selectedSchema.supportsOnArtistAdd;
|
||||
selectedSchema.onArtistDelete = selectedSchema.supportsOnArtistDelete;
|
||||
selectedSchema.onHealthIssue = selectedSchema.supportsOnHealthIssue;
|
||||
selectedSchema.onDownloadFailure = selectedSchema.supportsOnDownloadFailure;
|
||||
selectedSchema.onImportFailure = selectedSchema.supportsOnImportFailure;
|
||||
|
|
|
@ -9,8 +9,9 @@ namespace Lidarr.Api.V1.Notifications
|
|||
public bool OnReleaseImport { get; set; }
|
||||
public bool OnUpgrade { get; set; }
|
||||
public bool OnRename { get; set; }
|
||||
public bool OnAlbumDelete { get; set; }
|
||||
public bool OnArtistAdd { get; set; }
|
||||
public bool OnArtistDelete { get; set; }
|
||||
public bool OnAlbumDelete { get; set; }
|
||||
public bool OnHealthIssue { get; set; }
|
||||
public bool OnHealthRestored { get; set; }
|
||||
public bool OnDownloadFailure { get; set; }
|
||||
|
@ -21,8 +22,9 @@ namespace Lidarr.Api.V1.Notifications
|
|||
public bool SupportsOnReleaseImport { get; set; }
|
||||
public bool SupportsOnUpgrade { get; set; }
|
||||
public bool SupportsOnRename { get; set; }
|
||||
public bool SupportsOnAlbumDelete { get; set; }
|
||||
public bool SupportsOnArtistAdd { get; set; }
|
||||
public bool SupportsOnArtistDelete { get; set; }
|
||||
public bool SupportsOnAlbumDelete { get; set; }
|
||||
public bool SupportsOnHealthIssue { get; set; }
|
||||
public bool SupportsOnHealthRestored { get; set; }
|
||||
public bool IncludeHealthWarnings { get; set; }
|
||||
|
@ -48,8 +50,9 @@ namespace Lidarr.Api.V1.Notifications
|
|||
resource.OnReleaseImport = definition.OnReleaseImport;
|
||||
resource.OnUpgrade = definition.OnUpgrade;
|
||||
resource.OnRename = definition.OnRename;
|
||||
resource.OnAlbumDelete = definition.OnAlbumDelete;
|
||||
resource.OnArtistAdd = definition.OnArtistAdd;
|
||||
resource.OnArtistDelete = definition.OnArtistDelete;
|
||||
resource.OnAlbumDelete = definition.OnAlbumDelete;
|
||||
resource.OnHealthIssue = definition.OnHealthIssue;
|
||||
resource.OnHealthRestored = definition.OnHealthRestored;
|
||||
resource.OnDownloadFailure = definition.OnDownloadFailure;
|
||||
|
@ -60,8 +63,9 @@ namespace Lidarr.Api.V1.Notifications
|
|||
resource.SupportsOnReleaseImport = definition.SupportsOnReleaseImport;
|
||||
resource.SupportsOnUpgrade = definition.SupportsOnUpgrade;
|
||||
resource.SupportsOnRename = definition.SupportsOnRename;
|
||||
resource.SupportsOnAlbumDelete = definition.SupportsOnAlbumDelete;
|
||||
resource.SupportsOnArtistAdd = definition.SupportsOnArtistAdd;
|
||||
resource.SupportsOnArtistDelete = definition.SupportsOnArtistDelete;
|
||||
resource.SupportsOnAlbumDelete = definition.SupportsOnAlbumDelete;
|
||||
resource.SupportsOnHealthIssue = definition.SupportsOnHealthIssue;
|
||||
resource.SupportsOnHealthRestored = definition.SupportsOnHealthRestored;
|
||||
resource.IncludeHealthWarnings = definition.IncludeHealthWarnings;
|
||||
|
@ -86,8 +90,9 @@ namespace Lidarr.Api.V1.Notifications
|
|||
definition.OnReleaseImport = resource.OnReleaseImport;
|
||||
definition.OnUpgrade = resource.OnUpgrade;
|
||||
definition.OnRename = resource.OnRename;
|
||||
definition.OnAlbumDelete = resource.OnAlbumDelete;
|
||||
definition.OnArtistAdd = resource.OnArtistAdd;
|
||||
definition.OnArtistDelete = resource.OnArtistDelete;
|
||||
definition.OnAlbumDelete = resource.OnAlbumDelete;
|
||||
definition.OnHealthIssue = resource.OnHealthIssue;
|
||||
definition.OnHealthRestored = resource.OnHealthRestored;
|
||||
definition.OnDownloadFailure = resource.OnDownloadFailure;
|
||||
|
@ -98,8 +103,9 @@ namespace Lidarr.Api.V1.Notifications
|
|||
definition.SupportsOnReleaseImport = resource.SupportsOnReleaseImport;
|
||||
definition.SupportsOnUpgrade = resource.SupportsOnUpgrade;
|
||||
definition.SupportsOnRename = resource.SupportsOnRename;
|
||||
definition.SupportsOnAlbumDelete = resource.SupportsOnAlbumDelete;
|
||||
definition.SupportsOnArtistAdd = resource.SupportsOnArtistAdd;
|
||||
definition.SupportsOnArtistDelete = resource.SupportsOnArtistDelete;
|
||||
definition.SupportsOnAlbumDelete = resource.SupportsOnAlbumDelete;
|
||||
definition.SupportsOnHealthIssue = resource.SupportsOnHealthIssue;
|
||||
definition.SupportsOnHealthRestored = resource.SupportsOnHealthRestored;
|
||||
definition.IncludeHealthWarnings = resource.IncludeHealthWarnings;
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
using FluentMigrator;
|
||||
using NzbDrone.Core.Datastore.Migration.Framework;
|
||||
|
||||
namespace NzbDrone.Core.Datastore.Migration
|
||||
{
|
||||
[Migration(076)]
|
||||
public class add_on_artist_add_to_notifications : NzbDroneMigrationBase
|
||||
{
|
||||
protected override void MainDbUpgrade()
|
||||
{
|
||||
Alter.Table("Notifications").AddColumn("OnArtistAdd").AsBoolean().WithDefaultValue(false);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -86,8 +86,9 @@ namespace NzbDrone.Core.Datastore
|
|||
.Ignore(i => 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)
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
|
||||
if (artist.AddOptions.SearchForMissingAlbums)
|
||||
{
|
||||
_commandQueueManager.Push(new MissingAlbumSearchCommand(artist.Id));
|
||||
}
|
||||
|
||||
artist.AddOptions = null;
|
||||
_artistService.RemoveAddOptions(artist);
|
||||
_albumAddedService.SearchForRecentlyAdded(artist.Id);
|
||||
return;
|
||||
}
|
||||
|
||||
_albumAddedService.SearchForRecentlyAdded(artist.Id);
|
||||
_logger.Info("[{0}] was recently added, performing post-add actions", artist.Name);
|
||||
_albumMonitoredService.SetAlbumMonitoredStatus(artist, addOptions);
|
||||
|
||||
_eventAggregator.PublishEvent(new ArtistAddCompletedEvent(artist));
|
||||
|
||||
if (artist.AddOptions.SearchForMissingAlbums)
|
||||
{
|
||||
_commandQueueManager.Push(new MissingAlbumSearchCommand(artist.Id));
|
||||
}
|
||||
|
||||
artist.AddOptions = null;
|
||||
_artistService.RemoveAddOptions(artist);
|
||||
}
|
||||
|
||||
public void Handle(ArtistScannedEvent message)
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -186,6 +186,45 @@ namespace NzbDrone.Core.Notifications.CustomScript
|
|||
ExecuteScript(environmentVariables);
|
||||
}
|
||||
|
||||
public override void OnArtistAdd(ArtistAddMessage message)
|
||||
{
|
||||
var artist = message.Artist;
|
||||
var environmentVariables = new StringDictionary();
|
||||
|
||||
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_Title", artist.Metadata.Value.Name);
|
||||
environmentVariables.Add("Lidarr_Artist_Path", artist.Path);
|
||||
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)));
|
||||
|
||||
ExecuteScript(environmentVariables);
|
||||
}
|
||||
|
||||
public override void OnArtistDelete(ArtistDeleteMessage deleteMessage)
|
||||
{
|
||||
var artist = deleteMessage.Artist;
|
||||
var environmentVariables = new StringDictionary();
|
||||
|
||||
environmentVariables.Add("Lidarr_EventType", "ArtistDeleted");
|
||||
environmentVariables.Add("Lidarr_InstanceName", _configFileProvider.InstanceName);
|
||||
environmentVariables.Add("Lidarr_ApplicationUrl", _configService.ApplicationUrl);
|
||||
environmentVariables.Add("Lidarr_Artist_Id", artist.Id.ToString());
|
||||
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.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_Artist_DeletedFiles", deleteMessage.DeletedFiles.ToString());
|
||||
|
||||
ExecuteScript(environmentVariables);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
{
|
||||
var artist = deleteMessage.Album.Artist.Value;
|
||||
|
@ -212,26 +251,6 @@ namespace NzbDrone.Core.Notifications.CustomScript
|
|||
ExecuteScript(environmentVariables);
|
||||
}
|
||||
|
||||
public override void OnArtistDelete(ArtistDeleteMessage deleteMessage)
|
||||
{
|
||||
var artist = deleteMessage.Artist;
|
||||
var environmentVariables = new StringDictionary();
|
||||
|
||||
environmentVariables.Add("Lidarr_EventType", "ArtistDeleted");
|
||||
environmentVariables.Add("Lidarr_InstanceName", _configFileProvider.InstanceName);
|
||||
environmentVariables.Add("Lidarr_ApplicationUrl", _configService.ApplicationUrl);
|
||||
environmentVariables.Add("Lidarr_Artist_Id", artist.Id.ToString());
|
||||
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.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_Artist_DeletedFiles", deleteMessage.DeletedFiles.ToString());
|
||||
|
||||
ExecuteScript(environmentVariables);
|
||||
}
|
||||
|
||||
public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck)
|
||||
{
|
||||
var environmentVariables = new StringDictionary();
|
||||
|
|
|
@ -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<Embed>
|
||||
{
|
||||
new Embed
|
||||
{
|
||||
Title = album.Title,
|
||||
Description = deleteMessage.DeletedFilesMessage
|
||||
}
|
||||
};
|
||||
{
|
||||
new Embed
|
||||
{
|
||||
Title = artist.Name,
|
||||
Description = message.Message
|
||||
}
|
||||
};
|
||||
|
||||
var payload = CreatePayload("Album Deleted", attachments);
|
||||
var payload = CreatePayload("Artist Added", attachments);
|
||||
|
||||
_proxy.SendPayload(payload, Settings);
|
||||
}
|
||||
|
@ -257,19 +257,37 @@ namespace NzbDrone.Core.Notifications.Discord
|
|||
var artist = deleteMessage.Artist;
|
||||
|
||||
var attachments = new List<Embed>
|
||||
{
|
||||
new Embed
|
||||
{
|
||||
Title = artist.Metadata.Value.Name,
|
||||
Description = deleteMessage.DeletedFilesMessage
|
||||
}
|
||||
};
|
||||
{
|
||||
new Embed
|
||||
{
|
||||
Title = artist.Name,
|
||||
Description = deleteMessage.DeletedFilesMessage
|
||||
}
|
||||
};
|
||||
|
||||
var payload = CreatePayload("Artist Deleted", attachments);
|
||||
|
||||
_proxy.SendPayload(payload, Settings);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
{
|
||||
var album = deleteMessage.Album;
|
||||
|
||||
var attachments = new List<Embed>
|
||||
{
|
||||
new Embed
|
||||
{
|
||||
Title = album.Title,
|
||||
Description = deleteMessage.DeletedFilesMessage
|
||||
}
|
||||
};
|
||||
|
||||
var payload = CreatePayload("Album Deleted", attachments);
|
||||
|
||||
_proxy.SendPayload(payload, Settings);
|
||||
}
|
||||
|
||||
public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck)
|
||||
{
|
||||
var attachments = new List<Embed>
|
||||
|
|
|
@ -40,11 +40,11 @@ namespace NzbDrone.Core.Notifications.Email
|
|||
SendEmail(Settings, ALBUM_DOWNLOADED_TITLE_BRANDED, body);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
public override void OnArtistAdd(ArtistAddMessage message)
|
||||
{
|
||||
var body = $"{deleteMessage.Message}";
|
||||
var body = $"{message.Message}";
|
||||
|
||||
SendEmail(Settings, ALBUM_DELETED_TITLE_BRANDED, body);
|
||||
SendEmail(Settings, ARTIST_ADDED_TITLE_BRANDED, body);
|
||||
}
|
||||
|
||||
public override void OnArtistDelete(ArtistDeleteMessage deleteMessage)
|
||||
|
@ -54,6 +54,13 @@ namespace NzbDrone.Core.Notifications.Email
|
|||
SendEmail(Settings, ARTIST_DELETED_TITLE_BRANDED, body);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
{
|
||||
var body = $"{deleteMessage.Message}";
|
||||
|
||||
SendEmail(Settings, ALBUM_DELETED_TITLE_BRANDED, body);
|
||||
}
|
||||
|
||||
public override void OnHealthIssue(HealthCheck.HealthCheck message)
|
||||
{
|
||||
SendEmail(Settings, HEALTH_ISSUE_TITLE_BRANDED, message.Message);
|
||||
|
|
|
@ -33,9 +33,9 @@ namespace NzbDrone.Core.Notifications.Gotify
|
|||
SendNotification(ALBUM_DOWNLOADED_TITLE, message.Message, message.Artist);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
public override void OnArtistAdd(ArtistAddMessage message)
|
||||
{
|
||||
SendNotification(ALBUM_DELETED_TITLE, deleteMessage.Message, deleteMessage.Album?.Artist);
|
||||
SendNotification(ARTIST_ADDED_TITLE, message.Message, message.Artist);
|
||||
}
|
||||
|
||||
public override void OnArtistDelete(ArtistDeleteMessage deleteMessage)
|
||||
|
@ -43,6 +43,11 @@ namespace NzbDrone.Core.Notifications.Gotify
|
|||
SendNotification(ARTIST_DELETED_TITLE, deleteMessage.Message, deleteMessage.Artist);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
{
|
||||
SendNotification(ALBUM_DELETED_TITLE, deleteMessage.Message, deleteMessage.Album?.Artist);
|
||||
}
|
||||
|
||||
public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck)
|
||||
{
|
||||
SendNotification(HEALTH_ISSUE_TITLE, healthCheck.Message, null);
|
||||
|
|
|
@ -12,8 +12,9 @@ namespace NzbDrone.Core.Notifications
|
|||
void OnGrab(GrabMessage grabMessage);
|
||||
void OnReleaseImport(AlbumDownloadMessage message);
|
||||
void OnRename(Artist artist, List<RenamedTrackFile> renamedFiles);
|
||||
void OnAlbumDelete(AlbumDeleteMessage deleteMessage);
|
||||
void OnArtistAdd(ArtistAddMessage message);
|
||||
void OnArtistDelete(ArtistDeleteMessage deleteMessage);
|
||||
void OnAlbumDelete(AlbumDeleteMessage deleteMessage);
|
||||
void OnHealthIssue(HealthCheck.HealthCheck healthCheck);
|
||||
void OnHealthRestored(HealthCheck.HealthCheck previousCheck);
|
||||
void OnApplicationUpdate(ApplicationUpdateMessage updateMessage);
|
||||
|
@ -25,8 +26,9 @@ namespace NzbDrone.Core.Notifications
|
|||
bool SupportsOnReleaseImport { get; }
|
||||
bool SupportsOnUpgrade { get; }
|
||||
bool SupportsOnRename { get; }
|
||||
bool SupportsOnAlbumDelete { get; }
|
||||
bool SupportsOnArtistAdd { get; }
|
||||
bool SupportsOnArtistDelete { get; }
|
||||
bool SupportsOnAlbumDelete { get; }
|
||||
bool SupportsOnHealthIssue { get; }
|
||||
bool SupportsOnHealthRestored { get; }
|
||||
bool SupportsOnApplicationUpdate { get; }
|
||||
|
|
|
@ -27,9 +27,9 @@ namespace NzbDrone.Core.Notifications.Join
|
|||
_proxy.SendNotification(ALBUM_DOWNLOADED_TITLE_BRANDED, message.Message, Settings);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
public override void OnArtistAdd(ArtistAddMessage message)
|
||||
{
|
||||
_proxy.SendNotification(ALBUM_DELETED_TITLE_BRANDED, deleteMessage.Message, Settings);
|
||||
_proxy.SendNotification(ARTIST_ADDED_TITLE_BRANDED, message.Message, Settings);
|
||||
}
|
||||
|
||||
public override void OnArtistDelete(ArtistDeleteMessage deleteMessage)
|
||||
|
@ -37,6 +37,11 @@ namespace NzbDrone.Core.Notifications.Join
|
|||
_proxy.SendNotification(ARTIST_DELETED_TITLE_BRANDED, deleteMessage.Message, Settings);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
{
|
||||
_proxy.SendNotification(ALBUM_DELETED_TITLE_BRANDED, deleteMessage.Message, Settings);
|
||||
}
|
||||
|
||||
public override void OnHealthIssue(HealthCheck.HealthCheck message)
|
||||
{
|
||||
_proxy.SendNotification(HEALTH_ISSUE_TITLE_BRANDED, message.Message, Settings);
|
||||
|
|
|
@ -29,9 +29,11 @@ namespace NzbDrone.Core.Notifications.Mailgun
|
|||
_proxy.SendNotification(ALBUM_DOWNLOADED_TITLE, downloadMessage.Message, Settings);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
public override void OnArtistAdd(ArtistAddMessage message)
|
||||
{
|
||||
_proxy.SendNotification(ALBUM_DELETED_TITLE, deleteMessage.Message, Settings);
|
||||
var body = $"{message.Message}";
|
||||
|
||||
_proxy.SendNotification(ARTIST_ADDED_TITLE, body, Settings);
|
||||
}
|
||||
|
||||
public override void OnArtistDelete(ArtistDeleteMessage deleteMessage)
|
||||
|
@ -39,6 +41,11 @@ namespace NzbDrone.Core.Notifications.Mailgun
|
|||
_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 healthCheckMessage)
|
||||
{
|
||||
_proxy.SendNotification(HEALTH_ISSUE_TITLE, healthCheckMessage.Message, Settings);
|
||||
|
|
|
@ -47,16 +47,16 @@ namespace NzbDrone.Core.Notifications.Emby
|
|||
}
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
public override void OnArtistAdd(ArtistAddMessage message)
|
||||
{
|
||||
if (Settings.Notify)
|
||||
{
|
||||
_mediaBrowserService.Notify(Settings, ALBUM_DELETED_TITLE_BRANDED, deleteMessage.Message);
|
||||
_mediaBrowserService.Notify(Settings, ARTIST_ADDED_TITLE_BRANDED, message.Message);
|
||||
}
|
||||
|
||||
if (Settings.UpdateLibrary)
|
||||
{
|
||||
_mediaBrowserService.Update(Settings, deleteMessage.Album.Artist);
|
||||
_mediaBrowserService.Update(Settings, message.Artist);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -73,6 +73,19 @@ namespace NzbDrone.Core.Notifications.Emby
|
|||
}
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
{
|
||||
if (Settings.Notify)
|
||||
{
|
||||
_mediaBrowserService.Notify(Settings, ALBUM_DELETED_TITLE_BRANDED, deleteMessage.Message);
|
||||
}
|
||||
|
||||
if (Settings.UpdateLibrary)
|
||||
{
|
||||
_mediaBrowserService.Update(Settings, deleteMessage.Album.Artist);
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnHealthIssue(HealthCheck.HealthCheck message)
|
||||
{
|
||||
if (Settings.Notify)
|
||||
|
|
|
@ -52,9 +52,9 @@ namespace NzbDrone.Core.Notifications.Notifiarr
|
|||
_proxy.SendNotification(BuildOnTrackRetagPayload(message), Settings);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
public override void OnArtistAdd(ArtistAddMessage message)
|
||||
{
|
||||
_proxy.SendNotification(BuildOnAlbumDelete(deleteMessage), Settings);
|
||||
_proxy.SendNotification(BuildOnArtistAdd(message), Settings);
|
||||
}
|
||||
|
||||
public override void OnArtistDelete(ArtistDeleteMessage deleteMessage)
|
||||
|
@ -62,6 +62,11 @@ namespace NzbDrone.Core.Notifications.Notifiarr
|
|||
_proxy.SendNotification(BuildOnArtistDelete(deleteMessage), Settings);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
{
|
||||
_proxy.SendNotification(BuildOnAlbumDelete(deleteMessage), Settings);
|
||||
}
|
||||
|
||||
public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck)
|
||||
{
|
||||
_proxy.SendNotification(BuildHealthPayload(healthCheck), Settings);
|
||||
|
|
|
@ -12,8 +12,9 @@ namespace NzbDrone.Core.Notifications
|
|||
{
|
||||
protected const string ALBUM_GRABBED_TITLE = "Album Grabbed";
|
||||
protected const string ALBUM_DOWNLOADED_TITLE = "Album Downloaded";
|
||||
protected const string ALBUM_DELETED_TITLE = "Album Deleted";
|
||||
protected const string ARTIST_ADDED_TITLE = "Artist Added";
|
||||
protected const string ARTIST_DELETED_TITLE = "Artist Deleted";
|
||||
protected const string ALBUM_DELETED_TITLE = "Album Deleted";
|
||||
protected const string HEALTH_ISSUE_TITLE = "Health Check Failure";
|
||||
protected const string HEALTH_RESTORED_TITLE = "Health Check Restored";
|
||||
protected const string DOWNLOAD_FAILURE_TITLE = "Download Failed";
|
||||
|
@ -23,8 +24,9 @@ namespace NzbDrone.Core.Notifications
|
|||
|
||||
protected const string ALBUM_GRABBED_TITLE_BRANDED = "Lidarr - " + ALBUM_GRABBED_TITLE;
|
||||
protected const string ALBUM_DOWNLOADED_TITLE_BRANDED = "Lidarr - " + ALBUM_DOWNLOADED_TITLE;
|
||||
protected const string ALBUM_DELETED_TITLE_BRANDED = "Lidarr - " + ALBUM_DELETED_TITLE;
|
||||
protected const string ARTIST_ADDED_TITLE_BRANDED = "Lidarr - " + ARTIST_ADDED_TITLE;
|
||||
protected const string ARTIST_DELETED_TITLE_BRANDED = "Lidarr - " + ARTIST_DELETED_TITLE;
|
||||
protected const string ALBUM_DELETED_TITLE_BRANDED = "Lidarr - " + ALBUM_DELETED_TITLE;
|
||||
protected const string HEALTH_ISSUE_TITLE_BRANDED = "Lidarr - " + HEALTH_ISSUE_TITLE;
|
||||
protected const string HEALTH_RESTORED_TITLE_BRANDED = "Lidarr - " + HEALTH_RESTORED_TITLE;
|
||||
protected const string DOWNLOAD_FAILURE_TITLE_BRANDED = "Lidarr - " + DOWNLOAD_FAILURE_TITLE;
|
||||
|
@ -57,7 +59,7 @@ namespace NzbDrone.Core.Notifications
|
|||
{
|
||||
}
|
||||
|
||||
public virtual void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
public virtual void OnArtistAdd(ArtistAddMessage message)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -65,6 +67,10 @@ namespace NzbDrone.Core.Notifications
|
|||
{
|
||||
}
|
||||
|
||||
public virtual void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
{
|
||||
}
|
||||
|
||||
public virtual void OnHealthIssue(HealthCheck.HealthCheck healthCheck)
|
||||
{
|
||||
}
|
||||
|
@ -97,8 +103,9 @@ namespace NzbDrone.Core.Notifications
|
|||
public bool SupportsOnRename => HasConcreteImplementation("OnRename");
|
||||
public bool SupportsOnReleaseImport => HasConcreteImplementation("OnReleaseImport");
|
||||
public bool SupportsOnUpgrade => SupportsOnReleaseImport;
|
||||
public bool SupportsOnAlbumDelete => HasConcreteImplementation("OnAlbumDelete");
|
||||
public bool SupportsOnArtistAdd => HasConcreteImplementation("OnArtistAdd");
|
||||
public bool SupportsOnArtistDelete => HasConcreteImplementation("OnArtistDelete");
|
||||
public bool SupportsOnAlbumDelete => HasConcreteImplementation("OnAlbumDelete");
|
||||
public bool SupportsOnHealthIssue => HasConcreteImplementation("OnHealthIssue");
|
||||
public bool SupportsOnHealthRestored => HasConcreteImplementation("OnHealthRestored");
|
||||
public bool SupportsOnDownloadFailure => HasConcreteImplementation("OnDownloadFailure");
|
||||
|
|
|
@ -8,8 +8,9 @@ namespace NzbDrone.Core.Notifications
|
|||
public bool OnReleaseImport { get; set; }
|
||||
public bool OnUpgrade { get; set; }
|
||||
public bool OnRename { get; set; }
|
||||
public bool OnAlbumDelete { get; set; }
|
||||
public bool OnArtistAdd { get; set; }
|
||||
public bool OnArtistDelete { get; set; }
|
||||
public bool OnAlbumDelete { get; set; }
|
||||
public bool OnHealthIssue { get; set; }
|
||||
public bool OnHealthRestored { get; set; }
|
||||
public bool OnDownloadFailure { get; set; }
|
||||
|
@ -20,8 +21,9 @@ namespace NzbDrone.Core.Notifications
|
|||
public bool SupportsOnReleaseImport { get; set; }
|
||||
public bool SupportsOnUpgrade { get; set; }
|
||||
public bool SupportsOnRename { get; set; }
|
||||
public bool SupportsOnAlbumDelete { get; set; }
|
||||
public bool SupportsOnArtistAdd { get; set; }
|
||||
public bool SupportsOnArtistDelete { get; set; }
|
||||
public bool SupportsOnAlbumDelete { get; set; }
|
||||
public bool SupportsOnHealthIssue { get; set; }
|
||||
public bool SupportsOnHealthRestored { get; set; }
|
||||
public bool IncludeHealthWarnings { get; set; }
|
||||
|
@ -30,6 +32,6 @@ namespace NzbDrone.Core.Notifications
|
|||
public bool SupportsOnTrackRetag { get; set; }
|
||||
public bool SupportsOnApplicationUpdate { get; set; }
|
||||
|
||||
public override bool Enable => OnGrab || OnReleaseImport || (OnReleaseImport && OnUpgrade) || OnAlbumDelete || OnArtistDelete || OnHealthIssue || OnHealthRestored || OnDownloadFailure || OnImportFailure || OnTrackRetag || OnApplicationUpdate;
|
||||
public override bool Enable => OnGrab || OnReleaseImport || (OnReleaseImport && OnUpgrade) || OnArtistAdd || OnArtistDelete || OnAlbumDelete || OnHealthIssue || OnHealthRestored || OnDownloadFailure || OnImportFailure || OnTrackRetag || OnApplicationUpdate;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,8 +14,9 @@ namespace NzbDrone.Core.Notifications
|
|||
List<INotification> OnReleaseImportEnabled(bool filterBlockedNotifications = true);
|
||||
List<INotification> OnUpgradeEnabled(bool filterBlockedNotifications = true);
|
||||
List<INotification> OnRenameEnabled(bool filterBlockedNotifications = true);
|
||||
List<INotification> OnAlbumDeleteEnabled(bool filterBlockedNotifications = true);
|
||||
List<INotification> OnArtistAddEnabled(bool filterBlockedNotifications = true);
|
||||
List<INotification> OnArtistDeleteEnabled(bool filterBlockedNotifications = true);
|
||||
List<INotification> OnAlbumDeleteEnabled(bool filterBlockedNotifications = true);
|
||||
List<INotification> OnHealthIssueEnabled(bool filterBlockedNotifications = true);
|
||||
List<INotification> OnHealthRestoredEnabled(bool filterBlockedNotifications = true);
|
||||
List<INotification> OnDownloadFailureEnabled(bool filterBlockedNotifications = true);
|
||||
|
@ -81,14 +82,14 @@ namespace NzbDrone.Core.Notifications
|
|||
return GetAvailableProviders().Where(n => ((NotificationDefinition)n.Definition).OnRename).ToList();
|
||||
}
|
||||
|
||||
public List<INotification> OnAlbumDeleteEnabled(bool filterBlockedNotifications = true)
|
||||
public List<INotification> OnArtistAddEnabled(bool filterBlockedNotifications = true)
|
||||
{
|
||||
if (filterBlockedNotifications)
|
||||
{
|
||||
return FilterBlockedNotifications(GetAvailableProviders().Where(n => ((NotificationDefinition)n.Definition).OnAlbumDelete)).ToList();
|
||||
return FilterBlockedNotifications(GetAvailableProviders().Where(n => ((NotificationDefinition)n.Definition).OnArtistAdd)).ToList();
|
||||
}
|
||||
|
||||
return GetAvailableProviders().Where(n => ((NotificationDefinition)n.Definition).OnAlbumDelete).ToList();
|
||||
return GetAvailableProviders().Where(n => ((NotificationDefinition)n.Definition).OnArtistAdd).ToList();
|
||||
}
|
||||
|
||||
public List<INotification> OnArtistDeleteEnabled(bool filterBlockedNotifications = true)
|
||||
|
@ -101,6 +102,16 @@ namespace NzbDrone.Core.Notifications
|
|||
return GetAvailableProviders().Where(n => ((NotificationDefinition)n.Definition).OnArtistDelete).ToList();
|
||||
}
|
||||
|
||||
public List<INotification> OnAlbumDeleteEnabled(bool filterBlockedNotifications = true)
|
||||
{
|
||||
if (filterBlockedNotifications)
|
||||
{
|
||||
return FilterBlockedNotifications(GetAvailableProviders().Where(n => ((NotificationDefinition)n.Definition).OnAlbumDelete)).ToList();
|
||||
}
|
||||
|
||||
return GetAvailableProviders().Where(n => ((NotificationDefinition)n.Definition).OnAlbumDelete).ToList();
|
||||
}
|
||||
|
||||
public List<INotification> OnHealthIssueEnabled(bool filterBlockedNotifications = true)
|
||||
{
|
||||
if (filterBlockedNotifications)
|
||||
|
@ -185,8 +196,9 @@ namespace NzbDrone.Core.Notifications
|
|||
definition.SupportsOnReleaseImport = provider.SupportsOnReleaseImport;
|
||||
definition.SupportsOnUpgrade = provider.SupportsOnUpgrade;
|
||||
definition.SupportsOnRename = provider.SupportsOnRename;
|
||||
definition.SupportsOnAlbumDelete = provider.SupportsOnAlbumDelete;
|
||||
definition.SupportsOnArtistAdd = provider.SupportsOnArtistAdd;
|
||||
definition.SupportsOnArtistDelete = provider.SupportsOnArtistDelete;
|
||||
definition.SupportsOnAlbumDelete = provider.SupportsOnAlbumDelete;
|
||||
definition.SupportsOnHealthIssue = provider.SupportsOnHealthIssue;
|
||||
definition.SupportsOnHealthRestored = provider.SupportsOnHealthRestored;
|
||||
definition.SupportsOnDownloadFailure = provider.SupportsOnDownloadFailure;
|
||||
|
|
|
@ -20,8 +20,9 @@ namespace NzbDrone.Core.Notifications
|
|||
: IHandle<AlbumGrabbedEvent>,
|
||||
IHandle<AlbumImportedEvent>,
|
||||
IHandle<ArtistRenamedEvent>,
|
||||
IHandle<AlbumDeletedEvent>,
|
||||
IHandle<ArtistAddCompletedEvent>,
|
||||
IHandle<ArtistsDeletedEvent>,
|
||||
IHandle<AlbumDeletedEvent>,
|
||||
IHandle<HealthCheckFailedEvent>,
|
||||
IHandle<HealthCheckRestoredEvent>,
|
||||
IHandle<DownloadFailedEvent>,
|
||||
|
@ -214,24 +215,29 @@ namespace NzbDrone.Core.Notifications
|
|||
}
|
||||
}
|
||||
|
||||
public void Handle(AlbumDeletedEvent message)
|
||||
public void Handle(ArtistAddCompletedEvent message)
|
||||
{
|
||||
var deleteMessage = new AlbumDeleteMessage(message.Album, message.DeleteFiles);
|
||||
var artist = message.Artist;
|
||||
var addMessage = new ArtistAddMessage
|
||||
{
|
||||
Artist = artist,
|
||||
Message = artist.Name
|
||||
};
|
||||
|
||||
foreach (var notification in _notificationFactory.OnAlbumDeleteEnabled())
|
||||
foreach (var notification in _notificationFactory.OnArtistAddEnabled())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (ShouldHandleArtist(notification.Definition, deleteMessage.Album.Artist))
|
||||
if (ShouldHandleArtist(notification.Definition, artist))
|
||||
{
|
||||
notification.OnAlbumDelete(deleteMessage);
|
||||
notification.OnArtistAdd(addMessage);
|
||||
_notificationStatusService.RecordSuccess(notification.Definition.Id);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_notificationStatusService.RecordFailure(notification.Definition.Id);
|
||||
_logger.Warn(ex, "Unable to send OnAlbumDelete notification to: " + notification.Definition.Name);
|
||||
_logger.Warn(ex, "Unable to send OnArtistAdd notification to: " + notification.Definition.Name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -261,6 +267,28 @@ namespace NzbDrone.Core.Notifications
|
|||
}
|
||||
}
|
||||
|
||||
public void Handle(AlbumDeletedEvent message)
|
||||
{
|
||||
var deleteMessage = new AlbumDeleteMessage(message.Album, message.DeleteFiles);
|
||||
|
||||
foreach (var notification in _notificationFactory.OnAlbumDeleteEnabled())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (ShouldHandleArtist(notification.Definition, deleteMessage.Album.Artist))
|
||||
{
|
||||
notification.OnAlbumDelete(deleteMessage);
|
||||
_notificationStatusService.RecordSuccess(notification.Definition.Id);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_notificationStatusService.RecordFailure(notification.Definition.Id);
|
||||
_logger.Warn(ex, "Unable to send OnAlbumDelete notification to: " + notification.Definition.Name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Handle(HealthCheckFailedEvent message)
|
||||
{
|
||||
// Don't send health check notifications during the start up grace period,
|
||||
|
|
|
@ -28,9 +28,9 @@ namespace NzbDrone.Core.Notifications.Ntfy
|
|||
_proxy.SendNotification(ALBUM_DOWNLOADED_TITLE_BRANDED, message.Message, Settings);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
public override void OnArtistAdd(ArtistAddMessage message)
|
||||
{
|
||||
_proxy.SendNotification(ALBUM_DELETED_TITLE_BRANDED, deleteMessage.Message, Settings);
|
||||
_proxy.SendNotification(ARTIST_ADDED_TITLE_BRANDED, message.Message, Settings);
|
||||
}
|
||||
|
||||
public override void OnArtistDelete(ArtistDeleteMessage deleteMessage)
|
||||
|
@ -38,6 +38,11 @@ namespace NzbDrone.Core.Notifications.Ntfy
|
|||
_proxy.SendNotification(ARTIST_DELETED_TITLE_BRANDED, deleteMessage.Message, Settings);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
{
|
||||
_proxy.SendNotification(ALBUM_DELETED_TITLE_BRANDED, deleteMessage.Message, Settings);
|
||||
}
|
||||
|
||||
public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck)
|
||||
{
|
||||
_proxy.SendNotification(HEALTH_ISSUE_TITLE_BRANDED, healthCheck.Message, Settings);
|
||||
|
|
|
@ -54,12 +54,9 @@ namespace NzbDrone.Core.Notifications.Plex.Server
|
|||
UpdateIfEnabled(message.Artist);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
public override void OnArtistAdd(ArtistAddMessage message)
|
||||
{
|
||||
if (deleteMessage.DeletedFiles)
|
||||
{
|
||||
UpdateIfEnabled(deleteMessage.Album.Artist);
|
||||
}
|
||||
UpdateIfEnabled(message.Artist);
|
||||
}
|
||||
|
||||
public override void OnArtistDelete(ArtistDeleteMessage deleteMessage)
|
||||
|
@ -70,6 +67,14 @@ namespace NzbDrone.Core.Notifications.Plex.Server
|
|||
}
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
{
|
||||
if (deleteMessage.DeletedFiles)
|
||||
{
|
||||
UpdateIfEnabled(deleteMessage.Album.Artist);
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateIfEnabled(Artist artist)
|
||||
{
|
||||
_plexTvService.Ping(Settings.AuthToken);
|
||||
|
|
|
@ -26,9 +26,9 @@ namespace NzbDrone.Core.Notifications.Prowl
|
|||
_prowlProxy.SendNotification(ALBUM_DOWNLOADED_TITLE, message.Message, Settings);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
public override void OnArtistAdd(ArtistAddMessage message)
|
||||
{
|
||||
_prowlProxy.SendNotification(ALBUM_DELETED_TITLE, deleteMessage.Message, Settings);
|
||||
_prowlProxy.SendNotification(ARTIST_ADDED_TITLE, message.Message, Settings);
|
||||
}
|
||||
|
||||
public override void OnArtistDelete(ArtistDeleteMessage deleteMessage)
|
||||
|
@ -36,6 +36,11 @@ namespace NzbDrone.Core.Notifications.Prowl
|
|||
_prowlProxy.SendNotification(ARTIST_DELETED_TITLE, deleteMessage.Message, Settings);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
{
|
||||
_prowlProxy.SendNotification(ALBUM_DELETED_TITLE, deleteMessage.Message, Settings);
|
||||
}
|
||||
|
||||
public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck)
|
||||
{
|
||||
_prowlProxy.SendNotification(HEALTH_ISSUE_TITLE, healthCheck.Message, Settings);
|
||||
|
|
|
@ -29,9 +29,9 @@ namespace NzbDrone.Core.Notifications.PushBullet
|
|||
_proxy.SendNotification(ALBUM_DOWNLOADED_TITLE_BRANDED, 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)
|
||||
|
@ -39,6 +39,11 @@ namespace NzbDrone.Core.Notifications.PushBullet
|
|||
_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_BRANDED, healthCheck.Message, Settings);
|
||||
|
|
|
@ -36,9 +36,9 @@ namespace NzbDrone.Core.Notifications.Pushcut
|
|||
_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.Artist.Name} added to library", Settings);
|
||||
}
|
||||
|
||||
public override void OnArtistDelete(ArtistDeleteMessage deleteMessage)
|
||||
|
@ -46,6 +46,11 @@ namespace NzbDrone.Core.Notifications.Pushcut
|
|||
_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);
|
||||
|
|
|
@ -26,9 +26,9 @@ namespace NzbDrone.Core.Notifications.Pushover
|
|||
_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)
|
||||
|
@ -36,6 +36,11 @@ namespace NzbDrone.Core.Notifications.Pushover
|
|||
_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);
|
||||
|
|
|
@ -29,9 +29,9 @@ namespace NzbDrone.Core.Notifications.SendGrid
|
|||
_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)
|
||||
|
@ -39,6 +39,11 @@ namespace NzbDrone.Core.Notifications.SendGrid
|
|||
_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);
|
||||
|
|
|
@ -26,9 +26,9 @@ namespace NzbDrone.Core.Notifications.Signal
|
|||
_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)
|
||||
|
@ -36,6 +36,11 @@ namespace NzbDrone.Core.Notifications.Signal
|
|||
_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);
|
||||
|
|
|
@ -26,9 +26,9 @@ namespace NzbDrone.Core.Notifications.Simplepush
|
|||
_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)
|
||||
|
@ -36,6 +36,11 @@ namespace NzbDrone.Core.Notifications.Simplepush
|
|||
_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);
|
||||
|
|
|
@ -70,18 +70,17 @@ namespace NzbDrone.Core.Notifications.Slack
|
|||
_proxy.SendPayload(payload, Settings);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
public override void OnArtistAdd(ArtistAddMessage message)
|
||||
{
|
||||
var attachments = new List<Attachment>
|
||||
{
|
||||
new Attachment
|
||||
{
|
||||
Title = deleteMessage.Album.Title,
|
||||
Text = deleteMessage.DeletedFilesMessage
|
||||
}
|
||||
};
|
||||
{
|
||||
new Attachment
|
||||
{
|
||||
Title = message.Artist.Metadata.Value.Name,
|
||||
}
|
||||
};
|
||||
|
||||
var payload = CreatePayload("Album Deleted", attachments);
|
||||
var payload = CreatePayload("Artist Added", attachments);
|
||||
|
||||
_proxy.SendPayload(payload, Settings);
|
||||
}
|
||||
|
@ -89,19 +88,35 @@ namespace NzbDrone.Core.Notifications.Slack
|
|||
public override void OnArtistDelete(ArtistDeleteMessage deleteMessage)
|
||||
{
|
||||
var attachments = new List<Attachment>
|
||||
{
|
||||
new Attachment
|
||||
{
|
||||
Title = deleteMessage.Artist.Metadata.Value.Name,
|
||||
Text = deleteMessage.DeletedFilesMessage
|
||||
}
|
||||
};
|
||||
{
|
||||
new Attachment
|
||||
{
|
||||
Title = deleteMessage.Artist.Metadata.Value.Name,
|
||||
Text = deleteMessage.DeletedFilesMessage
|
||||
}
|
||||
};
|
||||
|
||||
var payload = CreatePayload("Artist Deleted", attachments);
|
||||
|
||||
_proxy.SendPayload(payload, Settings);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
{
|
||||
var attachments = new List<Attachment>
|
||||
{
|
||||
new Attachment
|
||||
{
|
||||
Title = deleteMessage.Album.Title,
|
||||
Text = deleteMessage.DeletedFilesMessage
|
||||
}
|
||||
};
|
||||
|
||||
var payload = CreatePayload("Album Deleted", attachments);
|
||||
|
||||
_proxy.SendPayload(payload, Settings);
|
||||
}
|
||||
|
||||
public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck)
|
||||
{
|
||||
var attachments = new List<Attachment>
|
||||
|
|
|
@ -41,9 +41,9 @@ namespace NzbDrone.Core.Notifications.Subsonic
|
|||
Update();
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
public override void OnArtistAdd(ArtistAddMessage message)
|
||||
{
|
||||
Notify(Settings, ALBUM_DELETED_TITLE_BRANDED, deleteMessage.Message);
|
||||
Notify(Settings, ARTIST_ADDED_TITLE_BRANDED, message.Message);
|
||||
}
|
||||
|
||||
public override void OnArtistDelete(ArtistDeleteMessage deleteMessage)
|
||||
|
@ -51,6 +51,11 @@ namespace NzbDrone.Core.Notifications.Subsonic
|
|||
Notify(Settings, ARTIST_DELETED_TITLE_BRANDED, deleteMessage.Message);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
{
|
||||
Notify(Settings, ALBUM_DELETED_TITLE_BRANDED, deleteMessage.Message);
|
||||
}
|
||||
|
||||
public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck)
|
||||
{
|
||||
Notify(Settings, HEALTH_ISSUE_TITLE_BRANDED, healthCheck.Message);
|
||||
|
|
|
@ -55,14 +55,11 @@ namespace NzbDrone.Core.Notifications.Synology
|
|||
}
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
public override void OnArtistAdd(ArtistAddMessage message)
|
||||
{
|
||||
if (deleteMessage.DeletedFiles)
|
||||
if (Settings.UpdateLibrary)
|
||||
{
|
||||
if (Settings.UpdateLibrary)
|
||||
{
|
||||
_indexerProxy.DeleteFolder(deleteMessage.Album.Artist.Value.Path);
|
||||
}
|
||||
_indexerProxy.UpdateFolder(message.Artist.Path);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -77,6 +74,17 @@ namespace NzbDrone.Core.Notifications.Synology
|
|||
}
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
{
|
||||
if (deleteMessage.DeletedFiles)
|
||||
{
|
||||
if (Settings.UpdateLibrary)
|
||||
{
|
||||
_indexerProxy.DeleteFolder(deleteMessage.Album.Artist.Value.Path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override ValidationResult Test()
|
||||
{
|
||||
var failures = new List<ValidationFailure>();
|
||||
|
|
|
@ -26,9 +26,9 @@ namespace NzbDrone.Core.Notifications.Telegram
|
|||
_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)
|
||||
|
@ -36,6 +36,11 @@ namespace NzbDrone.Core.Notifications.Telegram
|
|||
_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);
|
||||
|
|
|
@ -28,9 +28,9 @@ namespace NzbDrone.Core.Notifications.Twitter
|
|||
_twitterService.SendNotification($"Imported: {message.Message}", Settings);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
public override void OnArtistAdd(ArtistAddMessage message)
|
||||
{
|
||||
_twitterService.SendNotification($"Album Deleted: {deleteMessage.Message}", Settings);
|
||||
_twitterService.SendNotification($"Artist Added: {message.Message}", Settings);
|
||||
}
|
||||
|
||||
public override void OnArtistDelete(ArtistDeleteMessage deleteMessage)
|
||||
|
@ -38,6 +38,11 @@ namespace NzbDrone.Core.Notifications.Twitter
|
|||
_twitterService.SendNotification($"Artist Deleted: {deleteMessage.Message}", Settings);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
{
|
||||
_twitterService.SendNotification($"Album Deleted: {deleteMessage.Message}", Settings);
|
||||
}
|
||||
|
||||
public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck)
|
||||
{
|
||||
_twitterService.SendNotification($"Health Issue: {healthCheck.Message}", Settings);
|
||||
|
|
|
@ -50,9 +50,9 @@ namespace NzbDrone.Core.Notifications.Webhook
|
|||
_proxy.SendWebhook(BuildOnTrackRetagPayload(message), Settings);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
public override void OnArtistAdd(ArtistAddMessage message)
|
||||
{
|
||||
_proxy.SendWebhook(BuildOnAlbumDelete(deleteMessage), Settings);
|
||||
_proxy.SendWebhook(BuildOnArtistAdd(message), Settings);
|
||||
}
|
||||
|
||||
public override void OnArtistDelete(ArtistDeleteMessage deleteMessage)
|
||||
|
@ -60,6 +60,11 @@ namespace NzbDrone.Core.Notifications.Webhook
|
|||
_proxy.SendWebhook(BuildOnArtistDelete(deleteMessage), Settings);
|
||||
}
|
||||
|
||||
public override void OnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
{
|
||||
_proxy.SendWebhook(BuildOnAlbumDelete(deleteMessage), Settings);
|
||||
}
|
||||
|
||||
public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck)
|
||||
{
|
||||
_proxy.SendWebhook(BuildHealthPayload(healthCheck), Settings);
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
namespace NzbDrone.Core.Notifications.Webhook
|
||||
{
|
||||
public class WebhookArtistAddPayload : WebhookPayload
|
||||
{
|
||||
public WebhookArtist Artist { get; set; }
|
||||
}
|
||||
}
|
|
@ -130,15 +130,14 @@ namespace NzbDrone.Core.Notifications.Webhook
|
|||
};
|
||||
}
|
||||
|
||||
public WebhookAlbumDeletePayload BuildOnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
protected WebhookArtistAddPayload BuildOnArtistAdd(ArtistAddMessage addMessage)
|
||||
{
|
||||
return new WebhookAlbumDeletePayload
|
||||
return new WebhookArtistAddPayload
|
||||
{
|
||||
EventType = WebhookEventType.AlbumDelete,
|
||||
EventType = WebhookEventType.ArtistAdd,
|
||||
InstanceName = _configFileProvider.InstanceName,
|
||||
ApplicationUrl = _configService.ApplicationUrl,
|
||||
Album = new WebhookAlbum(deleteMessage.Album),
|
||||
DeletedFiles = deleteMessage.DeletedFiles
|
||||
Artist = new WebhookArtist(addMessage.Artist),
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -154,6 +153,18 @@ namespace NzbDrone.Core.Notifications.Webhook
|
|||
};
|
||||
}
|
||||
|
||||
public WebhookAlbumDeletePayload BuildOnAlbumDelete(AlbumDeleteMessage deleteMessage)
|
||||
{
|
||||
return new WebhookAlbumDeletePayload
|
||||
{
|
||||
EventType = WebhookEventType.AlbumDelete,
|
||||
InstanceName = _configFileProvider.InstanceName,
|
||||
ApplicationUrl = _configService.ApplicationUrl,
|
||||
Album = new WebhookAlbum(deleteMessage.Album),
|
||||
DeletedFiles = deleteMessage.DeletedFiles
|
||||
};
|
||||
}
|
||||
|
||||
protected WebhookHealthPayload BuildHealthPayload(HealthCheck.HealthCheck healthCheck)
|
||||
{
|
||||
return new WebhookHealthPayload
|
||||
|
|
|
@ -14,8 +14,9 @@ namespace NzbDrone.Core.Notifications.Webhook
|
|||
DownloadFailure,
|
||||
ImportFailure,
|
||||
Rename,
|
||||
AlbumDelete,
|
||||
ArtistAdd,
|
||||
ArtistDelete,
|
||||
AlbumDelete,
|
||||
Health,
|
||||
Retag,
|
||||
ApplicationUpdate,
|
||||
|
|
|
@ -42,6 +42,25 @@ namespace NzbDrone.Core.Notifications.Xbmc
|
|||
UpdateAndClean(artist);
|
||||
}
|
||||
|
||||
public override void OnArtistAdd(ArtistAddMessage message)
|
||||
{
|
||||
const string header = "Lidarr - Artist Added";
|
||||
|
||||
Notify(Settings, header, message.Message);
|
||||
UpdateAndClean(message.Artist, true);
|
||||
}
|
||||
|
||||
public override void OnArtistDelete(ArtistDeleteMessage deleteMessage)
|
||||
{
|
||||
if (deleteMessage.DeletedFiles)
|
||||
{
|
||||
const string header = "Lidarr - Artist Deleted";
|
||||
|
||||
Notify(Settings, header, deleteMessage.Message);
|
||||
UpdateAndClean(deleteMessage.Artist, true);
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck)
|
||||
{
|
||||
Notify(Settings, HEALTH_ISSUE_TITLE_BRANDED, healthCheck.Message);
|
||||
|
|
Loading…
Reference in New Issue