diff options
| author | JPVenson <github@jpb.email> | 2024-12-15 14:46:40 +0000 |
|---|---|---|
| committer | JPVenson <github@jpb.email> | 2024-12-15 14:46:40 +0000 |
| commit | a0c568bc6c9944fab8b6d1d6d420a9716bdab1e9 (patch) | |
| tree | 00565ba6c1e73ddfd3278cd3356c5110699553ad | |
| parent | 1c3196dd5f07d152b5c0ab4614ab0ca01557375d (diff) | |
Applied review comments
| -rw-r--r-- | Jellyfin.Api/Controllers/PlaystateController.cs | 12 | ||||
| -rw-r--r-- | Jellyfin.Api/Controllers/UserLibraryController.cs | 12 | ||||
| -rw-r--r-- | Jellyfin.Data/Entities/BaseItemEntity.cs | 6 | ||||
| -rw-r--r-- | Jellyfin.Data/Entities/BaseItemExtraType.cs | 2 | ||||
| -rw-r--r-- | Jellyfin.Data/Entities/BaseItemImageInfo.cs | 6 | ||||
| -rw-r--r-- | Jellyfin.Data/Entities/ItemValueType.cs | 2 | ||||
| -rw-r--r-- | Jellyfin.Data/Entities/MediaStreamInfo.cs | 3 | ||||
| -rw-r--r-- | Jellyfin.Data/Entities/People.cs | 3 | ||||
| -rw-r--r-- | Jellyfin.Server.Implementations/Item/BaseItemRepository.cs | 21 | ||||
| -rw-r--r-- | MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs | 4 | ||||
| -rw-r--r-- | MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs | 3 |
11 files changed, 42 insertions, 32 deletions
diff --git a/Jellyfin.Api/Controllers/PlaystateController.cs b/Jellyfin.Api/Controllers/PlaystateController.cs index 292344c9d..794c6500c 100644 --- a/Jellyfin.Api/Controllers/PlaystateController.cs +++ b/Jellyfin.Api/Controllers/PlaystateController.cs @@ -72,7 +72,7 @@ public class PlaystateController : BaseJellyfinApiController [HttpPost("UserPlayedItems/{itemId}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] - public async Task<ActionResult<UserItemDataDto>> MarkPlayedItem( + public async Task<ActionResult<UserItemDataDto?>> MarkPlayedItem( [FromQuery] Guid? userId, [FromRoute, Required] Guid itemId, [FromQuery, ModelBinder(typeof(LegacyDateTimeModelBinder))] DateTime? datePlayed) @@ -121,7 +121,7 @@ public class PlaystateController : BaseJellyfinApiController [ProducesResponseType(StatusCodes.Status404NotFound)] [Obsolete("Kept for backwards compatibility")] [ApiExplorerSettings(IgnoreApi = true)] - public Task<ActionResult<UserItemDataDto>> MarkPlayedItemLegacy( + public Task<ActionResult<UserItemDataDto?>> MarkPlayedItemLegacy( [FromRoute, Required] Guid userId, [FromRoute, Required] Guid itemId, [FromQuery, ModelBinder(typeof(LegacyDateTimeModelBinder))] DateTime? datePlayed) @@ -138,7 +138,7 @@ public class PlaystateController : BaseJellyfinApiController [HttpDelete("UserPlayedItems/{itemId}")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] - public async Task<ActionResult<UserItemDataDto>> MarkUnplayedItem( + public async Task<ActionResult<UserItemDataDto?>> MarkUnplayedItem( [FromQuery] Guid? userId, [FromRoute, Required] Guid itemId) { @@ -185,7 +185,7 @@ public class PlaystateController : BaseJellyfinApiController [ProducesResponseType(StatusCodes.Status404NotFound)] [Obsolete("Kept for backwards compatibility")] [ApiExplorerSettings(IgnoreApi = true)] - public Task<ActionResult<UserItemDataDto>> MarkUnplayedItemLegacy( + public Task<ActionResult<UserItemDataDto?>> MarkUnplayedItemLegacy( [FromRoute, Required] Guid userId, [FromRoute, Required] Guid itemId) => MarkUnplayedItem(userId, itemId); @@ -502,7 +502,7 @@ public class PlaystateController : BaseJellyfinApiController /// <param name="wasPlayed">if set to <c>true</c> [was played].</param> /// <param name="datePlayed">The date played.</param> /// <returns>Task.</returns> - private UserItemDataDto UpdatePlayedStatus(User user, BaseItem item, bool wasPlayed, DateTime? datePlayed) + private UserItemDataDto? UpdatePlayedStatus(User user, BaseItem item, bool wasPlayed, DateTime? datePlayed) { if (wasPlayed) { @@ -513,7 +513,7 @@ public class PlaystateController : BaseJellyfinApiController item.MarkUnplayed(user); } - return _userDataRepository.GetUserDataDto(item, user)!; + return _userDataRepository.GetUserDataDto(item, user); } private PlayMethod ValidatePlayMethod(PlayMethod method, string? playSessionId) diff --git a/Jellyfin.Api/Controllers/UserLibraryController.cs b/Jellyfin.Api/Controllers/UserLibraryController.cs index 5330db48b..272a59559 100644 --- a/Jellyfin.Api/Controllers/UserLibraryController.cs +++ b/Jellyfin.Api/Controllers/UserLibraryController.cs @@ -305,7 +305,7 @@ public class UserLibraryController : BaseJellyfinApiController /// <returns>An <see cref="OkResult"/> containing the <see cref="UserItemDataDto"/>.</returns> [HttpDelete("UserItems/{itemId}/Rating")] [ProducesResponseType(StatusCodes.Status200OK)] - public ActionResult<UserItemDataDto> DeleteUserItemRating( + public ActionResult<UserItemDataDto?> DeleteUserItemRating( [FromQuery] Guid? userId, [FromRoute, Required] Guid itemId) { @@ -338,7 +338,7 @@ public class UserLibraryController : BaseJellyfinApiController [ProducesResponseType(StatusCodes.Status200OK)] [Obsolete("Kept for backwards compatibility")] [ApiExplorerSettings(IgnoreApi = true)] - public ActionResult<UserItemDataDto> DeleteUserItemRatingLegacy( + public ActionResult<UserItemDataDto?> DeleteUserItemRatingLegacy( [FromRoute, Required] Guid userId, [FromRoute, Required] Guid itemId) => DeleteUserItemRating(userId, itemId); @@ -353,7 +353,7 @@ public class UserLibraryController : BaseJellyfinApiController /// <returns>An <see cref="OkResult"/> containing the <see cref="UserItemDataDto"/>.</returns> [HttpPost("UserItems/{itemId}/Rating")] [ProducesResponseType(StatusCodes.Status200OK)] - public ActionResult<UserItemDataDto> UpdateUserItemRating( + public ActionResult<UserItemDataDto?> UpdateUserItemRating( [FromQuery] Guid? userId, [FromRoute, Required] Guid itemId, [FromQuery] bool? likes) @@ -388,7 +388,7 @@ public class UserLibraryController : BaseJellyfinApiController [ProducesResponseType(StatusCodes.Status200OK)] [Obsolete("Kept for backwards compatibility")] [ApiExplorerSettings(IgnoreApi = true)] - public ActionResult<UserItemDataDto> UpdateUserItemRatingLegacy( + public ActionResult<UserItemDataDto?> UpdateUserItemRatingLegacy( [FromRoute, Required] Guid userId, [FromRoute, Required] Guid itemId, [FromQuery] bool? likes) @@ -679,7 +679,7 @@ public class UserLibraryController : BaseJellyfinApiController /// <param name="user">The user.</param> /// <param name="item">The item.</param> /// <param name="likes">if set to <c>true</c> [likes].</param> - private UserItemDataDto UpdateUserItemRatingInternal(User user, BaseItem item, bool? likes) + private UserItemDataDto? UpdateUserItemRatingInternal(User user, BaseItem item, bool? likes) { // Get the user data for this item var data = _userDataRepository.GetUserData(user, item); @@ -691,6 +691,6 @@ public class UserLibraryController : BaseJellyfinApiController _userDataRepository.SaveUserData(user, item, data, UserDataSaveReason.UpdateUserRating, CancellationToken.None); } - return _userDataRepository.GetUserDataDto(item, user)!; + return _userDataRepository.GetUserDataDto(item, user); } } diff --git a/Jellyfin.Data/Entities/BaseItemEntity.cs b/Jellyfin.Data/Entities/BaseItemEntity.cs index 0c9020a66..33b2b6741 100644 --- a/Jellyfin.Data/Entities/BaseItemEntity.cs +++ b/Jellyfin.Data/Entities/BaseItemEntity.cs @@ -1,3 +1,6 @@ +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member +#pragma warning disable CA2227 // Collection properties should be read only + using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; @@ -5,9 +8,6 @@ using System.ComponentModel.DataAnnotations.Schema; namespace Jellyfin.Data.Entities; -#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member -#pragma warning disable CA2227 // Collection properties should be read only - public class BaseItemEntity { public required Guid Id { get; set; } diff --git a/Jellyfin.Data/Entities/BaseItemExtraType.cs b/Jellyfin.Data/Entities/BaseItemExtraType.cs index 341697436..54aef50e4 100644 --- a/Jellyfin.Data/Entities/BaseItemExtraType.cs +++ b/Jellyfin.Data/Entities/BaseItemExtraType.cs @@ -1,6 +1,6 @@ +#pragma warning disable CS1591 namespace Jellyfin.Data.Entities; -#pragma warning disable CS1591 public enum BaseItemExtraType { Unknown = 0, diff --git a/Jellyfin.Data/Entities/BaseItemImageInfo.cs b/Jellyfin.Data/Entities/BaseItemImageInfo.cs index 6390cac58..37723df11 100644 --- a/Jellyfin.Data/Entities/BaseItemImageInfo.cs +++ b/Jellyfin.Data/Entities/BaseItemImageInfo.cs @@ -1,8 +1,9 @@ +#pragma warning disable CA2227 + using System; using System.Collections.Generic; namespace Jellyfin.Data.Entities; -#pragma warning disable CA2227 /// <summary> /// Enum TrailerTypes. @@ -39,11 +40,12 @@ public class BaseItemImageInfo /// </summary> public int Height { get; set; } -#pragma warning disable CA1819 +#pragma warning disable CA1819 // Properties should not return arrays /// <summary> /// Gets or Sets the blurhash. /// </summary> public byte[]? Blurhash { get; set; } +#pragma warning restore CA1819 /// <summary> /// Gets or Sets the reference id to the BaseItem. diff --git a/Jellyfin.Data/Entities/ItemValueType.cs b/Jellyfin.Data/Entities/ItemValueType.cs index 006036b40..48c5d0f30 100644 --- a/Jellyfin.Data/Entities/ItemValueType.cs +++ b/Jellyfin.Data/Entities/ItemValueType.cs @@ -10,9 +10,7 @@ public enum ItemValueType /// <summary> /// Artists. /// </summary> -#pragma warning disable CA1008 // Enums should have zero value. Cannot apply here. Artist = 0, -#pragma warning restore CA1008 // Enums should have zero value /// <summary> /// Album. diff --git a/Jellyfin.Data/Entities/MediaStreamInfo.cs b/Jellyfin.Data/Entities/MediaStreamInfo.cs index 79053652a..77816565a 100644 --- a/Jellyfin.Data/Entities/MediaStreamInfo.cs +++ b/Jellyfin.Data/Entities/MediaStreamInfo.cs @@ -1,9 +1,10 @@ +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + using System; using System.Diagnostics.CodeAnalysis; namespace Jellyfin.Data.Entities; -#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member public class MediaStreamInfo { public required Guid ItemId { get; set; } diff --git a/Jellyfin.Data/Entities/People.cs b/Jellyfin.Data/Entities/People.cs index b1834a70d..18c778b17 100644 --- a/Jellyfin.Data/Entities/People.cs +++ b/Jellyfin.Data/Entities/People.cs @@ -1,8 +1,9 @@ +#pragma warning disable CA2227 // Collection properties should be read only + using System; using System.Collections.Generic; namespace Jellyfin.Data.Entities; -#pragma warning disable CA2227 // Collection properties should be read only /// <summary> /// People entity. diff --git a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs index e1f0dc3c0..4f8fe467a 100644 --- a/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs +++ b/Jellyfin.Server.Implementations/Item/BaseItemRepository.cs @@ -1,3 +1,9 @@ +#pragma warning disable RS0030 // Do not use banned APIs +// Do not enforce that because EFCore cannot deal with cultures well. +#pragma warning disable CA1304 // Specify CultureInfo +#pragma warning disable CA1311 // Specify a culture or use an invariant version +#pragma warning disable CA1862 // Use the 'StringComparison' method overloads to perform case-insensitive string comparisons + using System; using System.Collections.Concurrent; using System.Collections.Generic; @@ -31,14 +37,15 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using BaseItemDto = MediaBrowser.Controller.Entities.BaseItem; using BaseItemEntity = Jellyfin.Data.Entities.BaseItemEntity; -#pragma warning disable RS0030 // Do not use banned APIs -// Do not enforce that because EFCore cannot deal with cultures well. -#pragma warning disable CA1304 // Specify CultureInfo -#pragma warning disable CA1311 // Specify a culture or use an invariant version -#pragma warning disable CA1862 // Use the 'StringComparison' method overloads to perform case-insensitive string comparisons namespace Jellyfin.Server.Implementations.Item; + +/* + All queries in this class and all other nullable enabled EFCore repository classes will make libraral use of the null-forgiving operator "!". + This is done as the code isn't actually executed client side, but only the expressions are interpretet and the compiler cannot know that. + This is your only warning/message regarding this topic. +*/ /// <summary> /// Handles all storage logic for BaseItems. /// </summary> @@ -1065,7 +1072,7 @@ public sealed class BaseItemRepository ItemId = baseItemId, Id = Guid.NewGuid(), Path = e.Path, - Blurhash = e.BlurHash != null ? Encoding.UTF8.GetBytes(e.BlurHash) : null, + Blurhash = e.BlurHash is null ? null : Encoding.UTF8.GetBytes(e.BlurHash), DateModified = e.DateModified, Height = e.Height, Width = e.Width, @@ -1079,7 +1086,7 @@ public sealed class BaseItemRepository return new ItemImageInfo() { Path = appHost?.ExpandVirtualPath(e.Path) ?? e.Path, - BlurHash = e.Blurhash != null ? Encoding.UTF8.GetString(e.Blurhash) : null, + BlurHash = e.Blurhash is null ? null : Encoding.UTF8.GetString(e.Blurhash), DateModified = e.DateModified, Height = e.Height, Width = e.Width, diff --git a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs index bfe4f3300..71ea8af52 100644 --- a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs @@ -81,11 +81,11 @@ namespace MediaBrowser.Providers.MediaInfo if (!File.Exists(path)) { Directory.CreateDirectory(Path.GetDirectoryName(path)); - +#pragma warning disable CA1826 var imageStream = imageStreams.FirstOrDefault(i => (i.Comment ?? string.Empty).Contains("front", StringComparison.OrdinalIgnoreCase)) ?? imageStreams.FirstOrDefault(i => (i.Comment ?? string.Empty).Contains("cover", StringComparison.OrdinalIgnoreCase)) ?? imageStreams.FirstOrDefault(); - +#pragma warning restore CA1826 var imageStreamIndex = imageStream?.Index; var tempFile = await _mediaEncoder.ExtractAudioImage(item.Path, imageStreamIndex, cancellationToken).ConfigureAwait(false); diff --git a/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs b/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs index ba7ad4072..bd6b40c51 100644 --- a/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs @@ -88,6 +88,7 @@ namespace MediaBrowser.Providers.MediaInfo : TimeSpan.FromSeconds(10); var query = new MediaStreamQuery { ItemId = item.Id, Index = item.DefaultVideoStreamIndex }; +#pragma warning disable CA1826 var videoStream = _mediaSourceManager.GetMediaStreams(query).FirstOrDefault(); if (videoStream is null) { @@ -95,7 +96,7 @@ namespace MediaBrowser.Providers.MediaInfo query.Index = null; videoStream = _mediaSourceManager.GetMediaStreams(query).FirstOrDefault(); } - +#pragma warning restore CA1826 if (videoStream is null) { _logger.LogInformation("Skipping image extraction: no video stream found for {Path}.", item.Path ?? string.Empty); |
