aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs13
-rw-r--r--MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs6
-rw-r--r--MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs18
3 files changed, 20 insertions, 17 deletions
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index bcf62115c..fa72b5aba 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -1032,7 +1032,7 @@ namespace MediaBrowser.Controller.Entities
/// <exception cref="System.ArgumentNullException"></exception>
public IEnumerable<BaseItem> GetRecursiveChildren(User user, bool includeLinkedChildren = true)
{
- return GetRecursiveChildren(user, null, true);
+ return GetRecursiveChildren(user, null, includeLinkedChildren);
}
/// <summary>
@@ -1047,7 +1047,7 @@ namespace MediaBrowser.Controller.Entities
{
if (user == null)
{
- throw new ArgumentNullException();
+ throw new ArgumentNullException("user");
}
var initialCount = _lastRecursiveCount == 0 ? _children.Count : _lastRecursiveCount;
@@ -1057,12 +1057,7 @@ namespace MediaBrowser.Controller.Entities
_lastRecursiveCount = list.Count;
- if (includeLinkedChildren && hasLinkedChildren)
- {
- list = list.DistinctBy(i => i.Id).ToList();
- }
-
- return list;
+ return hasLinkedChildren ? list.DistinctBy(i => i.Id).ToList() : list;
}
/// <summary>
@@ -1071,7 +1066,7 @@ namespace MediaBrowser.Controller.Entities
/// <returns>IList{BaseItem}.</returns>
public IList<BaseItem> GetRecursiveChildren()
{
- return GetRecursiveChildren(null);
+ return GetRecursiveChildren(null, null, true);
}
/// <summary>
diff --git a/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs b/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs
index 7a3081ab5..8b778f26c 100644
--- a/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs
+++ b/MediaBrowser.Server.Implementations/EntryPoints/LibraryChangedNotifier.cs
@@ -230,7 +230,9 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
var collections = user.RootFolder.GetChildren(user, true).ToList();
- var allRecursiveChildren = user.RootFolder.GetRecursiveChildren(user).ToDictionary(i => i.Id);
+ var allRecursiveChildren = user.RootFolder.GetRecursiveChildren(user)
+ .Select(i => i.Id)
+ .ToDictionary(i => i);
return new LibraryUpdateInfo
{
@@ -256,7 +258,7 @@ namespace MediaBrowser.Server.Implementations.EntryPoints
/// <param name="allRecursiveChildren">All recursive children.</param>
/// <param name="includeIfNotFound">if set to <c>true</c> [include if not found].</param>
/// <returns>IEnumerable{``0}.</returns>
- private IEnumerable<T> TranslatePhysicalItemToUserLibrary<T>(T item, User user, IEnumerable<BaseItem> collections, Dictionary<Guid, BaseItem> allRecursiveChildren, bool includeIfNotFound = false)
+ private IEnumerable<T> TranslatePhysicalItemToUserLibrary<T>(T item, User user, IEnumerable<BaseItem> collections, Dictionary<Guid, Guid> allRecursiveChildren, bool includeIfNotFound = false)
where T : BaseItem
{
// If the physical root changed, return the user root
diff --git a/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs b/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs
index 399cce945..41cb7eb6b 100644
--- a/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs
+++ b/MediaBrowser.Server.Implementations/Session/SessionWebSocketListener.cs
@@ -95,17 +95,23 @@ namespace MediaBrowser.Server.Implementations.Session
var version = vals[2];
var deviceName = vals.Length > 3 ? vals[3] : string.Empty;
- if (!string.IsNullOrEmpty(deviceName))
- {
- _logger.Debug("Logging session activity");
- await _sessionManager.LogSessionActivity(client, version, deviceId, deviceName, null).ConfigureAwait(false);
- }
-
var session = _sessionManager.Sessions
.FirstOrDefault(i => string.Equals(i.DeviceId, deviceId) &&
string.Equals(i.Client, client) &&
string.Equals(i.ApplicationVersion, version));
+ if (session == null && !string.IsNullOrEmpty(deviceName))
+ {
+ _logger.Debug("Logging session activity");
+
+ await _sessionManager.LogSessionActivity(client, version, deviceId, deviceName, null).ConfigureAwait(false);
+
+ session = _sessionManager.Sessions
+ .FirstOrDefault(i => string.Equals(i.DeviceId, deviceId) &&
+ string.Equals(i.Client, client) &&
+ string.Equals(i.ApplicationVersion, version));
+ }
+
if (session != null)
{
var controller = new WebSocketController(session, _appHost);