moved displaypreferences to usermanager to solve concurrency issues

This commit is contained in:
Luke Pulverenti
2013-04-02 13:37:49 -04:00
parent dcc057f324
commit b4dd8a2106
17 changed files with 193 additions and 229 deletions

View File

@@ -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;
}
/// <summary>
@@ -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
/// <param name="item">The item.</param>
/// <param name="user">The user.</param>
/// <param name="fields">The fields.</param>
private void AttachUserSpecificInfo(BaseItemDto dto, BaseItem item, User user, List<ItemFields> fields)
private async Task AttachUserSpecificInfo(BaseItemDto dto, BaseItem item, User user, List<ItemFields> 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
}
}
}
/// <summary>
/// Attaches the primary image aspect ratio.
/// </summary>

View File

@@ -107,15 +107,6 @@ namespace MediaBrowser.Controller.Library
/// <returns>Task.</returns>
Task ValidateMediaLibrary(IProgress<double> progress, CancellationToken cancellationToken);
/// <summary>
/// Saves display preferences for a Folder
/// </summary>
/// <param name="user">The user.</param>
/// <param name="folder">The folder.</param>
/// <param name="data">The data.</param>
/// <returns>Task.</returns>
Task SaveDisplayPreferencesForFolder(User user, Folder folder, DisplayPreferences data);
/// <summary>
/// Gets the default view.
/// </summary>

View File

@@ -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
/// <param name="newPassword">The new password.</param>
/// <returns>Task.</returns>
Task ChangePassword(User user, string newPassword);
/// <summary>
/// Gets the display preferences.
/// </summary>
/// <param name="userId">The user id.</param>
/// <param name="displayPreferencesId">The display preferences id.</param>
/// <returns>DisplayPreferences.</returns>
Task<DisplayPreferences> GetDisplayPreferences(Guid userId, Guid displayPreferencesId);
/// <summary>
/// Saves display preferences for an item
/// </summary>
/// <param name="userId">The user id.</param>
/// <param name="displayPreferencesId">The display preferences id.</param>
/// <param name="displayPreferences">The display preferences.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
Task SaveDisplayPreferences(Guid userId, Guid displayPreferencesId, DisplayPreferences displayPreferences,
CancellationToken cancellationToken);
}
}