From b4dd8a210629bc74445f106e2379b986af9520c5 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 2 Apr 2013 13:37:49 -0400 Subject: moved displaypreferences to usermanager to solve concurrency issues --- MediaBrowser.Controller/Library/DtoBuilder.cs | 16 ++++++++++------ MediaBrowser.Controller/Library/ILibraryManager.cs | 9 --------- MediaBrowser.Controller/Library/IUserManager.cs | 20 ++++++++++++++++++++ 3 files changed, 30 insertions(+), 15 deletions(-) (limited to 'MediaBrowser.Controller/Library') diff --git a/MediaBrowser.Controller/Library/DtoBuilder.cs b/MediaBrowser.Controller/Library/DtoBuilder.cs index 36c7eba1f..419d3527d 100644 --- a/MediaBrowser.Controller/Library/DtoBuilder.cs +++ b/MediaBrowser.Controller/Library/DtoBuilder.cs @@ -28,11 +28,13 @@ namespace MediaBrowser.Controller.Library private readonly ILogger _logger; private readonly ILibraryManager _libraryManager; + private readonly IUserManager _userManager; - public DtoBuilder(ILogger logger, ILibraryManager libraryManager) + public DtoBuilder(ILogger logger, ILibraryManager libraryManager, IUserManager userManager) { _logger = logger; _libraryManager = libraryManager; + _userManager = userManager; } /// @@ -141,9 +143,9 @@ namespace MediaBrowser.Controller.Library tasks.Add(AttachPeople(dto, item)); } - AttachBasicFields(dto, item, fields); + tasks.Add(AttachUserSpecificInfo(dto, item, user, fields)); - AttachUserSpecificInfo(dto, item, user, fields); + AttachBasicFields(dto, item, fields); // Make sure all the tasks we kicked off have completed. if (tasks.Count > 0) @@ -161,7 +163,7 @@ namespace MediaBrowser.Controller.Library /// The item. /// The user. /// The fields. - private void AttachUserSpecificInfo(BaseItemDto dto, BaseItem item, User user, List fields) + private async Task AttachUserSpecificInfo(BaseItemDto dto, BaseItem item, User user, List fields) { if (fields.Contains(ItemFields.UserData)) { @@ -175,7 +177,9 @@ namespace MediaBrowser.Controller.Library if (item.IsFolder && fields.Contains(ItemFields.DisplayPreferences)) { - dto.DisplayPreferences = ((Folder)item).GetDisplayPreferences(user, false) ?? new DisplayPreferences { UserId = user.Id }; + var displayPreferencesId = ((Folder) item).DisplayPreferencesId; + + dto.DisplayPreferences = await _userManager.GetDisplayPreferences(user.Id, displayPreferencesId).ConfigureAwait(false); } if (item.IsFolder) @@ -191,7 +195,7 @@ namespace MediaBrowser.Controller.Library } } } - + /// /// Attaches the primary image aspect ratio. /// diff --git a/MediaBrowser.Controller/Library/ILibraryManager.cs b/MediaBrowser.Controller/Library/ILibraryManager.cs index 1b9d2f4b2..da2f46abb 100644 --- a/MediaBrowser.Controller/Library/ILibraryManager.cs +++ b/MediaBrowser.Controller/Library/ILibraryManager.cs @@ -107,15 +107,6 @@ namespace MediaBrowser.Controller.Library /// Task. Task ValidateMediaLibrary(IProgress progress, CancellationToken cancellationToken); - /// - /// Saves display preferences for a Folder - /// - /// The user. - /// The folder. - /// The data. - /// Task. - Task SaveDisplayPreferencesForFolder(User user, Folder folder, DisplayPreferences data); - /// /// Gets the default view. /// diff --git a/MediaBrowser.Controller/Library/IUserManager.cs b/MediaBrowser.Controller/Library/IUserManager.cs index 229e4cb76..0e93c15cf 100644 --- a/MediaBrowser.Controller/Library/IUserManager.cs +++ b/MediaBrowser.Controller/Library/IUserManager.cs @@ -5,6 +5,7 @@ using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Model.Entities; namespace MediaBrowser.Controller.Library { @@ -178,5 +179,24 @@ namespace MediaBrowser.Controller.Library /// The new password. /// Task. Task ChangePassword(User user, string newPassword); + + /// + /// Gets the display preferences. + /// + /// The user id. + /// The display preferences id. + /// DisplayPreferences. + Task GetDisplayPreferences(Guid userId, Guid displayPreferencesId); + + /// + /// Saves display preferences for an item + /// + /// The user id. + /// The display preferences id. + /// The display preferences. + /// The cancellation token. + /// Task. + Task SaveDisplayPreferences(Guid userId, Guid displayPreferencesId, DisplayPreferences displayPreferences, + CancellationToken cancellationToken); } } -- cgit v1.2.3