@ -81,6 +81,7 @@ namespace Jellyfin.Server.Migrations.Routines
{ "unstable" , ChromecastVersion . Unstable }
{ "unstable" , ChromecastVersion . Unstable }
} ;
} ;
var customDisplayPrefs = new HashSet < string > ( ) ;
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 ) )
{
{
@ -185,7 +186,13 @@ namespace Jellyfin.Server.Migrations.Routines
foreach ( var ( key , value ) in dto . CustomPrefs )
foreach ( var ( key , value ) in dto . CustomPrefs )
{
{
dbContext . Add ( new CustomItemDisplayPreferences ( displayPreferences . UserId , itemId , displayPreferences . Client , key , value ) ) ;
// Custom display preferences can have a key collision.
var indexKey = $"{displayPreferences.UserId}|{itemId}|{displayPreferences.Client}|{key}" ;
if ( ! customDisplayPrefs . Contains ( indexKey ) )
{
dbContext . Add ( new CustomItemDisplayPreferences ( displayPreferences . UserId , itemId , displayPreferences . Client , key , value ) ) ;
customDisplayPrefs . Add ( indexKey ) ;
}
}
}
dbContext . Add ( displayPreferences ) ;
dbContext . Add ( displayPreferences ) ;