using System; using System.Linq; using Jellyfin.Data.Entities; using MediaBrowser.Controller; namespace Jellyfin.Server.Implementations.Users { /// /// Manages the storage and retrieval of display preferences through Entity Framework. /// public class DisplayPreferencesManager : IDisplayPreferencesManager { private readonly JellyfinDbProvider _dbProvider; /// /// Initializes a new instance of the class. /// /// The Jellyfin db provider. public DisplayPreferencesManager(JellyfinDbProvider dbProvider) { _dbProvider = dbProvider; } /// public DisplayPreferences GetDisplayPreferences(Guid userId, string client) { var dbContext = _dbProvider.CreateContext(); var user = dbContext.Users.Find(userId); #pragma warning disable CA1307 var prefs = user.DisplayPreferences.FirstOrDefault(pref => string.Equals(pref.Client, client)); if (prefs == null) { prefs = new DisplayPreferences(client, userId); user.DisplayPreferences.Add(prefs); } return prefs; } /// public void SaveChanges(DisplayPreferences preferences) { var dbContext = _dbProvider.CreateContext(); dbContext.Update(preferences); dbContext.SaveChanges(); } } }