aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Session/SessionManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Implementations/Session/SessionManager.cs')
-rw-r--r--MediaBrowser.Server.Implementations/Session/SessionManager.cs48
1 files changed, 29 insertions, 19 deletions
diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
index 5ea970426..f88e21aea 100644
--- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs
+++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
@@ -236,34 +236,44 @@ namespace MediaBrowser.Server.Implementations.Session
}
var activityDate = DateTime.UtcNow;
-
var session = await GetSessionInfo(appName, appVersion, deviceId, deviceName, remoteEndPoint, user).ConfigureAwait(false);
-
+ var lastActivityDate = session.LastActivityDate;
session.LastActivityDate = activityDate;
- if (user == null)
+ if (user != null)
{
- return session;
- }
-
- var lastActivityDate = user.LastActivityDate;
+ var userLastActivityDate = user.LastActivityDate ?? DateTime.MinValue;
+ user.LastActivityDate = activityDate;
- user.LastActivityDate = activityDate;
+ // Don't log in the db anymore frequently than 10 seconds
+ if ((activityDate - userLastActivityDate).TotalSeconds > 10)
+ {
+ try
+ {
+ // Save this directly. No need to fire off all the events for this.
+ await _userRepository.SaveUser(user, CancellationToken.None).ConfigureAwait(false);
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error updating user", ex);
+ }
+ }
+ }
- // Don't log in the db anymore frequently than 10 seconds
- if (lastActivityDate.HasValue && (activityDate - lastActivityDate.Value).TotalSeconds < 10)
+ if ((activityDate - lastActivityDate).TotalSeconds > 10)
{
- return session;
- }
+ EventHelper.FireEventIfNotNull(SessionActivity, this, new SessionEventArgs
+ {
+ SessionInfo = session
- // Save this directly. No need to fire off all the events for this.
- await _userRepository.SaveUser(user, CancellationToken.None).ConfigureAwait(false);
+ }, _logger);
+ }
- EventHelper.FireEventIfNotNull(SessionActivity, this, new SessionEventArgs
+ var controller = session.SessionController;
+ if (controller != null)
{
- SessionInfo = session
-
- }, _logger);
+ controller.OnActivity();
+ }
return session;
}
@@ -1680,7 +1690,7 @@ namespace MediaBrowser.Server.Implementations.Session
deviceId = info.DeviceId;
}
- return GetSessionInfo(appName, appVersion, deviceId, deviceName, remoteEndpoint, user);
+ return LogSessionActivity(appName, appVersion, deviceId, deviceName, remoteEndpoint, user);
}
public Task<SessionInfo> GetSessionByAuthenticationToken(string token, string deviceId, string remoteEndpoint)