mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-08-30 23:00:18 -04:00
#22 - Need to strip html tags from overviews
This commit is contained in:
parent
6b327581c6
commit
0cc0fbbe43
@ -134,7 +134,7 @@ namespace MediaBrowser.Api.Library
|
||||
// Get everything
|
||||
var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true));
|
||||
|
||||
var result = new DtoBuilder(Logger).GetBaseItemDto(item, fields.ToList(), _libraryManager).Result;
|
||||
var result = new DtoBuilder(Logger, _libraryManager).GetBaseItemDto(item, fields.ToList()).Result;
|
||||
|
||||
return ToOptimizedResult(result);
|
||||
}
|
||||
@ -151,7 +151,7 @@ namespace MediaBrowser.Api.Library
|
||||
// Get everything
|
||||
var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true));
|
||||
|
||||
var result = new DtoBuilder(Logger).GetBaseItemDto(item, fields.ToList(), _libraryManager).Result;
|
||||
var result = new DtoBuilder(Logger, _libraryManager).GetBaseItemDto(item, fields.ToList()).Result;
|
||||
|
||||
return ToOptimizedResult(result);
|
||||
}
|
||||
@ -168,7 +168,7 @@ namespace MediaBrowser.Api.Library
|
||||
// Get everything
|
||||
var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true));
|
||||
|
||||
var result = new DtoBuilder(Logger).GetBaseItemDto(item, fields.ToList(), _libraryManager).Result;
|
||||
var result = new DtoBuilder(Logger, _libraryManager).GetBaseItemDto(item, fields.ToList()).Result;
|
||||
|
||||
return ToOptimizedResult(result);
|
||||
}
|
||||
@ -185,7 +185,7 @@ namespace MediaBrowser.Api.Library
|
||||
// Get everything
|
||||
var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true));
|
||||
|
||||
var result = new DtoBuilder(Logger).GetBaseItemDto(item, fields.ToList(), _libraryManager).Result;
|
||||
var result = new DtoBuilder(Logger, _libraryManager).GetBaseItemDto(item, fields.ToList()).Result;
|
||||
|
||||
return ToOptimizedResult(result);
|
||||
}
|
||||
|
@ -150,7 +150,7 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
return null;
|
||||
}
|
||||
|
||||
var dto = await new DtoBuilder(Logger).GetBaseItemDto(item, user, fields, LibraryManager).ConfigureAwait(false);
|
||||
var dto = await new DtoBuilder(Logger, LibraryManager).GetBaseItemDto(item, user, fields).ConfigureAwait(false);
|
||||
|
||||
dto.ChildCount = stub.Item2();
|
||||
|
||||
|
@ -52,7 +52,7 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
/// Fields to return within the items, in addition to basic information
|
||||
/// </summary>
|
||||
/// <value>The fields.</value>
|
||||
[ApiMember(Name = "Fields", Description = "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimeted. Options: AudioInfo, Chapters, DateCreated, DisplayMediaType, DisplayPreferences, Genres, ItemCounts, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, SeriesInfo, SortName, Studios, Taglines, TrailerUrls, UserData", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
|
||||
[ApiMember(Name = "Fields", Description = "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimeted. Options: AudioInfo, Chapters, DateCreated, DisplayMediaType, DisplayPreferences, Genres, ItemCounts, IndexOptions, MediaStreams, Overview, OverviewHtml, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, SeriesInfo, SortName, Studios, Taglines, TrailerUrls, UserData", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
|
||||
public string Fields { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -169,9 +169,9 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
|
||||
var fields = GetItemFields(request).ToList();
|
||||
|
||||
var dtoBuilder = new DtoBuilder(Logger);
|
||||
var dtoBuilder = new DtoBuilder(Logger, _libraryManager);
|
||||
|
||||
var returnItems = await Task.WhenAll(pagedItems.Select(i => dtoBuilder.GetBaseItemDto(i, user, fields, _libraryManager))).ConfigureAwait(false);
|
||||
var returnItems = await Task.WhenAll(pagedItems.Select(i => dtoBuilder.GetBaseItemDto(i, user, fields))).ConfigureAwait(false);
|
||||
|
||||
return new ItemsResult
|
||||
{
|
||||
|
@ -383,9 +383,9 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
|
||||
var movie = (Movie)item;
|
||||
|
||||
var dtoBuilder = new DtoBuilder(Logger);
|
||||
var dtoBuilder = new DtoBuilder(Logger, _libraryManager);
|
||||
|
||||
var items = movie.SpecialFeatures.Select(i => dtoBuilder.GetBaseItemDto(i, user, fields, _libraryManager)).AsParallel().Select(t => t.Result).ToList();
|
||||
var items = movie.SpecialFeatures.Select(i => dtoBuilder.GetBaseItemDto(i, user, fields)).AsParallel().Select(t => t.Result).ToList();
|
||||
|
||||
return ToOptimizedResult(items);
|
||||
}
|
||||
@ -404,9 +404,9 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
// Get everything
|
||||
var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)).ToList();
|
||||
|
||||
var dtoBuilder = new DtoBuilder(Logger);
|
||||
var dtoBuilder = new DtoBuilder(Logger, _libraryManager);
|
||||
|
||||
var items = item.LocalTrailers.Select(i => dtoBuilder.GetBaseItemDto(i, user, fields, _libraryManager)).AsParallel().Select(t => t.Result).ToList();
|
||||
var items = item.LocalTrailers.Select(i => dtoBuilder.GetBaseItemDto(i, user, fields)).AsParallel().Select(t => t.Result).ToList();
|
||||
|
||||
return ToOptimizedResult(items);
|
||||
}
|
||||
@ -425,9 +425,9 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
// Get everything
|
||||
var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)).ToList();
|
||||
|
||||
var dtoBuilder = new DtoBuilder(Logger);
|
||||
var dtoBuilder = new DtoBuilder(Logger, _libraryManager);
|
||||
|
||||
var result = dtoBuilder.GetBaseItemDto(item, user, fields, _libraryManager).Result;
|
||||
var result = dtoBuilder.GetBaseItemDto(item, user, fields).Result;
|
||||
|
||||
return ToOptimizedResult(result);
|
||||
}
|
||||
@ -441,9 +441,9 @@ namespace MediaBrowser.Api.UserLibrary
|
||||
// Get everything
|
||||
var fields = Enum.GetNames(typeof(ItemFields)).Select(i => (ItemFields)Enum.Parse(typeof(ItemFields), i, true)).ToList();
|
||||
|
||||
var dtoBuilder = new DtoBuilder(Logger);
|
||||
var dtoBuilder = new DtoBuilder(Logger, _libraryManager);
|
||||
|
||||
var result = dtoBuilder.GetBaseItemDto(item, user, fields, _libraryManager).Result;
|
||||
var result = dtoBuilder.GetBaseItemDto(item, user, fields).Result;
|
||||
|
||||
return ToOptimizedResult(result);
|
||||
}
|
||||
|
@ -137,13 +137,14 @@ namespace MediaBrowser.Api
|
||||
/// The _user manager
|
||||
/// </summary>
|
||||
private readonly IUserManager _userManager;
|
||||
|
||||
private readonly ILibraryManager _libraryManager;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="UserService" /> class.
|
||||
/// </summary>
|
||||
/// <param name="xmlSerializer">The XML serializer.</param>
|
||||
/// <exception cref="System.ArgumentNullException">xmlSerializer</exception>
|
||||
public UserService(IXmlSerializer xmlSerializer, IUserManager userManager)
|
||||
public UserService(IXmlSerializer xmlSerializer, IUserManager userManager, ILibraryManager libraryManager)
|
||||
: base()
|
||||
{
|
||||
if (xmlSerializer == null)
|
||||
@ -153,6 +154,7 @@ namespace MediaBrowser.Api
|
||||
|
||||
_xmlSerializer = xmlSerializer;
|
||||
_userManager = userManager;
|
||||
_libraryManager = libraryManager;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -162,7 +164,7 @@ namespace MediaBrowser.Api
|
||||
/// <returns>System.Object.</returns>
|
||||
public object Get(GetUsers request)
|
||||
{
|
||||
var dtoBuilder = new DtoBuilder(Logger);
|
||||
var dtoBuilder = new DtoBuilder(Logger, _libraryManager);
|
||||
|
||||
var tasks = _userManager.Users.OrderBy(u => u.Name).Select(dtoBuilder.GetUserDto).ToArray();
|
||||
|
||||
@ -185,7 +187,7 @@ namespace MediaBrowser.Api
|
||||
throw new ResourceNotFoundException("User not found");
|
||||
}
|
||||
|
||||
var result = new DtoBuilder(Logger).GetUserDto(user).Result;
|
||||
var result = new DtoBuilder(Logger, _libraryManager).GetUserDto(user).Result;
|
||||
|
||||
return ToOptimizedResult(result);
|
||||
}
|
||||
@ -298,8 +300,8 @@ namespace MediaBrowser.Api
|
||||
var newUser = _userManager.CreateUser(dtoUser.Name).Result;
|
||||
|
||||
newUser.UpdateConfiguration(dtoUser.Configuration, _xmlSerializer);
|
||||
|
||||
var result = new DtoBuilder(Logger).GetUserDto(newUser).Result;
|
||||
|
||||
var result = new DtoBuilder(Logger, _libraryManager).GetUserDto(newUser).Result;
|
||||
|
||||
return ToOptimizedResult(result);
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace MediaBrowser.Common.Extensions
|
||||
{
|
||||
@ -43,6 +44,18 @@ namespace MediaBrowser.Common.Extensions
|
||||
return val.Split(new[] { separator }, options);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Strips the HTML.
|
||||
/// </summary>
|
||||
/// <param name="htmlString">The HTML string.</param>
|
||||
/// <returns>System.String.</returns>
|
||||
public static string StripHtml(this string htmlString)
|
||||
{
|
||||
// http://stackoverflow.com/questions/1349023/how-can-i-strip-html-from-text-in-net
|
||||
const string pattern = @"<(.|\n)*?>";
|
||||
return Regex.Replace(htmlString, pattern, string.Empty);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Shuffles an IEnumerable
|
||||
/// </summary>
|
||||
|
@ -1,4 +1,5 @@
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Audio;
|
||||
using MediaBrowser.Controller.Entities.Movies;
|
||||
using MediaBrowser.Controller.Entities.TV;
|
||||
@ -6,12 +7,12 @@ using MediaBrowser.Model.Drawing;
|
||||
using MediaBrowser.Model.Dto;
|
||||
using MediaBrowser.Model.Entities;
|
||||
using MediaBrowser.Model.Logging;
|
||||
using MediaBrowser.Model.Querying;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Model.Querying;
|
||||
|
||||
namespace MediaBrowser.Controller.Library
|
||||
{
|
||||
@ -26,10 +27,12 @@ namespace MediaBrowser.Controller.Library
|
||||
const string IndexFolderDelimeter = "-index-";
|
||||
|
||||
private readonly ILogger _logger;
|
||||
private readonly ILibraryManager _libraryManager;
|
||||
|
||||
public DtoBuilder(ILogger logger)
|
||||
public DtoBuilder(ILogger logger, ILibraryManager libraryManager)
|
||||
{
|
||||
_logger = logger;
|
||||
_libraryManager = libraryManager;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -39,7 +42,7 @@ namespace MediaBrowser.Controller.Library
|
||||
/// <param name="fields">The fields.</param>
|
||||
/// <returns>Task{DtoBaseItem}.</returns>
|
||||
/// <exception cref="System.ArgumentNullException">item</exception>
|
||||
public async Task<BaseItemDto> GetBaseItemDto(BaseItem item, List<ItemFields> fields, ILibraryManager libraryManager)
|
||||
public async Task<BaseItemDto> GetBaseItemDto(BaseItem item, List<ItemFields> fields)
|
||||
{
|
||||
if (item == null)
|
||||
{
|
||||
@ -74,7 +77,7 @@ namespace MediaBrowser.Controller.Library
|
||||
|
||||
if (fields.Contains(ItemFields.People))
|
||||
{
|
||||
tasks.Add(AttachPeople(dto, item, libraryManager));
|
||||
tasks.Add(AttachPeople(dto, item));
|
||||
}
|
||||
|
||||
AttachBasicFields(dto, item, fields);
|
||||
@ -94,10 +97,9 @@ namespace MediaBrowser.Controller.Library
|
||||
/// <param name="item">The item.</param>
|
||||
/// <param name="user">The user.</param>
|
||||
/// <param name="fields">The fields.</param>
|
||||
/// <param name="libraryManager">The library manager.</param>
|
||||
/// <returns>Task{DtoBaseItem}.</returns>
|
||||
/// <exception cref="System.ArgumentNullException">item</exception>
|
||||
public async Task<BaseItemDto> GetBaseItemDto(BaseItem item, User user, List<ItemFields> fields, ILibraryManager libraryManager)
|
||||
public async Task<BaseItemDto> GetBaseItemDto(BaseItem item, User user, List<ItemFields> fields)
|
||||
{
|
||||
if (item == null)
|
||||
{
|
||||
@ -136,7 +138,7 @@ namespace MediaBrowser.Controller.Library
|
||||
|
||||
if (fields.Contains(ItemFields.People))
|
||||
{
|
||||
tasks.Add(AttachPeople(dto, item, libraryManager));
|
||||
tasks.Add(AttachPeople(dto, item));
|
||||
}
|
||||
|
||||
AttachBasicFields(dto, item, fields);
|
||||
@ -296,6 +298,11 @@ namespace MediaBrowser.Controller.Library
|
||||
dto.Overview = item.Overview;
|
||||
}
|
||||
|
||||
if (fields.Contains(ItemFields.OverviewHtml))
|
||||
{
|
||||
dto.OverviewHtml = string.IsNullOrEmpty(item.Overview) ? item.Overview : item.Overview.StripHtml();
|
||||
}
|
||||
|
||||
// If there are no backdrops, indicate what parent has them in case the Ui wants to allow inheritance
|
||||
if (dto.BackdropImageTags.Count == 0)
|
||||
{
|
||||
@ -515,7 +522,7 @@ namespace MediaBrowser.Controller.Library
|
||||
/// <param name="item">The item.</param>
|
||||
/// <param name="libraryManager">The library manager.</param>
|
||||
/// <returns>Task.</returns>
|
||||
private async Task AttachPeople(BaseItemDto dto, BaseItem item, ILibraryManager libraryManager)
|
||||
private async Task AttachPeople(BaseItemDto dto, BaseItem item)
|
||||
{
|
||||
if (item.People == null)
|
||||
{
|
||||
@ -531,7 +538,7 @@ namespace MediaBrowser.Controller.Library
|
||||
{
|
||||
try
|
||||
{
|
||||
return await libraryManager.GetPerson(c.Name).ConfigureAwait(false);
|
||||
return await _libraryManager.GetPerson(c.Name).ConfigureAwait(false);
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
|
@ -2,14 +2,13 @@
|
||||
using MediaBrowser.Controller.Configuration;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.MediaInfo;
|
||||
using MediaBrowser.Controller.Persistence;
|
||||
using MediaBrowser.Model.Entities;
|
||||
using MediaBrowser.Model.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Model.Logging;
|
||||
|
||||
namespace MediaBrowser.Controller.Providers.MediaInfo
|
||||
{
|
||||
|
@ -54,7 +54,7 @@ namespace MediaBrowser.Controller.Providers.Music
|
||||
{
|
||||
get
|
||||
{
|
||||
return "3-12-13.2";
|
||||
return "3-12-13.3";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,11 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Model.Entities;
|
||||
using System;
|
||||
|
||||
namespace MediaBrowser.Controller.Providers.Music
|
||||
{
|
||||
@ -18,11 +14,6 @@ namespace MediaBrowser.Controller.Providers.Music
|
||||
{
|
||||
var overview = data.bio != null ? data.bio.content : null;
|
||||
|
||||
if (!string.IsNullOrEmpty(overview))
|
||||
{
|
||||
overview = StripHtml(overview);
|
||||
}
|
||||
|
||||
artist.Overview = overview;
|
||||
|
||||
var yearFormed = 0;
|
||||
@ -53,11 +44,6 @@ namespace MediaBrowser.Controller.Providers.Music
|
||||
|
||||
var overview = data.wiki != null ? data.wiki.content : null;
|
||||
|
||||
if (!string.IsNullOrEmpty(overview))
|
||||
{
|
||||
overview = StripHtml(overview);
|
||||
}
|
||||
|
||||
item.Overview = overview;
|
||||
|
||||
var release = DateTime.MinValue;
|
||||
@ -70,13 +56,6 @@ namespace MediaBrowser.Controller.Providers.Music
|
||||
}
|
||||
}
|
||||
|
||||
private static string StripHtml(string htmlString)
|
||||
{
|
||||
// http://stackoverflow.com/questions/1349023/how-can-i-strip-html-from-text-in-net
|
||||
const string pattern = @"<(.|\n)*?>";
|
||||
return Regex.Replace(htmlString, pattern, string.Empty);
|
||||
}
|
||||
|
||||
private static void AddGenres(BaseItem item, LastfmTags tags)
|
||||
{
|
||||
foreach (var tag in tags.tag)
|
||||
|
@ -426,6 +426,13 @@ namespace MediaBrowser.Model.Dto
|
||||
[ProtoMember(69)]
|
||||
public string MediaType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the overview HTML.
|
||||
/// </summary>
|
||||
/// <value>The overview HTML.</value>
|
||||
[ProtoMember(70)]
|
||||
public string OverviewHtml { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets a value indicating whether this instance can resume.
|
||||
/// </summary>
|
||||
|
@ -51,6 +51,11 @@ namespace MediaBrowser.Model.Querying
|
||||
/// </summary>
|
||||
Overview,
|
||||
|
||||
/// <summary>
|
||||
/// The overview HTML
|
||||
/// </summary>
|
||||
OverviewHtml,
|
||||
|
||||
/// <summary>
|
||||
/// The id of the item's parent
|
||||
/// </summary>
|
||||
|
@ -174,7 +174,7 @@ namespace MediaBrowser.ServerApplication.EntryPoints
|
||||
/// <param name="e">The e.</param>
|
||||
async void userManager_UserUpdated(object sender, GenericEventArgs<User> e)
|
||||
{
|
||||
var dto = await new DtoBuilder(_logger).GetUserDto(e.Argument).ConfigureAwait(false);
|
||||
var dto = await new DtoBuilder(_logger, _libraryManager).GetUserDto(e.Argument).ConfigureAwait(false);
|
||||
|
||||
_serverManager.SendWebSocketMessage("UserUpdated", dto);
|
||||
}
|
||||
|
@ -35,6 +35,7 @@ namespace MediaBrowser.WebDashboard.Api
|
||||
/// The _user manager
|
||||
/// </summary>
|
||||
private readonly IUserManager _userManager;
|
||||
private readonly ILibraryManager _libraryManager;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="DashboardInfoWebSocketListener" /> class.
|
||||
@ -57,7 +58,7 @@ namespace MediaBrowser.WebDashboard.Api
|
||||
/// <returns>Task{IEnumerable{TaskInfo}}.</returns>
|
||||
protected override Task<DashboardInfo> GetDataToSend(object state)
|
||||
{
|
||||
return DashboardService.GetDashboardInfo(_appHost, Logger, _taskManager, _userManager);
|
||||
return DashboardService.GetDashboardInfo(_appHost, Logger, _taskManager, _userManager, _libraryManager);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -91,17 +91,19 @@ namespace MediaBrowser.WebDashboard.Api
|
||||
private readonly IUserManager _userManager;
|
||||
|
||||
private readonly IServerApplicationHost _appHost;
|
||||
private readonly ILibraryManager _libraryManager;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="DashboardService" /> class.
|
||||
/// </summary>
|
||||
/// <param name="taskManager">The task manager.</param>
|
||||
/// <param name="userManager">The user manager.</param>
|
||||
public DashboardService(ITaskManager taskManager, IUserManager userManager, IServerApplicationHost appHost)
|
||||
public DashboardService(ITaskManager taskManager, IUserManager userManager, IServerApplicationHost appHost, ILibraryManager libraryManager)
|
||||
{
|
||||
_taskManager = taskManager;
|
||||
_userManager = userManager;
|
||||
_appHost = appHost;
|
||||
_libraryManager = libraryManager;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -111,7 +113,7 @@ namespace MediaBrowser.WebDashboard.Api
|
||||
/// <returns>System.Object.</returns>
|
||||
public object Get(GetDashboardInfo request)
|
||||
{
|
||||
return GetDashboardInfo(_appHost, Logger, _taskManager, _userManager).Result;
|
||||
return GetDashboardInfo(_appHost, Logger, _taskManager, _userManager, _libraryManager).Result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -121,11 +123,11 @@ namespace MediaBrowser.WebDashboard.Api
|
||||
/// <param name="taskManager">The task manager.</param>
|
||||
/// <param name="userManager">The user manager.</param>
|
||||
/// <returns>DashboardInfo.</returns>
|
||||
public static async Task<DashboardInfo> GetDashboardInfo(IServerApplicationHost appHost, ILogger logger, ITaskManager taskManager, IUserManager userManager)
|
||||
public static async Task<DashboardInfo> GetDashboardInfo(IServerApplicationHost appHost, ILogger logger, ITaskManager taskManager, IUserManager userManager, ILibraryManager libraryManager)
|
||||
{
|
||||
var connections = userManager.ConnectedUsers.ToArray();
|
||||
|
||||
var dtoBuilder = new DtoBuilder(logger);
|
||||
var dtoBuilder = new DtoBuilder(logger, libraryManager);
|
||||
|
||||
var tasks = userManager.Users.Where(u => connections.Any(c => c.UserId == u.Id)).Select(dtoBuilder.GetUserDto);
|
||||
var users = await Task.WhenAll(tasks).ConfigureAwait(false);
|
||||
|
@ -237,4 +237,7 @@ Global
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(Performance) = preSolution
|
||||
HasPerformanceSessions = true
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
Loading…
x
Reference in New Issue
Block a user