Fix linting and build errors

This commit is contained in:
Will Burland 2026-01-09 19:20:02 +00:00
parent e7f2f44dce
commit 9d601b7cc0
9 changed files with 35 additions and 36 deletions

View file

@ -38,7 +38,7 @@ const protocols = [
get name() {
return translate('Unreleased');
}
},
}
];
function DownloadStatusFilterBuilderRowValue(props) {

View file

@ -6,6 +6,7 @@ import { filterBuilderTypes, filterBuilderValueTypes, icons } from 'Helpers/Prop
import sortByProp from 'Utilities/Array/sortByProp';
import BoolFilterBuilderRowValue from './BoolFilterBuilderRowValue';
import DateFilterBuilderRowValue from './DateFilterBuilderRowValue';
import DownloadStatusFilterBuilderRowValue from './DownloadStatusFilterBuilderRowValue';
import FilterBuilderRowValueConnector from './FilterBuilderRowValueConnector';
import HistoryEventTypeFilterBuilderRowValue from './HistoryEventTypeFilterBuilderRowValue';
import ImportListFilterBuilderRowValueConnector from './ImportListFilterBuilderRowValueConnector';
@ -13,7 +14,6 @@ import IndexerFilterBuilderRowValueConnector from './IndexerFilterBuilderRowValu
import LanguageFilterBuilderRowValue from './LanguageFilterBuilderRowValue';
import MinimumAvailabilityFilterBuilderRowValue from './MinimumAvailabilityFilterBuilderRowValue';
import MovieFilterBuilderRowValue from './MovieFilterBuilderRowValue';
import DownloadStatusFilterBuilderRowValue from './DownloadStatusFilterBuilderRowValue';
import ProtocolFilterBuilderRowValue from './ProtocolFilterBuilderRowValue';
import QualityFilterBuilderRowValueConnector from './QualityFilterBuilderRowValueConnector';
import QualityProfileFilterBuilderRowValue from './QualityProfileFilterBuilderRowValue';

View file

@ -67,6 +67,15 @@
flex-direction: column;
}
.downloadStatus {
composes: cell;
display: flex;
justify-content: center;
flex: 0 0 150px;
flex-direction: column;
}
.certification {
composes: cell;

View file

@ -8,6 +8,7 @@ interface CssExports {
'checkInput': string;
'collection': string;
'digitalRelease': string;
'downloadStatus': string;
'externalLinks': string;
'genres': string;
'imdbRating': string;

View file

@ -13,7 +13,13 @@ export type MovieStatus =
export type MovieAvailability = 'announced' | 'inCinemas' | 'released';
export type DownloadStatus = 'downloaded' | 'unmonitored' | 'missingMonitored' | 'missingUnmonitored' | 'queue' | 'continuing';
export type DownloadStatus =
| 'downloaded'
| 'unmonitored'
| 'missingMonitored'
| 'missingUnmonitored'
| 'queue'
| 'continuing';
export type CoverType = 'poster' | 'fanart' | 'headshot';

View file

@ -19,11 +19,11 @@
using NzbDrone.Core.Movies.Events;
using NzbDrone.Core.Movies.Translations;
using NzbDrone.Core.MovieStats;
using NzbDrone.Core.Queue;
using NzbDrone.Core.RootFolders;
using NzbDrone.Core.Validation;
using NzbDrone.Core.Validation.Paths;
using NzbDrone.SignalR;
using NzbDrone.Core.Queue;
using Radarr.Http;
using Radarr.Http.REST;
using Radarr.Http.REST.Attributes;
@ -60,7 +60,7 @@ public MovieController(IBroadcastSignalRMessage signalRBroadcaster,
IRootFolderService rootFolderService,
IUpgradableSpecification qualityUpgradableSpecification,
IConfigService configService,
IQueueService queueService,
IQueueService queueService,
RootFolderValidator rootFolderValidator,
MappedNetworkDriveValidator mappedNetworkDriveValidator,
MoviePathValidator moviesPathValidator,
@ -154,8 +154,8 @@ public List<MovieResource> AllMovie(int? tmdbId, bool excludeLocalCovers = false
foreach (var movie in movies)
{
var translation = GetTranslationFromDict(tdict, movie.MovieMetadata, translationLanguage);
moviesResources.Add(movie.ToResource(availDelay, translation, _qualityUpgradableSpecification, null, _queueService));
var translation = GetTranslationFromDict(tdict, movie.MovieMetadata, translationLanguage);
moviesResources.Add(movie.ToResource(availDelay, translation, _qualityUpgradableSpecification, null, _queueService));
}
if (!excludeLocalCovers)

View file

@ -6,7 +6,6 @@
using NzbDrone.Core.Datastore.Events;
using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.Download;
using NzbDrone.Core.Queue;
using NzbDrone.Core.Languages;
using NzbDrone.Core.MediaCover;
using NzbDrone.Core.MediaFiles.Events;
@ -14,6 +13,7 @@
using NzbDrone.Core.Movies;
using NzbDrone.Core.Movies.Translations;
using NzbDrone.Core.MovieStats;
using NzbDrone.Core.Queue;
using NzbDrone.SignalR;
using Radarr.Http.REST;

View file

@ -129,7 +129,7 @@ public IActionResult SaveAll([FromBody] MovieEditorResource resource)
foreach (var movie in updatedMovies)
{
var translation = GetTranslationFromDict(tdict, movie.MovieMetadata, configLanguage);
var movieResource = movie.ToResource(availabilityDelay, translation, _upgradableSpecification, null, _queueService);
var movieResource = movie.ToResource(availabilityDelay, translation, _upgradableSpecification, null, _queueService);
MapCoversToLocal(movieResource);

View file

@ -61,9 +61,6 @@ public MovieResource()
public bool? HasFile { get; set; }
public int MovieFileId { get; set; }
// Computed for frontend display/filtering
public string DownloadStatus { get; set; }
// Editing Only
public bool Monitored { get; set; }
public MovieStatusType MinimumAvailability { get; set; }
@ -89,6 +86,7 @@ public MovieResource()
public float Popularity { get; set; }
public DateTime? LastSearchTime { get; set; }
public MovieStatisticsResource Statistics { get; set; }
public string DownloadStatus { get; set; }
// Hiding this so people don't think its usable (only used to set the initial state)
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingDefault)]
@ -120,31 +118,16 @@ public static MovieResource ToResource(this Movie model, int availDelay, MovieTr
var hasMovieFile = movieFile != null;
var isAvailable = model.IsAvailable(availDelay);
// detect if this movie has an active queue entry
var isQueued = queueService != null && queueService.GetQueue().Any(q => q.Movie != null && q.Movie.Id == model.Id);
string downloadStatus;
if (isQueued)
var isQueued = queueService?.GetQueue().Any(q => q.Movie?.Id == model.Id) == true;
var downloadStatus = (isQueued, hasMovieFile, isAvailable, model.Monitored) switch
{
downloadStatus = "queue";
}
else if (hasMovieFile)
{
downloadStatus = model.Monitored ? "downloaded" : "unmonitored";
}
else if (isAvailable && !model.Monitored)
{
downloadStatus = "missingUnmonitored";
}
else if (isAvailable)
{
downloadStatus = "missingMonitored";
}
else
{
downloadStatus = "continuing";
}
(true, _, _, _) => "queue",
(_, true, _, true) => "downloaded",
(_, true, _, false) => "unmonitored",
(_, false, true, false) => "missingUnmonitored",
(_, false, true, true) => "missingMonitored",
_ => "continuing"
};
return new MovieResource
{