Skip to content

Commit 474f4bc

Browse files
New: On Episode File Delete For Upgrade notification option
1 parent ec05843 commit 474f4bc

File tree

15 files changed

+77
-4
lines changed

15 files changed

+77
-4
lines changed

frontend/src/Settings/Notifications/Notifications/EditNotificationModalContent.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,15 @@ function EditNotificationModalContent(props) {
4444
onRename,
4545
onSeriesDelete,
4646
onEpisodeFileDelete,
47+
onEpisodeFileDeleteForUpgrade,
4748
onHealthIssue,
4849
supportsOnGrab,
4950
supportsOnDownload,
5051
supportsOnUpgrade,
5152
supportsOnRename,
5253
supportsOnSeriesDelete,
5354
supportsOnEpisodeFileDelete,
55+
supportsOnEpisodeFileDeleteForUpgrade,
5456
supportsOnHealthIssue,
5557
includeHealthWarnings,
5658
tags,
@@ -180,6 +182,23 @@ function EditNotificationModalContent(props) {
180182
/>
181183
</FormGroup>
182184

185+
{
186+
onEpisodeFileDelete.value ?
187+
<FormGroup>
188+
<FormLabel>On Episode File Delete For Upgrade</FormLabel>
189+
190+
<FormInputGroup
191+
type={inputTypes.CHECK}
192+
name="onEpisodeFileDeleteForUpgrade"
193+
helpText="Be notified when episode files are deleted for upgrades"
194+
isDisabled={!supportsOnEpisodeFileDeleteForUpgrade.value}
195+
{...onEpisodeFileDeleteForUpgrade}
196+
onChange={onInputChange}
197+
/>
198+
</FormGroup> :
199+
null
200+
}
201+
183202
<FormGroup>
184203
<FormLabel>On Health Issue</FormLabel>
185204

frontend/src/Settings/Notifications/Notifications/Notification.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,15 @@ class Notification extends Component {
6060
onRename,
6161
onSeriesDelete,
6262
onEpisodeFileDelete,
63+
onEpisodeFileDeleteForUpgrade,
6364
onHealthIssue,
6465
supportsOnGrab,
6566
supportsOnDownload,
6667
supportsOnUpgrade,
6768
supportsOnRename,
6869
supportsOnSeriesDelete,
6970
supportsOnEpisodeFileDelete,
71+
supportsOnEpisodeFileDeleteForUpgrade,
7072
supportsOnHealthIssue
7173
} = this.props;
7274

@@ -136,6 +138,14 @@ class Notification extends Component {
136138
null
137139
}
138140

141+
{
142+
supportsOnEpisodeFileDeleteForUpgrade && onEpisodeFileDelete && onEpisodeFileDeleteForUpgrade ?
143+
<Label kind={kinds.SUCCESS}>
144+
On Episode File Delete For Upgrade
145+
</Label> :
146+
null
147+
}
148+
139149
{
140150
!onGrab && !onDownload && !onRename && !onHealthIssue && !onSeriesDelete && !onEpisodeFileDelete ?
141151
<Label
@@ -177,11 +187,13 @@ Notification.propTypes = {
177187
onRename: PropTypes.bool.isRequired,
178188
onSeriesDelete: PropTypes.bool.isRequired,
179189
onEpisodeFileDelete: PropTypes.bool.isRequired,
190+
onEpisodeFileDeleteForUpgrade: PropTypes.bool.isRequired,
180191
onHealthIssue: PropTypes.bool.isRequired,
181192
supportsOnGrab: PropTypes.bool.isRequired,
182193
supportsOnDownload: PropTypes.bool.isRequired,
183194
supportsOnSeriesDelete: PropTypes.bool.isRequired,
184195
supportsOnEpisodeFileDelete: PropTypes.bool.isRequired,
196+
supportsOnEpisodeFileDeleteForUpgrade: PropTypes.bool.isRequired,
185197
supportsOnUpgrade: PropTypes.bool.isRequired,
186198
supportsOnRename: PropTypes.bool.isRequired,
187199
supportsOnHealthIssue: PropTypes.bool.isRequired,

frontend/src/Store/Actions/Settings/notifications.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ export default {
108108
selectedSchema.onRename = selectedSchema.supportsOnRename;
109109
selectedSchema.OnSeriesDelete = selectedSchema.supportsOnSeriesDelete;
110110
selectedSchema.OnEpisodeFileDelete = selectedSchema.supportsOnEpisodeFileDelete;
111+
selectedSchema.OnEpisodeFileDeleteForUpgrade = selectedSchema.supportsOnEpisodeFileDeleteForUpgrade;
111112

112113
return selectedSchema;
113114
});

src/NzbDrone.Core.Test/NotificationTests/NotificationBaseFixture.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ public void should_support_all_if_implemented()
116116
notification.SupportsOnRename.Should().BeTrue();
117117
notification.SupportsOnSeriesDelete.Should().BeTrue();
118118
notification.SupportsOnEpisodeFileDelete.Should().BeTrue();
119+
notification.SupportsOnEpisodeFileDeleteForUpgrade.Should().BeTrue();
119120
notification.SupportsOnHealthIssue.Should().BeTrue();
120121
}
121122

@@ -131,6 +132,7 @@ public void should_support_none_if_none_are_implemented()
131132
notification.SupportsOnRename.Should().BeFalse();
132133
notification.SupportsOnSeriesDelete.Should().BeFalse();
133134
notification.SupportsOnEpisodeFileDelete.Should().BeFalse();
135+
notification.SupportsOnEpisodeFileDeleteForUpgrade.Should().BeFalse();
134136
notification.SupportsOnHealthIssue.Should().BeFalse();
135137
}
136138
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using FluentMigrator;
2+
using NzbDrone.Core.Datastore.Migration.Framework;
3+
4+
namespace NzbDrone.Core.Datastore.Migration
5+
{
6+
[Migration(153)]
7+
public class add_on_episodefiledelete_for_upgrade : NzbDroneMigrationBase
8+
{
9+
protected override void MainDbUpgrade()
10+
{
11+
Alter.Table("Notifications").AddColumn("OnEpisodeFileDeleteForUpgrade").AsBoolean().WithDefaultValue(1);
12+
}
13+
}
14+
}
15+

src/NzbDrone.Core/Datastore/TableMapping.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ public static void Map()
7676
.Ignore(i => i.SupportsOnRename)
7777
.Ignore(i => i.SupportsOnSeriesDelete)
7878
.Ignore(i => i.SupportsOnEpisodeFileDelete)
79+
.Ignore(i => i.SupportsOnEpisodeFileDeleteForUpgrade)
7980
.Ignore(i => i.SupportsOnHealthIssue);
8081

8182
Mapper.Entity<MetadataDefinition>().RegisterDefinition("Metadata")

src/NzbDrone.Core/Notifications/CustomScript/CustomScript.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ public override void OnEpisodeFileDelete(EpisodeDeleteMessage deleteMessage)
135135
var environmentVariables = new StringDictionary();
136136

137137
environmentVariables.Add("Sonarr_EventType", "EpisodeFileDelete");
138+
environmentVariables.Add("Sonarr_EpisodeFile_DeleteReason", deleteMessage.Reason.ToString());
138139
environmentVariables.Add("Sonarr_Series_Id", series.Id.ToString());
139140
environmentVariables.Add("Sonarr_Series_Title", series.Title);
140141
environmentVariables.Add("Sonarr_Series_Path", series.Path);

src/NzbDrone.Core/Notifications/INotification.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public interface INotification : IProvider
2020
bool SupportsOnRename { get; }
2121
bool SupportsOnSeriesDelete { get; }
2222
bool SupportsOnEpisodeFileDelete { get; }
23+
bool SupportsOnEpisodeFileDeleteForUpgrade { get; }
2324
bool SupportsOnHealthIssue { get; }
2425
}
2526
}

src/NzbDrone.Core/Notifications/NotificationBase.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ public virtual void ProcessQueue()
7575
public bool SupportsOnUpgrade => SupportsOnDownload;
7676
public bool SupportsOnSeriesDelete => HasConcreteImplementation("OnSeriesDelete");
7777
public bool SupportsOnEpisodeFileDelete => HasConcreteImplementation("OnEpisodeFileDelete");
78+
public bool SupportsOnEpisodeFileDeleteForUpgrade => SupportsOnEpisodeFileDelete;
7879
public bool SupportsOnHealthIssue => HasConcreteImplementation("OnHealthIssue");
7980

8081
protected TSettings Settings => (TSettings)Definition.Settings;

src/NzbDrone.Core/Notifications/NotificationDefinition.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,18 @@ public class NotificationDefinition : ProviderDefinition
1010
public bool OnRename { get; set; }
1111
public bool OnSeriesDelete { get; set; }
1212
public bool OnEpisodeFileDelete { get; set; }
13+
public bool OnEpisodeFileDeleteForUpgrade { get; set; }
1314
public bool OnHealthIssue { get; set; }
1415
public bool SupportsOnGrab { get; set; }
1516
public bool SupportsOnDownload { get; set; }
1617
public bool SupportsOnUpgrade { get; set; }
1718
public bool SupportsOnRename { get; set; }
1819
public bool SupportsOnSeriesDelete { get; set; }
1920
public bool SupportsOnEpisodeFileDelete { get; set; }
21+
public bool SupportsOnEpisodeFileDeleteForUpgrade { get; set; }
2022
public bool SupportsOnHealthIssue { get; set; }
2123
public bool IncludeHealthWarnings { get; set; }
2224

23-
public override bool Enable => OnGrab || OnDownload || (OnDownload && OnUpgrade) || OnSeriesDelete || OnEpisodeFileDelete || OnHealthIssue;
25+
public override bool Enable => OnGrab || OnDownload || (OnDownload && OnUpgrade) || OnSeriesDelete || OnEpisodeFileDelete || OnEpisodeFileDeleteForUpgrade || OnHealthIssue;
2426
}
2527
}

0 commit comments

Comments
 (0)