From 48facb797ed912e4ea6b04b17d1ff190ac2daac4 Mon Sep 17 00:00:00 2001 From: stefan Date: Wed, 12 Sep 2018 19:26:21 +0200 Subject: Update to 3.5.2 and .net core 2.1 --- .../EntryPoints/UserDataChangeNotifier.cs | 74 ++++++++++------------ 1 file changed, 32 insertions(+), 42 deletions(-) (limited to 'Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs') diff --git a/Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs b/Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs index 13c72bf3c..36e29e46a 100644 --- a/Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs +++ b/Emby.Server.Implementations/EntryPoints/UserDataChangeNotifier.cs @@ -27,7 +27,7 @@ namespace Emby.Server.Implementations.EntryPoints private readonly ITimerFactory _timerFactory; private const int UpdateDuration = 500; - private readonly Dictionary> _changedItems = new Dictionary>(); + private readonly Dictionary> _changedItems = new Dictionary>(); public UserDataChangeNotifier(IUserDataManager userDataManager, ISessionManager sessionManager, ILogger logger, IUserManager userManager, ITimerFactory timerFactory) { @@ -62,22 +62,22 @@ namespace Emby.Server.Implementations.EntryPoints UpdateTimer.Change(UpdateDuration, Timeout.Infinite); } - List keys; + List keys; if (!_changedItems.TryGetValue(e.UserId, out keys)) { - keys = new List(); + keys = new List(); _changedItems[e.UserId] = keys; } keys.Add(e.Item); - var baseItem = e.Item as BaseItem; + var baseItem = e.Item; // Go up one level for indicators if (baseItem != null) { - var parent = baseItem.IsOwnedItem ? baseItem.GetOwner() : baseItem.GetParent(); + var parent = baseItem.GetOwner() ?? baseItem.GetParent(); if (parent != null) { @@ -105,50 +105,41 @@ namespace Emby.Server.Implementations.EntryPoints } } - private async Task SendNotifications(IEnumerable>> changes, CancellationToken cancellationToken) + private async Task SendNotifications(List>> changes, CancellationToken cancellationToken) { foreach (var pair in changes) { - var userId = pair.Key; - var userSessions = _sessionManager.Sessions - .Where(u => u.ContainsUser(userId) && u.SessionController != null && u.IsActive) - .ToList(); + await SendNotifications(pair.Key, pair.Value, cancellationToken).ConfigureAwait(false); + } + } + + private Task SendNotifications(Guid userId, List changedItems, CancellationToken cancellationToken) + { + return _sessionManager.SendMessageToUserSessions(new List { userId }, "UserDataChanged", () => GetUserDataChangeInfo(userId, changedItems), cancellationToken); + } + + private UserDataChangeInfo GetUserDataChangeInfo(Guid userId, List changedItems) + { + var user = _userManager.GetUserById(userId); - if (userSessions.Count > 0) + var dtoList = changedItems + .DistinctBy(i => i.Id) + .Select(i => { - var user = _userManager.GetUserById(userId); - - var dtoList = pair.Value - .DistinctBy(i => i.Id) - .Select(i => - { - var dto = _userDataManager.GetUserDataDto(i, user); - dto.ItemId = i.Id.ToString("N"); - return dto; - }) - .ToArray(); - - var info = new UserDataChangeInfo - { - UserId = userId.ToString("N"), + var dto = _userDataManager.GetUserDataDto(i, user); + dto.ItemId = i.Id.ToString("N"); + return dto; + }) + .ToArray(); - UserDataList = dtoList - }; + var userIdString = userId.ToString("N"); - foreach (var userSession in userSessions) - { - try - { - await userSession.SessionController.SendUserDataChangeInfo(info, cancellationToken).ConfigureAwait(false); - } - catch (Exception ex) - { - _logger.ErrorException("Error sending UserDataChanged message", ex); - } - } - } + return new UserDataChangeInfo + { + UserId = userIdString, - } + UserDataList = dtoList + }; } public void Dispose() @@ -160,7 +151,6 @@ namespace Emby.Server.Implementations.EntryPoints } _userDataManager.UserDataSaved -= _userDataManager_UserDataSaved; - GC.SuppressFinalize(this); } } } -- cgit v1.2.3