From ee632803b377f36b99d1f439b9de64ac8dafec02 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 17 Feb 2015 13:39:37 -0500 Subject: sync updates --- .../Sync/SyncManager.cs | 23 ++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'MediaBrowser.Server.Implementations') diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index 00b28ad8a0..b412d9a0b6 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 _subtitleEncoder; private readonly IConfigurationManager _config; + private IUserDataManager _userDataManager; private ISyncProvider[] _providers = { }; @@ -56,7 +57,7 @@ namespace MediaBrowser.Server.Implementations.Sync public event EventHandler> SyncJobItemUpdated; public event EventHandler> SyncJobItemCreated; - public SyncManager(ILibraryManager libraryManager, ISyncRepository repo, IImageProcessor imageProcessor, ILogger logger, IUserManager userManager, Func dtoService, IApplicationHost appHost, ITVSeriesManager tvSeriesManager, Func mediaEncoder, IFileSystem fileSystem, Func subtitleEncoder, IConfigurationManager config) + public SyncManager(ILibraryManager libraryManager, ISyncRepository repo, IImageProcessor imageProcessor, ILogger logger, IUserManager userManager, Func dtoService, IApplicationHost appHost, ITVSeriesManager tvSeriesManager, Func mediaEncoder, IFileSystem fileSystem, Func 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 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 GetReadySyncItems(string targetId) -- cgit v1.2.3