Merge pull request #4847 from crobibero/display-prefs-migration-x251256
Fix another key collision in MigrateDisplayPreferencesDatabase
This commit is contained in:
commit
ca535b2fbe
|
@ -8,7 +8,6 @@ using System.Text.Json.Serialization;
|
||||||
using Jellyfin.Data.Entities;
|
using Jellyfin.Data.Entities;
|
||||||
using Jellyfin.Data.Enums;
|
using Jellyfin.Data.Enums;
|
||||||
using Jellyfin.Server.Implementations;
|
using Jellyfin.Server.Implementations;
|
||||||
using MediaBrowser.Common.Extensions;
|
|
||||||
using MediaBrowser.Controller;
|
using MediaBrowser.Controller;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
|
@ -81,7 +80,8 @@ namespace Jellyfin.Server.Migrations.Routines
|
||||||
{ "unstable", ChromecastVersion.Unstable }
|
{ "unstable", ChromecastVersion.Unstable }
|
||||||
};
|
};
|
||||||
|
|
||||||
var customDisplayPrefs = new HashSet<string>();
|
var displayPrefs = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
|
||||||
|
var customDisplayPrefs = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
|
||||||
var dbFilePath = Path.Combine(_paths.DataPath, DbFilename);
|
var dbFilePath = Path.Combine(_paths.DataPath, DbFilename);
|
||||||
using (var connection = SQLite3.Open(dbFilePath, ConnectionFlags.ReadOnly, null))
|
using (var connection = SQLite3.Open(dbFilePath, ConnectionFlags.ReadOnly, null))
|
||||||
{
|
{
|
||||||
|
@ -98,6 +98,15 @@ namespace Jellyfin.Server.Migrations.Routines
|
||||||
|
|
||||||
var itemId = new Guid(result[1].ToBlob());
|
var itemId = new Guid(result[1].ToBlob());
|
||||||
var dtoUserId = new Guid(result[1].ToBlob());
|
var dtoUserId = new Guid(result[1].ToBlob());
|
||||||
|
var client = result[2].ToString();
|
||||||
|
var displayPreferencesKey = $"{dtoUserId}|{itemId}|{client}";
|
||||||
|
if (displayPrefs.Contains(displayPreferencesKey))
|
||||||
|
{
|
||||||
|
// Duplicate display preference.
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
displayPrefs.Add(displayPreferencesKey);
|
||||||
var existingUser = _userManager.GetUserById(dtoUserId);
|
var existingUser = _userManager.GetUserById(dtoUserId);
|
||||||
if (existingUser == null)
|
if (existingUser == null)
|
||||||
{
|
{
|
||||||
|
@ -110,7 +119,7 @@ namespace Jellyfin.Server.Migrations.Routines
|
||||||
: ChromecastVersion.Stable;
|
: ChromecastVersion.Stable;
|
||||||
dto.CustomPrefs.Remove("chromecastVersion");
|
dto.CustomPrefs.Remove("chromecastVersion");
|
||||||
|
|
||||||
var displayPreferences = new DisplayPreferences(dtoUserId, itemId, result[2].ToString())
|
var displayPreferences = new DisplayPreferences(dtoUserId, itemId, client)
|
||||||
{
|
{
|
||||||
IndexBy = Enum.TryParse<IndexingKind>(dto.IndexBy, true, out var indexBy) ? indexBy : (IndexingKind?)null,
|
IndexBy = Enum.TryParse<IndexingKind>(dto.IndexBy, true, out var indexBy) ? indexBy : (IndexingKind?)null,
|
||||||
ShowBackdrop = dto.ShowBackdrop,
|
ShowBackdrop = dto.ShowBackdrop,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user