Переглянути джерело

Merge pull request #6823 from crobibero/displaypreferencesdto

Fix nullability on DisplayPreferencesDto
Claus Vium 3 роки тому
батько
коміт
7b1314aff5

+ 8 - 5
Jellyfin.Api/Controllers/DisplayPreferencesController.cs

@@ -8,7 +8,7 @@ using Jellyfin.Data.Entities;
 using Jellyfin.Data.Enums;
 using MediaBrowser.Common.Extensions;
 using MediaBrowser.Controller;
-using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Dto;
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
@@ -143,21 +143,24 @@ namespace Jellyfin.Api.Controllers
 
             existingDisplayPreferences.ScrollDirection = displayPreferences.ScrollDirection;
             existingDisplayPreferences.ChromecastVersion = displayPreferences.CustomPrefs.TryGetValue("chromecastVersion", out var chromecastVersion)
+                                                           && !string.IsNullOrEmpty(chromecastVersion)
                 ? Enum.Parse<ChromecastVersion>(chromecastVersion, true)
                 : ChromecastVersion.Stable;
             displayPreferences.CustomPrefs.Remove("chromecastVersion");
 
-            existingDisplayPreferences.EnableNextVideoInfoOverlay = displayPreferences.CustomPrefs.TryGetValue("enableNextVideoInfoOverlay", out var enableNextVideoInfoOverlay)
-                ? bool.Parse(enableNextVideoInfoOverlay)
-                : true;
+            existingDisplayPreferences.EnableNextVideoInfoOverlay = !displayPreferences.CustomPrefs.TryGetValue("enableNextVideoInfoOverlay", out var enableNextVideoInfoOverlay)
+                                                                    || string.IsNullOrEmpty(enableNextVideoInfoOverlay)
+                                                                    || bool.Parse(enableNextVideoInfoOverlay);
             displayPreferences.CustomPrefs.Remove("enableNextVideoInfoOverlay");
 
             existingDisplayPreferences.SkipBackwardLength = displayPreferences.CustomPrefs.TryGetValue("skipBackLength", out var skipBackLength)
+                                                            && !string.IsNullOrEmpty(skipBackLength)
                 ? int.Parse(skipBackLength, CultureInfo.InvariantCulture)
                 : 10000;
             displayPreferences.CustomPrefs.Remove("skipBackLength");
 
             existingDisplayPreferences.SkipForwardLength = displayPreferences.CustomPrefs.TryGetValue("skipForwardLength", out var skipForwardLength)
+                                                           && !string.IsNullOrEmpty(skipForwardLength)
                 ? int.Parse(skipForwardLength, CultureInfo.InvariantCulture)
                 : 30000;
             displayPreferences.CustomPrefs.Remove("skipForwardLength");
@@ -196,7 +199,7 @@ namespace Jellyfin.Api.Controllers
             }
 
             var itemPrefs = _displayPreferencesManager.GetItemDisplayPreferences(existingDisplayPreferences.UserId, itemId, existingDisplayPreferences.Client);
-            itemPrefs.SortBy = displayPreferences.SortBy;
+            itemPrefs.SortBy = displayPreferences.SortBy ?? "SortName";
             itemPrefs.SortOrder = displayPreferences.SortOrder;
             itemPrefs.RememberIndexing = displayPreferences.RememberIndexing;
             itemPrefs.RememberSorting = displayPreferences.RememberSorting;

+ 2 - 1
Jellyfin.Server/Migrations/Routines/MigrateDisplayPreferencesDb.cs

@@ -9,7 +9,7 @@ using Jellyfin.Data.Enums;
 using Jellyfin.Server.Implementations;
 using MediaBrowser.Controller;
 using MediaBrowser.Controller.Library;
-using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Dto;
 using Microsoft.Extensions.Logging;
 using SQLitePCL.pretty;
 
@@ -114,6 +114,7 @@ namespace Jellyfin.Server.Migrations.Routines
                     }
 
                     var chromecastVersion = dto.CustomPrefs.TryGetValue("chromecastVersion", out var version)
+                                            && !string.IsNullOrEmpty(version)
                         ? chromecastDict[version]
                         : ChromecastVersion.Stable;
                     dto.CustomPrefs.Remove("chromecastVersion");

+ 4 - 4
Jellyfin.Api/Models/DisplayPreferencesDtos/DisplayPreferencesDto.cs → MediaBrowser.Model/Dto/DisplayPreferencesDto.cs

@@ -1,7 +1,7 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
 using Jellyfin.Data.Enums;
 
-namespace Jellyfin.Api.Models.DisplayPreferencesDtos
+namespace MediaBrowser.Model.Dto
 {
     /// <summary>
     /// Defines the display preferences for any item that supports them (usually Folders).
@@ -17,7 +17,7 @@ namespace Jellyfin.Api.Models.DisplayPreferencesDtos
             PrimaryImageHeight = 250;
             PrimaryImageWidth = 250;
             ShowBackdrop = true;
-            CustomPrefs = new Dictionary<string, string>();
+            CustomPrefs = new Dictionary<string, string?>();
         }
 
         /// <summary>
@@ -66,7 +66,7 @@ namespace Jellyfin.Api.Models.DisplayPreferencesDtos
         /// Gets the custom prefs.
         /// </summary>
         /// <value>The custom prefs.</value>
-        public Dictionary<string, string> CustomPrefs { get; }
+        public Dictionary<string, string?> CustomPrefs { get; }
 
         /// <summary>
         /// Gets or sets the scroll direction.

+ 0 - 107
MediaBrowser.Model/Entities/DisplayPreferencesDto.cs

@@ -1,107 +0,0 @@
-#nullable disable
-using System.Collections.Generic;
-using Jellyfin.Data.Enums;
-
-namespace MediaBrowser.Model.Entities
-{
-    /// <summary>
-    /// Defines the display preferences for any item that supports them (usually Folders).
-    /// </summary>
-    public class DisplayPreferencesDto
-    {
-        /// <summary>
-        /// Initializes a new instance of the <see cref="DisplayPreferencesDto" /> class.
-        /// </summary>
-        public DisplayPreferencesDto()
-        {
-            RememberIndexing = false;
-            PrimaryImageHeight = 250;
-            PrimaryImageWidth = 250;
-            ShowBackdrop = true;
-            CustomPrefs = new Dictionary<string, string>();
-        }
-
-        /// <summary>
-        /// Gets or sets the user id.
-        /// </summary>
-        /// <value>The user id.</value>
-        public string Id { get; set; }
-
-        /// <summary>
-        /// Gets or sets the type of the view.
-        /// </summary>
-        /// <value>The type of the view.</value>
-        public string ViewType { get; set; }
-
-        /// <summary>
-        /// Gets or sets the sort by.
-        /// </summary>
-        /// <value>The sort by.</value>
-        public string SortBy { get; set; }
-
-        /// <summary>
-        /// Gets or sets the index by.
-        /// </summary>
-        /// <value>The index by.</value>
-        public string IndexBy { get; set; }
-
-        /// <summary>
-        /// Gets or sets a value indicating whether [remember indexing].
-        /// </summary>
-        /// <value><c>true</c> if [remember indexing]; otherwise, <c>false</c>.</value>
-        public bool RememberIndexing { get; set; }
-
-        /// <summary>
-        /// Gets or sets the height of the primary image.
-        /// </summary>
-        /// <value>The height of the primary image.</value>
-        public int PrimaryImageHeight { get; set; }
-
-        /// <summary>
-        /// Gets or sets the width of the primary image.
-        /// </summary>
-        /// <value>The width of the primary image.</value>
-        public int PrimaryImageWidth { get; set; }
-
-        /// <summary>
-        /// Gets or sets the custom prefs.
-        /// </summary>
-        /// <value>The custom prefs.</value>
-        public Dictionary<string, string> CustomPrefs { get; set; }
-
-        /// <summary>
-        /// Gets or sets the scroll direction.
-        /// </summary>
-        /// <value>The scroll direction.</value>
-        public ScrollDirection ScrollDirection { get; set; }
-
-        /// <summary>
-        /// Gets or sets a value indicating whether to show backdrops on this item.
-        /// </summary>
-        /// <value><c>true</c> if showing backdrops; otherwise, <c>false</c>.</value>
-        public bool ShowBackdrop { get; set; }
-
-        /// <summary>
-        /// Gets or sets a value indicating whether [remember sorting].
-        /// </summary>
-        /// <value><c>true</c> if [remember sorting]; otherwise, <c>false</c>.</value>
-        public bool RememberSorting { get; set; }
-
-        /// <summary>
-        /// Gets or sets the sort order.
-        /// </summary>
-        /// <value>The sort order.</value>
-        public SortOrder SortOrder { get; set; }
-
-        /// <summary>
-        /// Gets or sets a value indicating whether [show sidebar].
-        /// </summary>
-        /// <value><c>true</c> if [show sidebar]; otherwise, <c>false</c>.</value>
-        public bool ShowSidebar { get; set; }
-
-        /// <summary>
-        /// Gets or sets the client.
-        /// </summary>
-        public string Client { get; set; }
-    }
-}