From 9bcef3567cca815d7ba8df5df1864025b8745687 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Wed, 21 Feb 2024 20:50:03 +0200 Subject: [PATCH] Fixed: Switch release indexer flags to bitwise --- .../InteractiveSearch/InteractiveSearchRow.tsx | 15 +++++---------- src/Radarr.Api.V3/Indexers/ReleaseResource.cs | 15 +++++---------- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/frontend/src/InteractiveSearch/InteractiveSearchRow.tsx b/frontend/src/InteractiveSearch/InteractiveSearchRow.tsx index 981f69dd5..41b009de3 100644 --- a/frontend/src/InteractiveSearch/InteractiveSearchRow.tsx +++ b/frontend/src/InteractiveSearch/InteractiveSearchRow.tsx @@ -11,6 +11,7 @@ import Tooltip from 'Components/Tooltip/Tooltip'; import type DownloadProtocol from 'DownloadClient/DownloadProtocol'; import { icons, kinds, tooltipPositions } from 'Helpers/Props'; import Language from 'Language/Language'; +import IndexerFlags from 'Movie/IndexerFlags'; import MovieFormats from 'Movie/MovieFormats'; import MovieLanguage from 'Movie/MovieLanguage'; import MovieQuality from 'Movie/MovieQuality'; @@ -90,7 +91,7 @@ interface InteractiveSearchRowProps { customFormats: CustomFormat[]; customFormatScore: number; mappedMovieId?: number; - indexerFlags: string[]; + indexerFlags: number; rejections: string[]; downloadAllowed: boolean; isGrabbing: boolean; @@ -125,7 +126,7 @@ function InteractiveSearchRow(props: InteractiveSearchRowProps) { customFormatScore, customFormats, mappedMovieId, - indexerFlags = [], + indexerFlags = 0, rejections = [], downloadAllowed, isGrabbing = false, @@ -281,17 +282,11 @@ function InteractiveSearchRow(props: InteractiveSearchRowProps) { - {indexerFlags.length ? ( + {indexerFlags ? ( } title={translate('IndexerFlags')} - body={ -
    - {indexerFlags.map((flag, index) => { - return
  • {flag}
  • ; - })} -
- } + body={} position={tooltipPositions.LEFT} /> ) : null} diff --git a/src/Radarr.Api.V3/Indexers/ReleaseResource.cs b/src/Radarr.Api.V3/Indexers/ReleaseResource.cs index 22b24cbb4..acaf8a463 100644 --- a/src/Radarr.Api.V3/Indexers/ReleaseResource.cs +++ b/src/Radarr.Api.V3/Indexers/ReleaseResource.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text.Json; using System.Text.Json.Serialization; using NzbDrone.Core.DecisionEngine; using NzbDrone.Core.Indexers; @@ -53,7 +52,7 @@ public class ReleaseResource : RestResource public int? Seeders { get; set; } public int? Leechers { get; set; } public DownloadProtocol Protocol { get; set; } - public dynamic IndexerFlags { get; set; } + public int IndexerFlags { get; set; } // Sent when queuing an unknown release [JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)] @@ -77,7 +76,7 @@ public static ReleaseResource ToResource(this DownloadDecision model) var parsedMovieInfo = model.RemoteMovie.ParsedMovieInfo; var remoteMovie = model.RemoteMovie; var torrentInfo = (model.RemoteMovie.Release as TorrentInfo) ?? new TorrentInfo(); - var indexerFlags = torrentInfo.IndexerFlags.ToString().Split(new[] { ", " }, StringSplitOptions.None).Where(x => x != "0"); + var indexerFlags = torrentInfo.IndexerFlags; // TODO: Clean this mess up. don't mix data from multiple classes, use sub-resources instead? (Got a huge Deja Vu, didn't we talk about this already once?) return new ReleaseResource @@ -119,7 +118,7 @@ public static ReleaseResource ToResource(this DownloadDecision model) Seeders = torrentInfo.Seeders, Leechers = (torrentInfo.Peers.HasValue && torrentInfo.Seeders.HasValue) ? (torrentInfo.Peers.Value - torrentInfo.Seeders.Value) : (int?)null, Protocol = releaseInfo.DownloadProtocol, - IndexerFlags = indexerFlags + IndexerFlags = (int)indexerFlags }; } @@ -134,13 +133,9 @@ public static ReleaseInfo ToModel(this ReleaseResource resource) MagnetUrl = resource.MagnetUrl, InfoHash = resource.InfoHash, Seeders = resource.Seeders, - Peers = (resource.Seeders.HasValue && resource.Leechers.HasValue) ? (resource.Seeders + resource.Leechers) : null + Peers = (resource.Seeders.HasValue && resource.Leechers.HasValue) ? (resource.Seeders + resource.Leechers) : null, + IndexerFlags = (IndexerFlags)resource.IndexerFlags }; - - if (resource.IndexerFlags is JsonElement { ValueKind: JsonValueKind.Number } indexerFlags) - { - model.IndexerFlags = (IndexerFlags)indexerFlags.GetInt32(); - } } else {