chore: P2/P3 code cleanup batch (#138)

- Remove unused RemoveTitle() methods from AlternativeTitleService, MovieTranslationService, CreditService
- Clean commented-out code blocks in EventAggregator, Pneumatic, MovieStatisticsFixture
- Consolidate 4 duplicate TagsModalContent.css files into shared Components/Styles module
- Fix BaseMediaService StyleCop violations (SA1127, SA1502)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: admin <admin@ardentleatherworks.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Cody Kickertz 2025-12-22 17:59:21 -06:00 committed by GitHub
parent 330ed32f11
commit 209fd28062
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
19 changed files with 34 additions and 137 deletions

View file

@ -1,9 +1,9 @@
// This file is automatically generated.
// Please do not change this file!
interface CssExports {
'message': string;
'renameIcon': string;
'result': string;
message: string;
renameIcon: string;
result: string;
}
export const cssExports: CssExports;
export default cssExports;

View file

@ -12,12 +12,12 @@ import ModalBody from 'Components/Modal/ModalBody';
import ModalContent from 'Components/Modal/ModalContent';
import ModalFooter from 'Components/Modal/ModalFooter';
import ModalHeader from 'Components/Modal/ModalHeader';
import styles from 'Components/Styles/TagsModalContent.css';
import { inputTypes, kinds, sizes } from 'Helpers/Props';
import Movie from 'Movie/Movie';
import createAllMoviesSelector from 'Store/Selectors/createAllMoviesSelector';
import createTagsSelector from 'Store/Selectors/createTagsSelector';
import translate from 'Utilities/String/translate';
import styles from './TagsModalContent.css';
interface TagsModalContentProps {
movieIds: number[];

View file

@ -1,12 +0,0 @@
.renameIcon {
margin-left: 5px;
}
.message {
margin-top: 20px;
margin-bottom: 10px;
}
.result {
padding-top: 4px;
}

View file

@ -1,9 +0,0 @@
// This file is automatically generated.
// Please do not change this file!
interface CssExports {
'message': string;
'renameIcon': string;
'result': string;
}
export const cssExports: CssExports;
export default cssExports;

View file

@ -14,11 +14,11 @@ import ModalBody from 'Components/Modal/ModalBody';
import ModalContent from 'Components/Modal/ModalContent';
import ModalFooter from 'Components/Modal/ModalFooter';
import ModalHeader from 'Components/Modal/ModalHeader';
import styles from 'Components/Styles/TagsModalContent.css';
import { inputTypes, kinds, sizes } from 'Helpers/Props';
import createTagsSelector from 'Store/Selectors/createTagsSelector';
import DownloadClient from 'typings/DownloadClient';
import translate from 'Utilities/String/translate';
import styles from './TagsModalContent.css';
interface TagsModalContentProps {
ids: number[];

View file

@ -1,12 +0,0 @@
.renameIcon {
margin-left: 5px;
}
.message {
margin-top: 20px;
margin-bottom: 10px;
}
.result {
padding-top: 4px;
}

View file

@ -1,9 +0,0 @@
// This file is automatically generated.
// Please do not change this file!
interface CssExports {
'message': string;
'renameIcon': string;
'result': string;
}
export const cssExports: CssExports;
export default cssExports;

View file

@ -14,11 +14,11 @@ import ModalBody from 'Components/Modal/ModalBody';
import ModalContent from 'Components/Modal/ModalContent';
import ModalFooter from 'Components/Modal/ModalFooter';
import ModalHeader from 'Components/Modal/ModalHeader';
import styles from 'Components/Styles/TagsModalContent.css';
import { inputTypes, kinds, sizes } from 'Helpers/Props';
import createTagsSelector from 'Store/Selectors/createTagsSelector';
import ImportList from 'typings/ImportList';
import translate from 'Utilities/String/translate';
import styles from './TagsModalContent.css';
interface TagsModalContentProps {
ids: number[];

View file

@ -1,12 +0,0 @@
.renameIcon {
margin-left: 5px;
}
.message {
margin-top: 20px;
margin-bottom: 10px;
}
.result {
padding-top: 4px;
}

View file

@ -1,9 +0,0 @@
// This file is automatically generated.
// Please do not change this file!
interface CssExports {
'message': string;
'renameIcon': string;
'result': string;
}
export const cssExports: CssExports;
export default cssExports;

View file

@ -14,11 +14,11 @@ import ModalBody from 'Components/Modal/ModalBody';
import ModalContent from 'Components/Modal/ModalContent';
import ModalFooter from 'Components/Modal/ModalFooter';
import ModalHeader from 'Components/Modal/ModalHeader';
import styles from 'Components/Styles/TagsModalContent.css';
import { inputTypes, kinds, sizes } from 'Helpers/Props';
import createTagsSelector from 'Store/Selectors/createTagsSelector';
import Indexer from 'typings/Indexer';
import translate from 'Utilities/String/translate';
import styles from './TagsModalContent.css';
interface TagsModalContentProps {
ids: number[];

View file

@ -87,27 +87,5 @@ public void should_have_size_on_disk_when_movie_file_exists()
stats.Should().HaveCount(1);
stats.First().SizeOnDisk.Should().Be(_movieFile.Size);
}
// [Test]
// public void should_not_duplicate_size_for_multi_movie_files()
// {
// GivenMovieWithFile();
// GivenMovieFile();
//
// var movie2 = _movie.JsonClone();
//
// var movieMetadata = Builder<MovieMetadata>.CreateNew().With(h => h.TmdbId = 234567).BuildNew();
// Db.Insert(movieMetadata);
//
// movie2.Id = 0;
// movie2.MovieMetadataId = movieMetadata.Id;
//
// Db.Insert(movie2);
//
// var stats = Subject.MovieStatistics();
//
// stats.Should().HaveCount(1);
// stats.First().SizeOnDisk.Should().Be(_movieFile.Size);
// }
}
}

View file

@ -40,11 +40,6 @@ public override async Task<string> Download(RemoteMovie remoteMovie, IIndexer in
var url = remoteMovie.Release.DownloadUrl;
var title = remoteMovie.Release.Title;
// We don't have full seasons in movies.
// if (remoteMovie.ParsedEpisodeInfo.FullSeason)
// {
// throw new NotSupportedException("Full season releases are not supported with Pneumatic.");
// }
title = FileNameBuilder.CleanFileName(title);
// Save to the Pneumatic directory (The user will need to ensure its accessible by XBMC)

View file

@ -6,7 +6,8 @@
namespace NzbDrone.Core.MediaItems
{
public interface IBaseMediaService<T> where T : ModelBase
public interface IBaseMediaService<T>
where T : ModelBase, new()
{
T Get(int id);
List<T> Get(IEnumerable<int> ids);
@ -20,7 +21,8 @@ public interface IBaseMediaService<T> where T : ModelBase
List<T> UpdateMany(List<T> items);
}
public abstract class BaseMediaService<T> : IBaseMediaService<T> where T : ModelBase
public abstract class BaseMediaService<T> : IBaseMediaService<T>
where T : ModelBase, new()
{
protected abstract IBasicRepository<T> Repository { get; }
protected virtual IEventAggregator EventAggregator => null;
@ -112,11 +114,28 @@ protected virtual void SetAddedTimestamp(T item, DateTime? timestamp = null)
}
}
protected virtual void OnItemAdded(T item) { }
protected virtual void OnItemsImported(List<T> items) { }
protected virtual void OnItemDeleted(T item, bool deleteFiles) { }
protected virtual void OnItemsDeleted(List<T> items, bool deleteFiles) { }
protected virtual void OnItemEdited(T updated, T stored) { }
protected virtual void OnItemsBulkEdited(List<T> items) { }
protected virtual void OnItemAdded(T item)
{
}
protected virtual void OnItemsImported(List<T> items)
{
}
protected virtual void OnItemDeleted(T item, bool deleteFiles)
{
}
protected virtual void OnItemsDeleted(List<T> items, bool deleteFiles)
{
}
protected virtual void OnItemEdited(T updated, T stored)
{
}
protected virtual void OnItemsBulkEdited(List<T> items)
{
}
}
}

View file

@ -53,23 +53,6 @@ public void PublishEvent<TEvent>(TEvent @event)
var eventName = GetEventName(@event.GetType());
/*
int workerThreads;
int completionPortThreads;
ThreadPool.GetAvailableThreads(out workerThreads, out completionPortThreads);
int maxCompletionPortThreads;
int maxWorkerThreads;
ThreadPool.GetMaxThreads(out maxWorkerThreads, out maxCompletionPortThreads);
int minCompletionPortThreads;
int minWorkerThreads;
ThreadPool.GetMinThreads(out minWorkerThreads, out minCompletionPortThreads);
_logger.Warn("Thread pool state WT:{0} PT:{1} MAXWT:{2} MAXPT:{3} MINWT:{4} MINPT:{5}", workerThreads, completionPortThreads, maxWorkerThreads, maxCompletionPortThreads, minWorkerThreads, minCompletionPortThreads);
*/
_logger.Trace("Publishing {0}", eventName);
EventSubscribers<TEvent> subscribers;

View file

@ -55,11 +55,6 @@ public List<AlternativeTitle> GetAllTitles()
return _titleRepo.All().ToList();
}
public void RemoveTitle(AlternativeTitle title)
{
_titleRepo.Delete(title);
}
public List<AlternativeTitle> UpdateTitles(List<AlternativeTitle> titles, MovieMetadata movieMetadata)
{
var movieMetadataId = movieMetadata.Id;

View file

@ -55,11 +55,6 @@ public List<Credit> GetAllCredits()
return _creditRepo.All().ToList();
}
public void RemoveTitle(Credit credit)
{
_creditRepo.Delete(credit);
}
public List<Credit> UpdateCredits(List<Credit> credits, MovieMetadata movieMetadata)
{
var movieMetadataId = movieMetadata.Id;

View file

@ -36,11 +36,6 @@ public List<MovieTranslation> GetAllTranslationsForLanguage(Language language)
return _translationRepo.FindByLanguage(language).ToList();
}
public void RemoveTitle(MovieTranslation title)
{
_translationRepo.Delete(title);
}
public List<MovieTranslation> UpdateTranslations(List<MovieTranslation> translations, MovieMetadata movieMetadata)
{
var movieMetadataId = movieMetadata.Id;