From 3bbc7444933da3777b882ded1e0010325ff8888f Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 11 Mar 2025 14:15:10 +0200 Subject: [PATCH] New: Selecting multiple indexers per release profile --- .../Form/Select/IndexerSelectInput.tsx | 4 +- .../EditReleaseProfileModalContent.tsx | 7 +- .../Profiles/Release/ReleaseProfileItem.tsx | 11 ++- .../Profiles/Release/useReleaseProfiles.ts | 4 +- .../224_release_profile_indexer_idsFixture.cs | 67 +++++++++++++++++++ .../224_release_profile_indexer_ids.cs | 59 ++++++++++++++++ .../Profiles/Releases/ReleaseProfile.cs | 4 +- .../Releases/ReleaseProfileService.cs | 8 +-- .../Release/ReleaseProfileController.cs | 32 ++++----- .../Release/ReleaseProfileResource.cs | 4 +- .../Release/ReleaseProfileController.cs | 35 +++++----- .../Release/ReleaseProfileResource.cs | 6 +- 12 files changed, 179 insertions(+), 62 deletions(-) create mode 100644 src/NzbDrone.Core.Test/Datastore/Migration/224_release_profile_indexer_idsFixture.cs create mode 100644 src/NzbDrone.Core/Datastore/Migration/224_release_profile_indexer_ids.cs diff --git a/frontend/src/Components/Form/Select/IndexerSelectInput.tsx b/frontend/src/Components/Form/Select/IndexerSelectInput.tsx index f4c7f4bb5..14a6df8ec 100644 --- a/frontend/src/Components/Form/Select/IndexerSelectInput.tsx +++ b/frontend/src/Components/Form/Select/IndexerSelectInput.tsx @@ -40,9 +40,9 @@ function createIndexersSelector(includeAny: boolean) { export interface IndexerSelectInputProps { name: string; - value: number; + value: number | number[]; includeAny?: boolean; - onChange: (change: EnhancedSelectInputChanged) => void; + onChange: (change: EnhancedSelectInputChanged) => void; } function IndexerSelectInput({ diff --git a/frontend/src/Settings/Profiles/Release/EditReleaseProfileModalContent.tsx b/frontend/src/Settings/Profiles/Release/EditReleaseProfileModalContent.tsx index 3bac8a63d..e1e35ef58 100644 --- a/frontend/src/Settings/Profiles/Release/EditReleaseProfileModalContent.tsx +++ b/frontend/src/Settings/Profiles/Release/EditReleaseProfileModalContent.tsx @@ -39,7 +39,7 @@ function EditReleaseProfileModalContent({ saveProvider, } = useManageReleaseProfile(id ?? 0); - const { name, enabled, required, ignored, tags, excludedTags, indexerId } = + const { name, enabled, required, ignored, indexerIds, tags, excludedTags } = item; const wasSaving = usePrevious(isSaving); @@ -136,13 +136,12 @@ function EditReleaseProfileModalContent({ diff --git a/frontend/src/Settings/Profiles/Release/ReleaseProfileItem.tsx b/frontend/src/Settings/Profiles/Release/ReleaseProfileItem.tsx index 250390d06..ae718b272 100644 --- a/frontend/src/Settings/Profiles/Release/ReleaseProfileItem.tsx +++ b/frontend/src/Settings/Profiles/Release/ReleaseProfileItem.tsx @@ -28,9 +28,9 @@ function ReleaseProfileItem(props: ReleaseProfileProps) { enabled = true, required = [], ignored = [], + indexerIds = [], tags, excludedTags, - indexerId = 0, tagList, indexerList, } = props; @@ -53,8 +53,7 @@ function ReleaseProfileItem(props: ReleaseProfileProps) { deleteReleaseProfile(); }, [deleteReleaseProfile]); - const indexer = - indexerId !== 0 && indexerList.find((i) => i.id === indexerId); + const indexers = indexerList.filter((i) => indexerIds.includes(i.id)); return ( )} - {indexer ? ( -