From b1f128fee856acef8afdb562d3719ccc24dc1110 Mon Sep 17 00:00:00 2001 From: Willie Slepecki Date: Fri, 4 Oct 2024 13:47:43 -0400 Subject: [PATCH 01/15] Add retroactive tag application to import lists This commit introduces a new feature allowing tags to be retroactively applied to movies already in the database. Changes include database migration for the new column, updates to the frontend to manage this feature, and backend logic to handle retroactive tagging. --- .../ImportLists/EditImportListModalContent.js | 13 +++++++++++ .../Manage/ManageImportListsModalContent.tsx | 6 +++++ .../Manage/ManageImportListsModalRow.tsx | 6 +++++ src/Directory.Build.props | 2 +- .../241_add_retroapply_to_importlists.cs | 13 +++++++++++ .../ImportLists/ImportListSyncService.cs | 23 ++++++++++++++++++- src/NzbDrone.Core/Localization/Core/en.json | 2 ++ .../ThingiProvider/ProviderDefinition.cs | 1 + src/Radarr.Api.V3/ProviderResource.cs | 5 +++- 9 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 src/NzbDrone.Core/Datastore/Migration/241_add_retroapply_to_importlists.cs diff --git a/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.js b/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.js index d80427d48e..03756adec9 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.js +++ b/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.js @@ -55,6 +55,7 @@ function EditImportListModalContent(props) { rootFolderPath, searchOnAdd, tags, + retroApplyTags, fields, message } = item; @@ -225,6 +226,18 @@ function EditImportListModalContent(props) { /> + + {translate('RadarrRetroactiveApply')} + + + + { fields.map((field) => { return ( diff --git a/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalContent.tsx b/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalContent.tsx index 37e962a260..a854c31c40 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalContent.tsx +++ b/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalContent.tsx @@ -82,6 +82,12 @@ const COLUMNS = [ isSortable: true, isVisible: true, }, + { + name: 'retroApplyTags', + label: () => translate('RetroApplyTags'), + isSortable: true, + isVisible: true, + }, ]; interface ManageImportListsModalContentProps { diff --git a/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.tsx b/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.tsx index 829ed94c49..92e6b2b013 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.tsx +++ b/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.tsx @@ -19,6 +19,7 @@ interface ManageImportListsModalRowProps { minimumAvailability: string; implementation: string; tags: number[]; + retroApplyTags: boolean; enabled: boolean; enableAuto: boolean; columns: Column[]; @@ -38,6 +39,7 @@ function ManageImportListsModalRow(props: ManageImportListsModalRowProps) { enabled, enableAuto, tags, + retroApplyTags, onSelectedChange, } = props; @@ -91,6 +93,10 @@ function ManageImportListsModalRow(props: ManageImportListsModalRowProps) { + + + {retroApplyTags ? translate('Yes') : translate('No')} + ); } diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 174d1cb8a2..1e722177f0 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -221,7 +221,7 @@ <_UsingDefaultRuntimeIdentifier>true - osx-x64 + osx-$(Architecture) diff --git a/src/NzbDrone.Core/Datastore/Migration/241_add_retroapply_to_importlists.cs b/src/NzbDrone.Core/Datastore/Migration/241_add_retroapply_to_importlists.cs new file mode 100644 index 0000000000..2b80ffd0ca --- /dev/null +++ b/src/NzbDrone.Core/Datastore/Migration/241_add_retroapply_to_importlists.cs @@ -0,0 +1,13 @@ +using FluentMigrator; +using NzbDrone.Core.Datastore.Migration.Framework; + +namespace NzbDrone.Core.Datastore.Migration; + +[Migration(241)] +public class add_retroapply_to_importlists : NzbDroneMigrationBase +{ + protected override void MainDbUpgrade() + { + Alter.Table("ImportLists").AddColumn("RetroApplyTags").AsInt32().WithDefaultValue(0); + } +} diff --git a/src/NzbDrone.Core/ImportLists/ImportListSyncService.cs b/src/NzbDrone.Core/ImportLists/ImportListSyncService.cs index 60c118a6a0..84c5da6b4c 100644 --- a/src/NzbDrone.Core/ImportLists/ImportListSyncService.cs +++ b/src/NzbDrone.Core/ImportLists/ImportListSyncService.cs @@ -81,9 +81,10 @@ private void ProcessMovieReport(ImportListDefinition importList, ImportListMovie return; } - // Check to see if movie in DB + // Check to see if movie in DB and maybe apply retro-tags if (dbMovies.Contains(report.TmdbId)) { + RetroApplyTags(importList, report); _logger.Debug("{0} [{1}] Rejected, Movie Exists in DB", report.TmdbId, report.Title); return; } @@ -123,6 +124,26 @@ private void ProcessMovieReport(ImportListDefinition importList, ImportListMovie } } + private void RetroApplyTags(ImportListDefinition importList, ImportListMovie report) + { + if (importList.RetroApplyTags) + { + var movie = _movieService.FindByTmdbId(report.TmdbId); + + var preCount = movie.Tags.Count; + foreach (var tag in importList.Tags) + { + movie.Tags.Add(tag); + } + + if (preCount != movie.Tags.Count) + { + _movieService.UpdateMovie(movie); + _logger.Debug("{0} [{1}] Retro-Actively added tags to movie", report.TmdbId, report.Title); + } + } + } + private void ProcessListItems(ImportListFetchResult listFetchResult) { listFetchResult.Movies = listFetchResult.Movies.DistinctBy(x => diff --git a/src/NzbDrone.Core/Localization/Core/en.json b/src/NzbDrone.Core/Localization/Core/en.json index 884c7394ce..f21cd84a69 100644 --- a/src/NzbDrone.Core/Localization/Core/en.json +++ b/src/NzbDrone.Core/Localization/Core/en.json @@ -841,6 +841,7 @@ "ListSyncLevelHelpText": "Movies in library will be handled based on your selection if they fall off or do not appear on your list(s)", "ListSyncLevelHelpTextWarning": "Movie files will be permanently deleted, this can result in wiping your library if your lists are empty", "ListTagsHelpText": "Tags list items will be added with", + "RetroApplyListTagsHelpText": "Retro-Actively apply tags to movies already in Radarr", "ListWillRefreshEveryInterval": "List will refresh every {refreshInterval}", "Lists": "Lists", "Loading": "Loading", @@ -1366,6 +1367,7 @@ "Queued": "Queued", "QuickImport": "Move Automatically", "RadarrTags": "{appName} Tags", + "RadarrRetroactiveApply": "Retro-Apply Tags", "Rating": "Rating", "Ratings": "Ratings", "ReadTheWikiForMoreInformation": "Read the Wiki for more information", diff --git a/src/NzbDrone.Core/ThingiProvider/ProviderDefinition.cs b/src/NzbDrone.Core/ThingiProvider/ProviderDefinition.cs index a4c5db45b0..449af4c7ae 100644 --- a/src/NzbDrone.Core/ThingiProvider/ProviderDefinition.cs +++ b/src/NzbDrone.Core/ThingiProvider/ProviderDefinition.cs @@ -28,6 +28,7 @@ protected ProviderDefinition() public ProviderMessage Message { get; set; } public HashSet Tags { get; set; } + public bool RetroApplyTags { get; set; } [MemberwiseEqualityIgnore] public IProviderConfig Settings diff --git a/src/Radarr.Api.V3/ProviderResource.cs b/src/Radarr.Api.V3/ProviderResource.cs index c5e8a1cd6f..4cecc4f0b4 100644 --- a/src/Radarr.Api.V3/ProviderResource.cs +++ b/src/Radarr.Api.V3/ProviderResource.cs @@ -16,6 +16,7 @@ public class ProviderResource : RestResource public string InfoLink { get; set; } public ProviderMessage Message { get; set; } public HashSet Tags { get; set; } + public bool RetroApplyTags { get; set; } public List Presets { get; set; } } @@ -36,6 +37,7 @@ public virtual TProviderResource ToResource(TProviderDefinition definition) ConfigContract = definition.ConfigContract, Message = definition.Message, Tags = definition.Tags, + RetroApplyTags = definition.RetroApplyTags, Fields = SchemaBuilder.ToSchema(definition.Settings), // radarr/supported is an disambiguation page. the # should be a header on the page with appropriate details/link @@ -60,7 +62,8 @@ public virtual TProviderDefinition ToModel(TProviderResource resource, TProvider Implementation = resource.Implementation, ConfigContract = resource.ConfigContract, Message = resource.Message, - Tags = resource.Tags + Tags = resource.Tags, + RetroApplyTags = resource.RetroApplyTags, }; var configContract = ReflectionExtensions.CoreAssembly.FindTypeByName(definition.ConfigContract); From 5f22a4cb3f4529a8d6bd01f2360a57529e2da50b Mon Sep 17 00:00:00 2001 From: Willie Slepecki Date: Sat, 5 Oct 2024 17:15:37 -0400 Subject: [PATCH 02/15] Update localization file with retroactive tagging translation Moved and added translations for retroactive tag application. Corrected minor organizational issues in the JSON file to maintain consistency. --- src/NzbDrone.Core/Localization/Core/en.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/NzbDrone.Core/Localization/Core/en.json b/src/NzbDrone.Core/Localization/Core/en.json index f21cd84a69..171aacab2f 100644 --- a/src/NzbDrone.Core/Localization/Core/en.json +++ b/src/NzbDrone.Core/Localization/Core/en.json @@ -841,7 +841,6 @@ "ListSyncLevelHelpText": "Movies in library will be handled based on your selection if they fall off or do not appear on your list(s)", "ListSyncLevelHelpTextWarning": "Movie files will be permanently deleted, this can result in wiping your library if your lists are empty", "ListTagsHelpText": "Tags list items will be added with", - "RetroApplyListTagsHelpText": "Retro-Actively apply tags to movies already in Radarr", "ListWillRefreshEveryInterval": "List will refresh every {refreshInterval}", "Lists": "Lists", "Loading": "Loading", @@ -1366,8 +1365,8 @@ "QueueLoadError": "Failed to load Queue", "Queued": "Queued", "QuickImport": "Move Automatically", - "RadarrTags": "{appName} Tags", "RadarrRetroactiveApply": "Retro-Apply Tags", + "RadarrTags": "{appName} Tags", "Rating": "Rating", "Ratings": "Ratings", "ReadTheWikiForMoreInformation": "Read the Wiki for more information", @@ -1513,6 +1512,8 @@ "Result": "Result", "Retention": "Retention", "RetentionHelpText": "Usenet only: Set to zero to set for unlimited retention", + "RetroApplyListTagsHelpText": "Retro-Actively apply tags to movies already in Radarr", + "RetroApplyTags": "Retro-Actively Apply Tags", "RetryingDownloadOn": "Retrying download on {date} at {time}", "RootFolder": "Root Folder", "RootFolderCheckMultipleMessage": "Multiple root folders are missing: {rootFolderPaths}", From 55206d232d43d6fc77894bdd57deb6d809328a9f Mon Sep 17 00:00:00 2001 From: Steel City Phantom Date: Tue, 8 Oct 2024 11:09:39 -0400 Subject: [PATCH 03/15] Update Directory.Build.props moving to another PR --- src/Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 1e722177f0..174d1cb8a2 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -221,7 +221,7 @@ <_UsingDefaultRuntimeIdentifier>true - osx-$(Architecture) + osx-x64 From a327b84a87fba1f11401310a530348d0d16783e7 Mon Sep 17 00:00:00 2001 From: Steel City Phantom Date: Tue, 8 Oct 2024 11:10:56 -0400 Subject: [PATCH 04/15] Update Directory.Build.props configured to auto-detect if building on an ARM mac or not --- src/Directory.Build.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 174d1cb8a2..1e722177f0 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -221,7 +221,7 @@ <_UsingDefaultRuntimeIdentifier>true - osx-x64 + osx-$(Architecture) From 0cb0a2f46ef4502eccc09935b9314b488fbb565b Mon Sep 17 00:00:00 2001 From: Steel City Phantom Date: Tue, 8 Oct 2024 13:36:47 -0400 Subject: [PATCH 05/15] Update ImportList.ts --- frontend/src/typings/ImportList.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/typings/ImportList.ts b/frontend/src/typings/ImportList.ts index 849b20be01..11945ce6ba 100644 --- a/frontend/src/typings/ImportList.ts +++ b/frontend/src/typings/ImportList.ts @@ -24,6 +24,7 @@ interface ImportList extends ModelBase { configContract: string; infoLink: string; tags: number[]; + retroApplyTags: boolean; } export default ImportList; From fb297adcf0351b7df6cc02ac89177d4e8c04eb1b Mon Sep 17 00:00:00 2001 From: Steel City Phantom Date: Tue, 8 Oct 2024 14:54:50 -0400 Subject: [PATCH 06/15] Add RetroApplyTags column to additional tables Enhanced the migration script to include the RetroApplyTags column for the Notifications and Indexers tables, ensuring consistent data structure across related tables. This column is added with a default value of 0, similar to the ImportLists table. --- .../Datastore/Migration/241_add_retroapply_to_importlists.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/NzbDrone.Core/Datastore/Migration/241_add_retroapply_to_importlists.cs b/src/NzbDrone.Core/Datastore/Migration/241_add_retroapply_to_importlists.cs index 2b80ffd0ca..4ff343a636 100644 --- a/src/NzbDrone.Core/Datastore/Migration/241_add_retroapply_to_importlists.cs +++ b/src/NzbDrone.Core/Datastore/Migration/241_add_retroapply_to_importlists.cs @@ -9,5 +9,7 @@ public class add_retroapply_to_importlists : NzbDroneMigrationBase protected override void MainDbUpgrade() { Alter.Table("ImportLists").AddColumn("RetroApplyTags").AsInt32().WithDefaultValue(0); + Alter.Table("Notifications").AddColumn("RetroApplyTags").AsInt32().WithDefaultValue(0); + Alter.Table("Indexers").AddColumn("RetroApplyTags").AsInt32().WithDefaultValue(0); } } From dae2c030aa3045421f53fb65235eef9877a78111 Mon Sep 17 00:00:00 2001 From: Steel City Phantom Date: Tue, 8 Oct 2024 16:43:17 -0400 Subject: [PATCH 07/15] Add RetroApplyTags column to multiple tables Changed the RetroApplyTags column type in ImportLists to Boolean. Added RetroApplyTags column to Notifications, Indexers, and DownloadClients with a default value of false. This ensures consistent behavior across these tables. --- .../Migration/241_add_retroapply_to_importlists.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/NzbDrone.Core/Datastore/Migration/241_add_retroapply_to_importlists.cs b/src/NzbDrone.Core/Datastore/Migration/241_add_retroapply_to_importlists.cs index 4ff343a636..82396a6529 100644 --- a/src/NzbDrone.Core/Datastore/Migration/241_add_retroapply_to_importlists.cs +++ b/src/NzbDrone.Core/Datastore/Migration/241_add_retroapply_to_importlists.cs @@ -8,8 +8,9 @@ public class add_retroapply_to_importlists : NzbDroneMigrationBase { protected override void MainDbUpgrade() { - Alter.Table("ImportLists").AddColumn("RetroApplyTags").AsInt32().WithDefaultValue(0); - Alter.Table("Notifications").AddColumn("RetroApplyTags").AsInt32().WithDefaultValue(0); - Alter.Table("Indexers").AddColumn("RetroApplyTags").AsInt32().WithDefaultValue(0); + Alter.Table("ImportLists").AddColumn("RetroApplyTags").AsBoolean().WithDefaultValue(false); + Alter.Table("Notifications").AddColumn("RetroApplyTags").AsBoolean().WithDefaultValue(false); + Alter.Table("Indexers").AddColumn("RetroApplyTags").AsBoolean().WithDefaultValue(false); + Alter.Table("DownloadClients").AddColumn("RetroApplyTags").AsBoolean().WithDefaultValue(false); } } From 8730c26de00fce83130aa5f5c1d91588c89dfad5 Mon Sep 17 00:00:00 2001 From: scphantm Date: Sun, 13 Oct 2024 10:46:02 -0400 Subject: [PATCH 08/15] Remove RetroApplyTags from multiple tables Removed the RetroApplyTags field from ProviderDefinition, Notifications, Indexers, DownloadClients, and relevant API resources. RetroApplyTags is now exclusively managed within ImportListDefinition. --- .../Datastore/Migration/241_add_retroapply_to_importlists.cs | 3 --- src/NzbDrone.Core/ImportLists/ImportListDefinition.cs | 1 + src/NzbDrone.Core/ThingiProvider/ProviderDefinition.cs | 1 - src/Radarr.Api.V3/ProviderResource.cs | 4 +--- 4 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/NzbDrone.Core/Datastore/Migration/241_add_retroapply_to_importlists.cs b/src/NzbDrone.Core/Datastore/Migration/241_add_retroapply_to_importlists.cs index 82396a6529..e92decbc0b 100644 --- a/src/NzbDrone.Core/Datastore/Migration/241_add_retroapply_to_importlists.cs +++ b/src/NzbDrone.Core/Datastore/Migration/241_add_retroapply_to_importlists.cs @@ -9,8 +9,5 @@ public class add_retroapply_to_importlists : NzbDroneMigrationBase protected override void MainDbUpgrade() { Alter.Table("ImportLists").AddColumn("RetroApplyTags").AsBoolean().WithDefaultValue(false); - Alter.Table("Notifications").AddColumn("RetroApplyTags").AsBoolean().WithDefaultValue(false); - Alter.Table("Indexers").AddColumn("RetroApplyTags").AsBoolean().WithDefaultValue(false); - Alter.Table("DownloadClients").AddColumn("RetroApplyTags").AsBoolean().WithDefaultValue(false); } } diff --git a/src/NzbDrone.Core/ImportLists/ImportListDefinition.cs b/src/NzbDrone.Core/ImportLists/ImportListDefinition.cs index 277f26eb29..4be4f50638 100644 --- a/src/NzbDrone.Core/ImportLists/ImportListDefinition.cs +++ b/src/NzbDrone.Core/ImportLists/ImportListDefinition.cs @@ -16,6 +16,7 @@ public class ImportListDefinition : ProviderDefinition, IEquatable Enabled; diff --git a/src/NzbDrone.Core/ThingiProvider/ProviderDefinition.cs b/src/NzbDrone.Core/ThingiProvider/ProviderDefinition.cs index 449af4c7ae..a4c5db45b0 100644 --- a/src/NzbDrone.Core/ThingiProvider/ProviderDefinition.cs +++ b/src/NzbDrone.Core/ThingiProvider/ProviderDefinition.cs @@ -28,7 +28,6 @@ protected ProviderDefinition() public ProviderMessage Message { get; set; } public HashSet Tags { get; set; } - public bool RetroApplyTags { get; set; } [MemberwiseEqualityIgnore] public IProviderConfig Settings diff --git a/src/Radarr.Api.V3/ProviderResource.cs b/src/Radarr.Api.V3/ProviderResource.cs index 4cecc4f0b4..6b05a1550a 100644 --- a/src/Radarr.Api.V3/ProviderResource.cs +++ b/src/Radarr.Api.V3/ProviderResource.cs @@ -37,7 +37,6 @@ public virtual TProviderResource ToResource(TProviderDefinition definition) ConfigContract = definition.ConfigContract, Message = definition.Message, Tags = definition.Tags, - RetroApplyTags = definition.RetroApplyTags, Fields = SchemaBuilder.ToSchema(definition.Settings), // radarr/supported is an disambiguation page. the # should be a header on the page with appropriate details/link @@ -62,8 +61,7 @@ public virtual TProviderDefinition ToModel(TProviderResource resource, TProvider Implementation = resource.Implementation, ConfigContract = resource.ConfigContract, Message = resource.Message, - Tags = resource.Tags, - RetroApplyTags = resource.RetroApplyTags, + Tags = resource.Tags }; var configContract = ReflectionExtensions.CoreAssembly.FindTypeByName(definition.ConfigContract); From f18af2aca867f3905f496661e2b834a3a0b535ff Mon Sep 17 00:00:00 2001 From: scphantm Date: Sun, 13 Oct 2024 10:48:13 -0400 Subject: [PATCH 09/15] Remove RetroApplyTags property from ProviderResource. The RetroApplyTags property has been removed to streamline the ProviderResource class. This change will help to reduce unnecessary attributes, simplifying the overall codebase. --- src/Radarr.Api.V3/ProviderResource.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Radarr.Api.V3/ProviderResource.cs b/src/Radarr.Api.V3/ProviderResource.cs index 6b05a1550a..c5e8a1cd6f 100644 --- a/src/Radarr.Api.V3/ProviderResource.cs +++ b/src/Radarr.Api.V3/ProviderResource.cs @@ -16,7 +16,6 @@ public class ProviderResource : RestResource public string InfoLink { get; set; } public ProviderMessage Message { get; set; } public HashSet Tags { get; set; } - public bool RetroApplyTags { get; set; } public List Presets { get; set; } } From b1bdb0dddd37efb1867fe0acec9868dadcd2170d Mon Sep 17 00:00:00 2001 From: scphantm Date: Sun, 13 Oct 2024 11:48:06 -0400 Subject: [PATCH 10/15] Add retroApplyTags boolean to openapi.json This change introduces a new boolean field called retroApplyTags to the Radarr API V3. It ensures that the API schema includes this property for any relevant operations. This helps in handling retroactive tag application within the system. --- src/Radarr.Api.V3/openapi.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Radarr.Api.V3/openapi.json b/src/Radarr.Api.V3/openapi.json index 30dc950c9b..7ae5c435d6 100644 --- a/src/Radarr.Api.V3/openapi.json +++ b/src/Radarr.Api.V3/openapi.json @@ -9818,6 +9818,9 @@ }, "nullable": true }, + "retroApplyTags": { + "type": "boolean" + }, "presets": { "type": "array", "items": { From 4763f74e1d891c1ad1b3e75128ff0d6ac341d321 Mon Sep 17 00:00:00 2001 From: scphantm Date: Sun, 13 Oct 2024 11:58:40 -0400 Subject: [PATCH 11/15] Remove retroApplyTags from openapi.json The retroApplyTags property was deleted to streamline the API schema. This change ensures the JSON specification is more concise and easier to maintain. --- src/Radarr.Api.V3/openapi.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/Radarr.Api.V3/openapi.json b/src/Radarr.Api.V3/openapi.json index 7ae5c435d6..30dc950c9b 100644 --- a/src/Radarr.Api.V3/openapi.json +++ b/src/Radarr.Api.V3/openapi.json @@ -9818,9 +9818,6 @@ }, "nullable": true }, - "retroApplyTags": { - "type": "boolean" - }, "presets": { "type": "array", "items": { From 9e602e48cf21a3a6a95713e9512e732560df92c7 Mon Sep 17 00:00:00 2001 From: scphantm Date: Wed, 1 Apr 2026 21:25:50 -0400 Subject: [PATCH 12/15] Updated retro add tags and added the bulk edit for retro tags --- .../ImportLists/EditImportListModalContent.js | 0 .../EditImportListModalContent.tsx | 13 ++++++++++ .../ManageImportListsEditModalContent.tsx | 24 ++++++++++++++++++- ...s => 243_add_retroapply_to_importlists.cs} | 2 +- .../ImportLists/ImportListBulkResource.cs | 2 ++ .../ImportLists/ImportListResource.cs | 3 +++ src/Radarr.Api.V3/ProviderResource.cs | 1 - 7 files changed, 42 insertions(+), 3 deletions(-) delete mode 100644 frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.js rename src/NzbDrone.Core/Datastore/Migration/{241_add_retroapply_to_importlists.cs => 243_add_retroapply_to_importlists.cs} (95%) diff --git a/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.js b/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.tsx b/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.tsx index 2b06cc2e78..106fd4909e 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.tsx +++ b/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.tsx @@ -78,6 +78,7 @@ function EditImportListModalContent({ qualityProfileId, searchOnAdd, tags, + retroApplyTags, fields, } = item; @@ -256,6 +257,18 @@ function EditImportListModalContent({ /> + + {translate('RadarrRetroactiveApply')} + + + + {fields?.length ? (
{fields.map((field) => { diff --git a/frontend/src/Settings/ImportLists/ImportLists/Manage/Edit/ManageImportListsEditModalContent.tsx b/frontend/src/Settings/ImportLists/ImportLists/Manage/Edit/ManageImportListsEditModalContent.tsx index 74b1662207..9b7773eccb 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/Manage/Edit/ManageImportListsEditModalContent.tsx +++ b/frontend/src/Settings/ImportLists/ImportLists/Manage/Edit/ManageImportListsEditModalContent.tsx @@ -18,6 +18,7 @@ interface SavePayload { qualityProfileId?: number; minimumAvailability?: string; rootFolderPath?: string; + retroApplyTags?: boolean; } interface ManageImportListsEditModalContentProps { @@ -62,7 +63,8 @@ function ManageImportListsEditModalContent( ); const [minimumAvailability, setMinimumAvailability] = useState(NO_CHANGE); const [rootFolderPath, setRootFolderPath] = useState(NO_CHANGE); - + const [retroApplyTags, setRetroApplyTags] = useState(NO_CHANGE); + const save = useCallback(() => { let hasChanges = false; const payload: SavePayload = {}; @@ -91,6 +93,10 @@ function ManageImportListsEditModalContent( hasChanges = true; payload.rootFolderPath = rootFolderPath; } + if (retroApplyTags !== NO_CHANGE) { + hasChanges = true; + payload.retroApplyTags = retroApplyTags === 'enabled'; + } if (hasChanges) { onSavePress(payload); @@ -103,6 +109,7 @@ function ManageImportListsEditModalContent( qualityProfileId, minimumAvailability, rootFolderPath, + retroApplyTags, onSavePress, onModalClose, ]); @@ -124,6 +131,9 @@ function ManageImportListsEditModalContent( case 'rootFolderPath': setRootFolderPath(value as string); break; + case 'retroApplyTags': + setRetroApplyTags(value as string); + break; default: console.warn(`EditImportListModalContent Unknown Input: '${name}'`); } @@ -199,6 +209,18 @@ function ManageImportListsEditModalContent( onChange={onInputChange} /> + + + {translate('RetroApplyTags')} + + + diff --git a/src/NzbDrone.Core/Datastore/Migration/241_add_retroapply_to_importlists.cs b/src/NzbDrone.Core/Datastore/Migration/243_add_retroapply_to_importlists.cs similarity index 95% rename from src/NzbDrone.Core/Datastore/Migration/241_add_retroapply_to_importlists.cs rename to src/NzbDrone.Core/Datastore/Migration/243_add_retroapply_to_importlists.cs index e92decbc0b..1cfaeefd70 100644 --- a/src/NzbDrone.Core/Datastore/Migration/241_add_retroapply_to_importlists.cs +++ b/src/NzbDrone.Core/Datastore/Migration/243_add_retroapply_to_importlists.cs @@ -3,7 +3,7 @@ namespace NzbDrone.Core.Datastore.Migration; -[Migration(241)] +[Migration(243)] public class add_retroapply_to_importlists : NzbDroneMigrationBase { protected override void MainDbUpgrade() diff --git a/src/Radarr.Api.V3/ImportLists/ImportListBulkResource.cs b/src/Radarr.Api.V3/ImportLists/ImportListBulkResource.cs index c7633785e9..cacd841f5d 100644 --- a/src/Radarr.Api.V3/ImportLists/ImportListBulkResource.cs +++ b/src/Radarr.Api.V3/ImportLists/ImportListBulkResource.cs @@ -11,6 +11,7 @@ public class ImportListBulkResource : ProviderBulkResource @@ -29,6 +30,7 @@ public override List UpdateModel(ImportListBulkResource re existing.RootFolderPath = resource.RootFolderPath ?? existing.RootFolderPath; existing.QualityProfileId = resource.QualityProfileId ?? existing.QualityProfileId; existing.MinimumAvailability = resource.MinimumAvailability ?? existing.MinimumAvailability; + existing.RetroApplyTags = resource.RetroApplyTags ?? existing.RetroApplyTags; }); return existingDefinitions; diff --git a/src/Radarr.Api.V3/ImportLists/ImportListResource.cs b/src/Radarr.Api.V3/ImportLists/ImportListResource.cs index 7093f08eaf..ced81ecb62 100644 --- a/src/Radarr.Api.V3/ImportLists/ImportListResource.cs +++ b/src/Radarr.Api.V3/ImportLists/ImportListResource.cs @@ -16,6 +16,7 @@ public class ImportListResource : ProviderResource public ImportListType ListType { get; set; } public int ListOrder { get; set; } public TimeSpan MinRefreshInterval { get; set; } + public bool RetroApplyTags { get; set; } } public class ImportListResourceMapper : ProviderResourceMapper @@ -39,6 +40,7 @@ public override ImportListResource ToResource(ImportListDefinition definition) resource.ListType = definition.ListType; resource.ListOrder = (int)definition.ListType; resource.MinRefreshInterval = definition.MinRefreshInterval; + resource.RetroApplyTags = definition.RetroApplyTags; return resource; } @@ -61,6 +63,7 @@ public override ImportListDefinition ToModel(ImportListResource resource, Import definition.MinimumAvailability = resource.MinimumAvailability; definition.ListType = resource.ListType; definition.MinRefreshInterval = resource.MinRefreshInterval; + definition.RetroApplyTags = resource.RetroApplyTags; return definition; } diff --git a/src/Radarr.Api.V3/ProviderResource.cs b/src/Radarr.Api.V3/ProviderResource.cs index c5e8a1cd6f..2af43b9f38 100644 --- a/src/Radarr.Api.V3/ProviderResource.cs +++ b/src/Radarr.Api.V3/ProviderResource.cs @@ -16,7 +16,6 @@ public class ProviderResource : RestResource public string InfoLink { get; set; } public ProviderMessage Message { get; set; } public HashSet Tags { get; set; } - public List Presets { get; set; } } From 694ecf6da084a878262389a8d981833537d35968 Mon Sep 17 00:00:00 2001 From: scphantm Date: Wed, 1 Apr 2026 21:31:48 -0400 Subject: [PATCH 13/15] lint fix --- .../Manage/Edit/ManageImportListsEditModalContent.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/src/Settings/ImportLists/ImportLists/Manage/Edit/ManageImportListsEditModalContent.tsx b/frontend/src/Settings/ImportLists/ImportLists/Manage/Edit/ManageImportListsEditModalContent.tsx index 9b7773eccb..2c6cbb50e6 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/Manage/Edit/ManageImportListsEditModalContent.tsx +++ b/frontend/src/Settings/ImportLists/ImportLists/Manage/Edit/ManageImportListsEditModalContent.tsx @@ -64,7 +64,6 @@ function ManageImportListsEditModalContent( const [minimumAvailability, setMinimumAvailability] = useState(NO_CHANGE); const [rootFolderPath, setRootFolderPath] = useState(NO_CHANGE); const [retroApplyTags, setRetroApplyTags] = useState(NO_CHANGE); - const save = useCallback(() => { let hasChanges = false; const payload: SavePayload = {}; From 45a8537dc4f6096bbfdf633d7c60199e04f7d61d Mon Sep 17 00:00:00 2001 From: scphantm Date: Wed, 1 Apr 2026 22:01:49 -0400 Subject: [PATCH 14/15] Refactor ImportListSyncService to adjust auto-import logic --- src/NzbDrone.Core/ImportLists/ImportListSyncService.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/NzbDrone.Core/ImportLists/ImportListSyncService.cs b/src/NzbDrone.Core/ImportLists/ImportListSyncService.cs index 44c0c444ab..27f6f8d718 100644 --- a/src/NzbDrone.Core/ImportLists/ImportListSyncService.cs +++ b/src/NzbDrone.Core/ImportLists/ImportListSyncService.cs @@ -76,7 +76,7 @@ private void SyncList(ImportListDefinition definition) private void ProcessMovieReport(ImportListDefinition importList, ImportListMovie report, List listExclusions, List dbMovies, List moviesToAdd) { - if (report.TmdbId == 0 || !importList.EnableAuto) + if (report.TmdbId == 0) { return; } @@ -89,6 +89,12 @@ private void ProcessMovieReport(ImportListDefinition importList, ImportListMovie return; } + // Now that retro-tags are applied, end if auto import is disabled + if (!importList.EnableAuto) + { + return; + } + // Check to see if movie excluded var excludedMovie = listExclusions.SingleOrDefault(s => s.TmdbId == report.TmdbId); From 68c3400bb03373fd5549c4984dde992c0fef23fe Mon Sep 17 00:00:00 2001 From: scphantm Date: Thu, 23 Apr 2026 00:01:25 -0400 Subject: [PATCH 15/15] Rename `retroApplyTags` to `tagExisting` across frontend and backend for consistent terminology. --- .../EditImportListModalContent.tsx | 10 +++++----- .../ManageImportListsEditModalContent.tsx | 20 +++++++++---------- .../Manage/ManageImportListsModalContent.tsx | 4 ++-- .../Manage/ManageImportListsModalRow.css | 1 + .../Manage/ManageImportListsModalRow.css.d.ts | 1 + .../Manage/ManageImportListsModalRow.tsx | 8 ++++---- frontend/src/typings/ImportList.ts | 2 +- ...=> 243_add_tag_existing_to_importlists.cs} | 4 ++-- .../ImportLists/ImportListDefinition.cs | 2 +- .../ImportLists/ImportListSyncService.cs | 10 +++++----- src/NzbDrone.Core/Localization/Core/en.json | 5 ++--- .../ImportLists/ImportListBulkResource.cs | 4 ++-- .../ImportLists/ImportListResource.cs | 6 +++--- 13 files changed, 39 insertions(+), 38 deletions(-) rename src/NzbDrone.Core/Datastore/Migration/{243_add_retroapply_to_importlists.cs => 243_add_tag_existing_to_importlists.cs} (54%) diff --git a/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.tsx b/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.tsx index 106fd4909e..64398debbb 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.tsx +++ b/frontend/src/Settings/ImportLists/ImportLists/EditImportListModalContent.tsx @@ -78,7 +78,7 @@ function EditImportListModalContent({ qualityProfileId, searchOnAdd, tags, - retroApplyTags, + tagExisting, fields, } = item; @@ -258,13 +258,13 @@ function EditImportListModalContent({ - {translate('RadarrRetroactiveApply')} + {translate('TagExisting')} diff --git a/frontend/src/Settings/ImportLists/ImportLists/Manage/Edit/ManageImportListsEditModalContent.tsx b/frontend/src/Settings/ImportLists/ImportLists/Manage/Edit/ManageImportListsEditModalContent.tsx index 2c6cbb50e6..5c55519a79 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/Manage/Edit/ManageImportListsEditModalContent.tsx +++ b/frontend/src/Settings/ImportLists/ImportLists/Manage/Edit/ManageImportListsEditModalContent.tsx @@ -18,7 +18,7 @@ interface SavePayload { qualityProfileId?: number; minimumAvailability?: string; rootFolderPath?: string; - retroApplyTags?: boolean; + tagExisting?: boolean; } interface ManageImportListsEditModalContentProps { @@ -63,7 +63,7 @@ function ManageImportListsEditModalContent( ); const [minimumAvailability, setMinimumAvailability] = useState(NO_CHANGE); const [rootFolderPath, setRootFolderPath] = useState(NO_CHANGE); - const [retroApplyTags, setRetroApplyTags] = useState(NO_CHANGE); + const [tagExisting, setTagExisting] = useState(NO_CHANGE); const save = useCallback(() => { let hasChanges = false; const payload: SavePayload = {}; @@ -92,9 +92,9 @@ function ManageImportListsEditModalContent( hasChanges = true; payload.rootFolderPath = rootFolderPath; } - if (retroApplyTags !== NO_CHANGE) { + if (tagExisting !== NO_CHANGE) { hasChanges = true; - payload.retroApplyTags = retroApplyTags === 'enabled'; + payload.tagExisting = tagExisting === 'enabled'; } if (hasChanges) { @@ -108,7 +108,7 @@ function ManageImportListsEditModalContent( qualityProfileId, minimumAvailability, rootFolderPath, - retroApplyTags, + tagExisting, onSavePress, onModalClose, ]); @@ -130,8 +130,8 @@ function ManageImportListsEditModalContent( case 'rootFolderPath': setRootFolderPath(value as string); break; - case 'retroApplyTags': - setRetroApplyTags(value as string); + case 'tagExisting': + setTagExisting(value as string); break; default: console.warn(`EditImportListModalContent Unknown Input: '${name}'`); @@ -210,12 +210,12 @@ function ManageImportListsEditModalContent( - {translate('RetroApplyTags')} + {translate('TagExisting')} diff --git a/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalContent.tsx b/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalContent.tsx index 7ae41d6a30..23acb0b4bf 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalContent.tsx +++ b/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalContent.tsx @@ -83,8 +83,8 @@ const COLUMNS = [ isVisible: true, }, { - name: 'retroApplyTags', - label: () => translate('RetroApplyTags'), + name: 'tagExisting', + label: () => translate('TagExisting'), isSortable: true, isVisible: true, }, diff --git a/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.css b/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.css index 7045ed925b..f18c48db21 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.css +++ b/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.css @@ -5,6 +5,7 @@ .minimumAvailability, .qualityProfileId, .rootFolderPath, +.tagExisting, .implementation { composes: cell from '~Components/Table/Cells/TableRowCell.css'; diff --git a/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.css.d.ts b/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.css.d.ts index c6cb99a370..78ff64f037 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.css.d.ts +++ b/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.css.d.ts @@ -8,6 +8,7 @@ interface CssExports { 'name': string; 'qualityProfileId': string; 'rootFolderPath': string; + 'tagExisting': string; 'tags': string; } export const cssExports: CssExports; diff --git a/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.tsx b/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.tsx index 681ff03d34..cb25677406 100644 --- a/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.tsx +++ b/frontend/src/Settings/ImportLists/ImportLists/Manage/ManageImportListsModalRow.tsx @@ -19,7 +19,7 @@ interface ManageImportListsModalRowProps { minimumAvailability: string; implementation: string; tags: number[]; - retroApplyTags: boolean; + tagExisting: boolean; enabled: boolean; enableAuto: boolean; columns: Column[]; @@ -39,7 +39,7 @@ function ManageImportListsModalRow(props: ManageImportListsModalRowProps) { enabled, enableAuto, tags, - retroApplyTags, + tagExisting, onSelectedChange, } = props; @@ -94,8 +94,8 @@ function ManageImportListsModalRow(props: ManageImportListsModalRowProps) { - - {retroApplyTags ? translate('Yes') : translate('No')} + + {tagExisting ? translate('Yes') : translate('No')} ); diff --git a/frontend/src/typings/ImportList.ts b/frontend/src/typings/ImportList.ts index 9623e4a04a..69672d4d0d 100644 --- a/frontend/src/typings/ImportList.ts +++ b/frontend/src/typings/ImportList.ts @@ -15,7 +15,7 @@ interface ImportList extends Provider { minRefreshInterval: string; name: string; tags: number[]; - retroApplyTags: boolean; + tagExisting: boolean; } export default ImportList; diff --git a/src/NzbDrone.Core/Datastore/Migration/243_add_retroapply_to_importlists.cs b/src/NzbDrone.Core/Datastore/Migration/243_add_tag_existing_to_importlists.cs similarity index 54% rename from src/NzbDrone.Core/Datastore/Migration/243_add_retroapply_to_importlists.cs rename to src/NzbDrone.Core/Datastore/Migration/243_add_tag_existing_to_importlists.cs index 1cfaeefd70..cf26ab3954 100644 --- a/src/NzbDrone.Core/Datastore/Migration/243_add_retroapply_to_importlists.cs +++ b/src/NzbDrone.Core/Datastore/Migration/243_add_tag_existing_to_importlists.cs @@ -4,10 +4,10 @@ namespace NzbDrone.Core.Datastore.Migration; [Migration(243)] -public class add_retroapply_to_importlists : NzbDroneMigrationBase +public class add_tag_existing_to_importlists : NzbDroneMigrationBase { protected override void MainDbUpgrade() { - Alter.Table("ImportLists").AddColumn("RetroApplyTags").AsBoolean().WithDefaultValue(false); + Alter.Table("ImportLists").AddColumn("TagExisting").AsBoolean().WithDefaultValue(false); } } diff --git a/src/NzbDrone.Core/ImportLists/ImportListDefinition.cs b/src/NzbDrone.Core/ImportLists/ImportListDefinition.cs index 4be4f50638..268b7d27b1 100644 --- a/src/NzbDrone.Core/ImportLists/ImportListDefinition.cs +++ b/src/NzbDrone.Core/ImportLists/ImportListDefinition.cs @@ -16,7 +16,7 @@ public class ImportListDefinition : ProviderDefinition, IEquatable Enabled; diff --git a/src/NzbDrone.Core/ImportLists/ImportListSyncService.cs b/src/NzbDrone.Core/ImportLists/ImportListSyncService.cs index 27f6f8d718..9d48ff61d2 100644 --- a/src/NzbDrone.Core/ImportLists/ImportListSyncService.cs +++ b/src/NzbDrone.Core/ImportLists/ImportListSyncService.cs @@ -81,10 +81,10 @@ private void ProcessMovieReport(ImportListDefinition importList, ImportListMovie return; } - // Check to see if movie in DB and maybe apply retro-tags + // Check to see if movie in DB and maybe apply tags if (dbMovies.Contains(report.TmdbId)) { - RetroApplyTags(importList, report); + TagExisting(importList, report); _logger.Debug("{0} [{1}] Rejected, Movie Exists in DB", report.TmdbId, report.Title); return; } @@ -130,9 +130,9 @@ private void ProcessMovieReport(ImportListDefinition importList, ImportListMovie } } - private void RetroApplyTags(ImportListDefinition importList, ImportListMovie report) + private void TagExisting(ImportListDefinition importList, ImportListMovie report) { - if (importList.RetroApplyTags) + if (importList.TagExisting) { var movie = _movieService.FindByTmdbId(report.TmdbId); @@ -145,7 +145,7 @@ private void RetroApplyTags(ImportListDefinition importList, ImportListMovie rep if (preCount != movie.Tags.Count) { _movieService.UpdateMovie(movie); - _logger.Debug("{0} [{1}] Retro-Actively added tags to movie", report.TmdbId, report.Title); + _logger.Debug("{0} [{1}] Tagged existing movie", report.TmdbId, report.Title); } } } diff --git a/src/NzbDrone.Core/Localization/Core/en.json b/src/NzbDrone.Core/Localization/Core/en.json index 3540cb73af..7ddd0b6c5b 100644 --- a/src/NzbDrone.Core/Localization/Core/en.json +++ b/src/NzbDrone.Core/Localization/Core/en.json @@ -1547,7 +1547,6 @@ "QueueLoadError": "Failed to load Queue", "Queued": "Queued", "QuickImport": "Move Automatically", - "RadarrRetroactiveApply": "Retro-Apply Tags", "RadarrTags": "{appName} Tags", "Rating": "Rating", "Ratings": "Ratings", @@ -1698,8 +1697,8 @@ "Result": "Result", "Retention": "Retention", "RetentionHelpText": "Usenet only: Set to zero to set for unlimited retention", - "RetroApplyListTagsHelpText": "Retro-Actively apply tags to movies already in Radarr", - "RetroApplyTags": "Retro-Actively Apply Tags", + "TagExistingHelpText": "Tag existing movies in {appName}", + "TagExisting": "Tag Existing", "RetryingDownloadOn": "Retrying download on {date} at {time}", "RootFolder": "Root Folder", "RootFolderCheckMultipleMessage": "Multiple root folders are missing: {rootFolderPaths}", diff --git a/src/Radarr.Api.V3/ImportLists/ImportListBulkResource.cs b/src/Radarr.Api.V3/ImportLists/ImportListBulkResource.cs index cacd841f5d..73e6712c63 100644 --- a/src/Radarr.Api.V3/ImportLists/ImportListBulkResource.cs +++ b/src/Radarr.Api.V3/ImportLists/ImportListBulkResource.cs @@ -11,7 +11,7 @@ public class ImportListBulkResource : ProviderBulkResource @@ -30,7 +30,7 @@ public override List UpdateModel(ImportListBulkResource re existing.RootFolderPath = resource.RootFolderPath ?? existing.RootFolderPath; existing.QualityProfileId = resource.QualityProfileId ?? existing.QualityProfileId; existing.MinimumAvailability = resource.MinimumAvailability ?? existing.MinimumAvailability; - existing.RetroApplyTags = resource.RetroApplyTags ?? existing.RetroApplyTags; + existing.TagExisting = resource.TagExisting ?? existing.TagExisting; }); return existingDefinitions; diff --git a/src/Radarr.Api.V3/ImportLists/ImportListResource.cs b/src/Radarr.Api.V3/ImportLists/ImportListResource.cs index ced81ecb62..27eabb0d89 100644 --- a/src/Radarr.Api.V3/ImportLists/ImportListResource.cs +++ b/src/Radarr.Api.V3/ImportLists/ImportListResource.cs @@ -16,7 +16,7 @@ public class ImportListResource : ProviderResource public ImportListType ListType { get; set; } public int ListOrder { get; set; } public TimeSpan MinRefreshInterval { get; set; } - public bool RetroApplyTags { get; set; } + public bool TagExisting { get; set; } } public class ImportListResourceMapper : ProviderResourceMapper @@ -40,7 +40,7 @@ public override ImportListResource ToResource(ImportListDefinition definition) resource.ListType = definition.ListType; resource.ListOrder = (int)definition.ListType; resource.MinRefreshInterval = definition.MinRefreshInterval; - resource.RetroApplyTags = definition.RetroApplyTags; + resource.TagExisting = definition.TagExisting; return resource; } @@ -63,7 +63,7 @@ public override ImportListDefinition ToModel(ImportListResource resource, Import definition.MinimumAvailability = resource.MinimumAvailability; definition.ListType = resource.ListType; definition.MinRefreshInterval = resource.MinRefreshInterval; - definition.RetroApplyTags = resource.RetroApplyTags; + definition.TagExisting = resource.TagExisting; return definition; }