fix warning CA1819 in LibraryOptions.cs

pull/11473/head
del 2 weeks ago
parent 5612cb8178
commit b38bcdf3a7

@ -95,11 +95,10 @@ namespace Emby.Server.Implementations.Collections
var libraryOptions = new LibraryOptions
{
PathInfos = new[] { new MediaPathInfo(path) },
EnableRealtimeMonitor = false,
SaveLocalMetadata = true
};
libraryOptions.SetPathInfos(new[] { new MediaPathInfo(path) });
var name = _localizationManager.GetLocalizedString("Collections");
await _libraryManager.AddVirtualFolder(name, CollectionTypeOptions.boxsets, libraryOptions, true).ConfigureAwait(false);

@ -3040,7 +3040,7 @@ namespace Emby.Server.Implementations.Library
var list = libraryOptions.PathInfos.ToList();
list.Add(pathInfo);
libraryOptions.PathInfos = list.ToArray();
libraryOptions.SetPathInfos(list.ToArray());
SyncLibraryOptionsToLocations(virtualFolderPath, libraryOptions);
@ -3069,7 +3069,7 @@ namespace Emby.Server.Implementations.Library
}
}
libraryOptions.PathInfos = list.ToArray();
libraryOptions.SetPathInfos(list.ToArray());
CollectionFolder.SaveLibraryOptions(virtualFolderPath, libraryOptions);
}
@ -3079,7 +3079,7 @@ namespace Emby.Server.Implementations.Library
var topLibraryFolders = GetUserRootFolder().Children.ToList();
var info = GetVirtualFolderInfo(virtualFolderPath, topLibraryFolders, null);
if (info.Locations.Length > 0 && info.Locations.Length != options.PathInfos.Length)
if (info.Locations.Length > 0 && info.Locations.Length != options.PathInfos.Count)
{
var list = options.PathInfos.ToList();
@ -3091,7 +3091,7 @@ namespace Emby.Server.Implementations.Library
}
}
options.PathInfos = list.ToArray();
options.SetPathInfos(list.ToArray());
}
}
@ -3189,10 +3189,10 @@ namespace Emby.Server.Implementations.Library
var libraryOptions = CollectionFolder.GetLibraryOptions(virtualFolderPath);
libraryOptions.PathInfos = libraryOptions
libraryOptions.SetPathInfos(libraryOptions
.PathInfos
.Where(i => !string.Equals(i.Path, mediaPath, StringComparison.Ordinal))
.ToArray();
.ToArray());
CollectionFolder.SaveLibraryOptions(virtualFolderPath, libraryOptions);
}

@ -85,7 +85,7 @@ public class LibraryStructureController : BaseJellyfinApiController
if (paths is not null && paths.Length > 0)
{
libraryOptions.PathInfos = paths.Select(i => new MediaPathInfo(i)).ToArray();
libraryOptions.SetPathInfos(paths.Select(i => new MediaPathInfo(i)).ToArray());
}
await _libraryManager.AddVirtualFolder(name, collectionType, libraryOptions, refreshLibrary).ConfigureAwait(false);

@ -1,19 +1,25 @@
#pragma warning disable CS1591
using System;
using System.Collections.Generic;
using System.ComponentModel;
namespace MediaBrowser.Model.Configuration
{
public class LibraryOptions
{
private ICollection<TypeOptions> _typeOptions;
private ICollection<string>? _localMetadataReaderOrder = [];
private ICollection<MediaPathInfo> _pathInfos = [];
public LibraryOptions()
{
TypeOptions = Array.Empty<TypeOptions>();
DisabledSubtitleFetchers = Array.Empty<string>();
_typeOptions = Array.Empty<TypeOptions>();
DisabledSubtitleFetchers = [];
SubtitleDownloadLanguages = [];
SubtitleFetcherOrder = Array.Empty<string>();
DisabledLocalMetadataReaders = Array.Empty<string>();
MetadataSavers = [];
SkipSubtitlesIfAudioTrackMatches = true;
RequirePerfectSubtitleMatch = true;
AllowEmbeddedSubtitles = EmbeddedSubtitleOptions.AllowAll;
@ -22,7 +28,7 @@ namespace MediaBrowser.Model.Configuration
EnablePhotos = true;
SaveSubtitlesWithMedia = true;
SaveLyricsWithMedia = true;
PathInfos = Array.Empty<MediaPathInfo>();
_pathInfos = Array.Empty<MediaPathInfo>();
EnableAutomaticSeriesGrouping = true;
SeasonZeroDisplayName = "Specials";
}
@ -43,7 +49,10 @@ namespace MediaBrowser.Model.Configuration
public bool ExtractTrickplayImagesDuringLibraryScan { get; set; }
public MediaPathInfo[] PathInfos { get; set; }
public ICollection<MediaPathInfo> PathInfos
{
get => _pathInfos;
}
public bool SaveLocalMetadata { get; set; }
@ -74,21 +83,24 @@ namespace MediaBrowser.Model.Configuration
public string SeasonZeroDisplayName { get; set; }
public string[]? MetadataSavers { get; set; }
public ICollection<string>? MetadataSavers { get; }
public string[] DisabledLocalMetadataReaders { get; set; }
public ICollection<string> DisabledLocalMetadataReaders { get; }
public string[]? LocalMetadataReaderOrder { get; set; }
public ICollection<string>? LocalMetadataReaderOrder
{
get => _localMetadataReaderOrder;
}
public string[] DisabledSubtitleFetchers { get; set; }
public ICollection<string> DisabledSubtitleFetchers { get; }
public string[] SubtitleFetcherOrder { get; set; }
public ICollection<string> SubtitleFetcherOrder { get; }
public bool SkipSubtitlesIfEmbeddedSubtitlesPresent { get; set; }
public bool SkipSubtitlesIfAudioTrackMatches { get; set; }
public string[]? SubtitleDownloadLanguages { get; set; }
public ICollection<string> SubtitleDownloadLanguages { get; }
public bool RequirePerfectSubtitleMatch { get; set; }
@ -101,9 +113,12 @@ namespace MediaBrowser.Model.Configuration
public EmbeddedSubtitleOptions AllowEmbeddedSubtitles { get; set; }
public TypeOptions[] TypeOptions { get; set; }
public ICollection<TypeOptions> TypeOptions
{
get => _typeOptions;
}
public TypeOptions? GetTypeOptions(string type)
public TypeOptions? GetTypeOption(string type)
{
foreach (var options in TypeOptions)
{
@ -115,5 +130,20 @@ namespace MediaBrowser.Model.Configuration
return null;
}
public void SetTypeOptions(ICollection<TypeOptions> typeOptions)
{
_typeOptions = typeOptions;
}
public void SetLocalMetadataReaderOrder(string[]? localMetadataReaderOrder)
{
_localMetadataReaderOrder = localMetadataReaderOrder ?? [];
}
public void SetPathInfos(MediaPathInfo[] pathInfos)
{
_pathInfos = new List<MediaPathInfo>(pathInfos);
}
}
}

@ -138,7 +138,7 @@ namespace MediaBrowser.Providers.Manager
var result = new RefreshResult { UpdateType = ItemUpdateType.None };
var typeName = item.GetType().Name;
var typeOptions = libraryOptions.GetTypeOptions(typeName) ?? new TypeOptions { Type = typeName };
var typeOptions = libraryOptions.GetTypeOption(typeName) ?? new TypeOptions { Type = typeName };
// track library limits, adding buffer to allow lazy replacing of current images
var backdropLimit = typeOptions.GetLimit(ImageType.Backdrop) + oldBackdropImages.Length;

@ -368,7 +368,7 @@ namespace MediaBrowser.Providers.Manager
private IEnumerable<IImageProvider> GetImageProvidersInternal(BaseItem item, LibraryOptions libraryOptions, MetadataOptions options, ImageRefreshOptions refreshOptions, bool includeDisabled)
{
var typeOptions = libraryOptions.GetTypeOptions(item.GetType().Name);
var typeOptions = libraryOptions.GetTypeOption(item.GetType().Name);
var fetcherOrder = typeOptions?.ImageFetcherOrder ?? options.ImageFetcherOrder;
return _imageProviders.Where(i => CanRefreshImages(i, item, typeOptions, refreshOptions, includeDisabled))
@ -422,7 +422,7 @@ namespace MediaBrowser.Providers.Manager
where T : BaseItem
{
var localMetadataReaderOrder = libraryOptions.LocalMetadataReaderOrder ?? globalMetadataOptions.LocalMetadataReaderOrder;
var typeOptions = libraryOptions.GetTypeOptions(item.GetType().Name);
var typeOptions = libraryOptions.GetTypeOption(item.GetType().Name);
var metadataFetcherOrder = typeOptions?.MetadataFetcherOrder ?? globalMetadataOptions.MetadataFetcherOrder;
return _metadataProviders.OfType<IMetadataProvider<T>>()
@ -432,7 +432,7 @@ namespace MediaBrowser.Providers.Manager
// only relative order within a type matters: consumers of the list filter to one or the other
i switch
{
ILocalMetadataProvider => GetConfiguredOrder(localMetadataReaderOrder, i.Name),
ILocalMetadataProvider => GetConfiguredOrder(localMetadataReaderOrder.ToArray(), i.Name),
IRemoteMetadataProvider => GetConfiguredOrder(metadataFetcherOrder, i.Name),
// Default to end
_ => int.MaxValue

@ -561,7 +561,7 @@ namespace MediaBrowser.Providers.MediaInfo
}
else
{
subtitleDownloadLanguages = libraryOptions.SubtitleDownloadLanguages;
subtitleDownloadLanguages = libraryOptions.SubtitleDownloadLanguages.ToArray();
skipIfEmbeddedSubtitlesPresent = libraryOptions.SkipSubtitlesIfEmbeddedSubtitlesPresent;
skipIfAudioTrackMatches = libraryOptions.SkipSubtitlesIfAudioTrackMatches;
requirePerfectMatch = libraryOptions.RequirePerfectSubtitleMatch;
@ -579,8 +579,8 @@ namespace MediaBrowser.Providers.MediaInfo
skipIfAudioTrackMatches,
requirePerfectMatch,
subtitleDownloadLanguages,
libraryOptions.DisabledSubtitleFetchers,
libraryOptions.SubtitleFetcherOrder,
libraryOptions.DisabledSubtitleFetchers.ToArray(),
libraryOptions.SubtitleFetcherOrder.ToArray(),
true,
cancellationToken).ConfigureAwait(false);

@ -88,7 +88,7 @@ namespace MediaBrowser.Providers.MediaInfo
}
else
{
subtitleDownloadLanguages = libraryOptions.SubtitleDownloadLanguages;
subtitleDownloadLanguages = libraryOptions.SubtitleDownloadLanguages.ToArray();
skipIfEmbeddedSubtitlesPresent = libraryOptions.SkipSubtitlesIfEmbeddedSubtitlesPresent;
skipIfAudioTrackMatches = libraryOptions.SkipSubtitlesIfAudioTrackMatches;
}
@ -181,7 +181,7 @@ namespace MediaBrowser.Providers.MediaInfo
}
else
{
subtitleDownloadLanguages = libraryOptions.SubtitleDownloadLanguages;
subtitleDownloadLanguages = libraryOptions.SubtitleDownloadLanguages.ToArray();
skipIfEmbeddedSubtitlesPresent = libraryOptions.SkipSubtitlesIfEmbeddedSubtitlesPresent;
skipIfAudioTrackMatches = libraryOptions.SkipSubtitlesIfAudioTrackMatches;
requirePerfectMatch = libraryOptions.RequirePerfectSubtitleMatch;
@ -196,8 +196,8 @@ namespace MediaBrowser.Providers.MediaInfo
skipIfAudioTrackMatches,
requirePerfectMatch,
subtitleDownloadLanguages,
libraryOptions.DisabledSubtitleFetchers,
libraryOptions.SubtitleFetcherOrder,
libraryOptions.DisabledSubtitleFetchers.ToArray(),
libraryOptions.SubtitleFetcherOrder.ToArray(),
true,
cancellationToken).ConfigureAwait(false);

@ -201,10 +201,8 @@ public sealed class RecordingsManager : IRecordingsManager, IDisposable
}
var mediaPathInfos = pathsToCreate.Select(i => new MediaPathInfo(i)).ToArray();
var libraryOptions = new LibraryOptions
{
PathInfos = mediaPathInfos
};
var libraryOptions = new LibraryOptions();
libraryOptions.SetPathInfos(mediaPathInfos);
try
{

@ -507,24 +507,9 @@ namespace Jellyfin.Providers.Tests.Manager
var item = new Video();
var libraryOptions = new LibraryOptions
{
TypeOptions = new[]
{
new TypeOptions
{
Type = item.GetType().Name,
ImageOptions = new[]
{
new ImageOption
{
Type = imageType,
MinWidth = 10
}
}
}
}
};
var typeOptions = new[] { new TypeOptions { Type = item.GetType().Name, ImageOptions = new[] { new ImageOption { Type = imageType, MinWidth = 10 } } } };
var libraryOptions = new LibraryOptions();
libraryOptions.SetTypeOptions(typeOptions);
var remoteProvider = new Mock<IRemoteImageProvider>(MockBehavior.Strict);
remoteProvider.Setup(rp => rp.Name).Returns("MockRemoteProvider");
@ -626,24 +611,10 @@ namespace Jellyfin.Providers.Tests.Manager
/// </summary>
private static LibraryOptions GetLibraryOptions(BaseItem item, ImageType type, int count)
{
return new LibraryOptions
{
TypeOptions = new[]
{
new TypeOptions
{
Type = item.GetType().Name,
ImageOptions = new[]
{
new ImageOption
{
Type = type,
Limit = count,
}
}
}
}
};
var typeOptions = new[] { new TypeOptions { Type = item.GetType().Name, ImageOptions = new[] { new ImageOption { Type = type, Limit = count, } } } };
var lib = new LibraryOptions();
lib.SetTypeOptions(typeOptions.ToList());
return lib;
}
}
}

@ -495,10 +495,8 @@ namespace Jellyfin.Providers.Tests.Manager
string[]? localMetadataReaderOrder = null,
string[]? metadataFetcherOrder = null)
{
var libraryOptions = new LibraryOptions
{
LocalMetadataReaderOrder = localMetadataReaderOrder
};
var libraryOptions = new LibraryOptions();
libraryOptions.SetLocalMetadataReaderOrder(localMetadataReaderOrder);
// only create type options if populating it with something
if (imageFetcherOrder is not null || metadataFetcherOrder is not null)
@ -506,7 +504,7 @@ namespace Jellyfin.Providers.Tests.Manager
imageFetcherOrder ??= Array.Empty<string>();
metadataFetcherOrder ??= Array.Empty<string>();
libraryOptions.TypeOptions = new[]
libraryOptions.SetTypeOptions(new[]
{
new TypeOptions
{
@ -514,7 +512,7 @@ namespace Jellyfin.Providers.Tests.Manager
ImageFetcherOrder = imageFetcherOrder,
MetadataFetcherOrder = metadataFetcherOrder
}
};
});
}
return libraryOptions;

Loading…
Cancel
Save