added user data save event

pull/702/head
Luke Pulverenti 11 years ago
parent 0abc9d3493
commit 33a3e215d0

@ -64,7 +64,7 @@ namespace MediaBrowser.Api
if (!string.IsNullOrEmpty(client) && !string.IsNullOrEmpty(deviceId) && !string.IsNullOrEmpty(device) && !string.IsNullOrEmpty(version))
{
SessionManager.LogConnectionActivity(client, version, deviceId, device, user);
SessionManager.LogSessionActivity(client, version, deviceId, device, user);
}
}
}

@ -413,6 +413,11 @@ namespace MediaBrowser.Common.Implementations
{
Logger.Error("Error creating {0}", ex, type.Name);
#if DEBUG
throw;
#endif
// Don't blow up in release mode
return null;
}
}

@ -11,6 +11,11 @@ namespace MediaBrowser.Controller.Library
/// </summary>
public interface IUserDataManager
{
/// <summary>
/// Occurs when [user data saved].
/// </summary>
event EventHandler<UserDataSaveEventArgs> UserDataSaved;
/// <summary>
/// Saves the user data.
/// </summary>

@ -0,0 +1,36 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Entities;
using System;
namespace MediaBrowser.Controller.Library
{
/// <summary>
/// Class UserDataSaveEventArgs
/// </summary>
public class UserDataSaveEventArgs : EventArgs
{
/// <summary>
/// Gets or sets the user id.
/// </summary>
/// <value>The user id.</value>
public Guid UserId { get; set; }
/// <summary>
/// Gets or sets the key.
/// </summary>
/// <value>The key.</value>
public string Key { get; set; }
/// <summary>
/// Gets or sets the save reason.
/// </summary>
/// <value>The save reason.</value>
public UserDataSaveReason SaveReason { get; set; }
/// <summary>
/// Gets or sets the user data.
/// </summary>
/// <value>The user data.</value>
public UserItemData UserData { get; set; }
}
}

@ -98,6 +98,7 @@
<Compile Include="Library\IMetadataSaver.cs" />
<Compile Include="Library\ItemUpdateType.cs" />
<Compile Include="Library\IUserDataManager.cs" />
<Compile Include="Library\UserDataSaveEventArgs.cs" />
<Compile Include="LiveTv\ChannelInfo.cs" />
<Compile Include="LiveTv\ILiveTvManager.cs" />
<Compile Include="LiveTv\ILiveTvService.cs" />
@ -174,7 +175,7 @@
<Compile Include="Kernel.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Providers\BaseMetadataProvider.cs" />
<Compile Include="Session\ISessionRemoteController.cs" />
<Compile Include="Session\ISessionController.cs" />
<Compile Include="Session\PlaybackInfo.cs" />
<Compile Include="Session\PlaybackProgressInfo.cs" />
<Compile Include="Session\PlaybackStopInfo.cs" />

@ -4,7 +4,7 @@ using System.Threading.Tasks;
namespace MediaBrowser.Controller.Session
{
public interface ISessionRemoteController
public interface ISessionController
{
/// <summary>
/// Supportses the specified session.

@ -17,7 +17,7 @@ namespace MediaBrowser.Controller.Session
/// Adds the parts.
/// </summary>
/// <param name="remoteControllers">The remote controllers.</param>
void AddParts(IEnumerable<ISessionRemoteController> remoteControllers);
void AddParts(IEnumerable<ISessionController> remoteControllers);
/// <summary>
/// Occurs when [playback start].
@ -50,7 +50,7 @@ namespace MediaBrowser.Controller.Session
/// <param name="user">The user.</param>
/// <returns>Task.</returns>
/// <exception cref="System.ArgumentNullException">user</exception>
Task<SessionInfo> LogConnectionActivity(string clientType, string appVersion, string deviceId, string deviceName, User user);
Task<SessionInfo> LogSessionActivity(string clientType, string appVersion, string deviceId, string deviceName, User user);
/// <summary>
/// Used to report that playback has started for an item

@ -1,9 +1,9 @@
using System.Collections.Generic;
using System.Linq;
using MediaBrowser.Common.Net;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Net;
using System;
using System.Collections.Generic;
using System.Linq;
namespace MediaBrowser.Controller.Session
{

@ -1,4 +1,5 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Common.Events;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Model.Entities;
@ -15,6 +16,8 @@ namespace MediaBrowser.Server.Implementations.Library
/// </summary>
public class UserDataManager : IUserDataManager
{
public event EventHandler<UserDataSaveEventArgs> UserDataSaved;
private readonly ConcurrentDictionary<string, UserItemData> _userData = new ConcurrentDictionary<string, UserItemData>();
private readonly ILogger _logger;
@ -84,6 +87,15 @@ namespace MediaBrowser.Server.Implementations.Library
throw;
}
EventHelper.FireEventIfNotNull(UserDataSaved, this, new UserDataSaveEventArgs
{
Key = key,
UserData = userData,
SaveReason = reason,
UserId = userId
}, _logger);
}
/// <summary>

@ -78,8 +78,8 @@ namespace MediaBrowser.Server.Implementations.Session
_userRepository = userRepository;
}
private List<ISessionRemoteController> _remoteControllers;
public void AddParts(IEnumerable<ISessionRemoteController> remoteControllers)
private List<ISessionController> _remoteControllers;
public void AddParts(IEnumerable<ISessionController> remoteControllers)
{
_remoteControllers = remoteControllers.ToList();
}
@ -104,7 +104,7 @@ namespace MediaBrowser.Server.Implementations.Session
/// <returns>Task.</returns>
/// <exception cref="System.UnauthorizedAccessException"></exception>
/// <exception cref="System.ArgumentNullException">user</exception>
public async Task<SessionInfo> LogConnectionActivity(string clientType, string appVersion, string deviceId, string deviceName, User user)
public async Task<SessionInfo> LogSessionActivity(string clientType, string appVersion, string deviceId, string deviceName, User user)
{
if (string.IsNullOrEmpty(clientType))
{
@ -442,7 +442,7 @@ namespace MediaBrowser.Server.Implementations.Session
/// </summary>
/// <param name="session">The session.</param>
/// <returns>IEnumerable{ISessionRemoteController}.</returns>
private IEnumerable<ISessionRemoteController> GetControllers(SessionInfo session)
private IEnumerable<ISessionController> GetControllers(SessionInfo session)
{
return _remoteControllers.Where(i => i.Supports(session));
}

@ -9,7 +9,7 @@ using System.Threading.Tasks;
namespace MediaBrowser.Server.Implementations.Session
{
public class WebSocketController : ISessionRemoteController
public class WebSocketController : ISessionController
{
public bool Supports(SessionInfo session)
{

@ -427,7 +427,7 @@ namespace MediaBrowser.ServerApplication
ProviderManager.AddParts(GetExports<BaseMetadataProvider>());
SessionManager.AddParts(GetExports<ISessionRemoteController>());
SessionManager.AddParts(GetExports<ISessionController>());
ImageProcessor.AddParts(GetExports<IImageEnhancer>());

Loading…
Cancel
Save