aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-02-17 13:39:37 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-02-17 13:39:37 -0500
commitee632803b377f36b99d1f439b9de64ac8dafec02 (patch)
tree592a6ad20dcbc2cfcc1c9853ece60db8180c34a9
parent053f2fccbf3cd3e816ead30e0fdef72f0de6fe36 (diff)
sync updates
-rw-r--r--MediaBrowser.Server.Implementations/Sync/SyncManager.cs23
-rw-r--r--MediaBrowser.Server.Startup.Common/ApplicationHost.cs2
2 files changed, 22 insertions, 3 deletions
diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs
index 00b28ad8a..b412d9a0b 100644
--- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs
+++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs
@@ -47,6 +47,7 @@ namespace MediaBrowser.Server.Implementations.Sync
private readonly IFileSystem _fileSystem;
private readonly Func<ISubtitleEncoder> _subtitleEncoder;
private readonly IConfigurationManager _config;
+ private IUserDataManager _userDataManager;
private ISyncProvider[] _providers = { };
@@ -56,7 +57,7 @@ namespace MediaBrowser.Server.Implementations.Sync
public event EventHandler<GenericEventArgs<SyncJobItem>> SyncJobItemUpdated;
public event EventHandler<GenericEventArgs<SyncJobItem>> SyncJobItemCreated;
- public SyncManager(ILibraryManager libraryManager, ISyncRepository repo, IImageProcessor imageProcessor, ILogger logger, IUserManager userManager, Func<IDtoService> dtoService, IApplicationHost appHost, ITVSeriesManager tvSeriesManager, Func<IMediaEncoder> mediaEncoder, IFileSystem fileSystem, Func<ISubtitleEncoder> subtitleEncoder, IConfigurationManager config)
+ public SyncManager(ILibraryManager libraryManager, ISyncRepository repo, IImageProcessor imageProcessor, ILogger logger, IUserManager userManager, Func<IDtoService> dtoService, IApplicationHost appHost, ITVSeriesManager tvSeriesManager, Func<IMediaEncoder> mediaEncoder, IFileSystem fileSystem, Func<ISubtitleEncoder> subtitleEncoder, IConfigurationManager config, IUserDataManager userDataManager)
{
_libraryManager = libraryManager;
_repo = repo;
@@ -70,6 +71,7 @@ namespace MediaBrowser.Server.Implementations.Sync
_fileSystem = fileSystem;
_subtitleEncoder = subtitleEncoder;
_config = config;
+ _userDataManager = userDataManager;
}
public void AddParts(IEnumerable<ISyncProvider> providers)
@@ -666,7 +668,24 @@ namespace MediaBrowser.Server.Implementations.Sync
public Task ReportOfflineAction(UserAction action)
{
- return Task.FromResult(true);
+ switch (action.Type)
+ {
+ case UserActionType.PlayedItem:
+ return ReportOfflinePlayedItem(action);
+ default:
+ throw new ArgumentException("Unexpected action type");
+ }
+ }
+
+ private Task ReportOfflinePlayedItem(UserAction action)
+ {
+ var item = _libraryManager.GetItemById(action.ItemId);
+ var userData = _userDataManager.GetUserData(new Guid(action.UserId), item.GetUserDataKey());
+
+ userData.LastPlayedDate = action.Date;
+ _userDataManager.UpdatePlayState(item, userData, action.PositionTicks ?? item.RunTimeTicks ?? 0);
+
+ return _userDataManager.SaveUserData(new Guid(action.UserId), item, userData, UserDataSaveReason.Import, CancellationToken.None);
}
public List<SyncedItem> GetReadySyncItems(string targetId)
diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
index e656d6837..49399ba4e 100644
--- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
+++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
@@ -445,7 +445,7 @@ namespace MediaBrowser.Server.Startup.Common
TVSeriesManager = new TVSeriesManager(UserManager, UserDataManager, LibraryManager);
RegisterSingleInstance(TVSeriesManager);
- SyncManager = new SyncManager(LibraryManager, SyncRepository, ImageProcessor, LogManager.GetLogger("SyncManager"), UserManager, () => DtoService, this, TVSeriesManager, () => MediaEncoder, FileSystemManager, () => SubtitleEncoder, ServerConfigurationManager);
+ SyncManager = new SyncManager(LibraryManager, SyncRepository, ImageProcessor, LogManager.GetLogger("SyncManager"), UserManager, () => DtoService, this, TVSeriesManager, () => MediaEncoder, FileSystemManager, () => SubtitleEncoder, ServerConfigurationManager, UserDataManager);
RegisterSingleInstance(SyncManager);
DtoService = new DtoService(Logger, LibraryManager, UserDataManager, ItemRepository, ImageProcessor, ServerConfigurationManager, FileSystemManager, ProviderManager, () => ChannelManager, SyncManager, this, () => DeviceManager);