aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-04-03 22:16:42 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-04-03 22:16:42 -0400
commit20f239824fd38ee75b8915cc3c44f1388dfac948 (patch)
tree94734c9c33969b41694fffc71c320e330bddcbaf /MediaBrowser.Server.Implementations
parent7c17c5182f4f4de8c5755eb92e803c0be20d667f (diff)
sync fixes
Diffstat (limited to 'MediaBrowser.Server.Implementations')
-rw-r--r--MediaBrowser.Server.Implementations/Dto/DtoService.cs39
-rw-r--r--MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs2
2 files changed, 27 insertions, 14 deletions
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
index dc6f4a525..8934c9c8f 100644
--- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs
+++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
@@ -85,7 +85,7 @@ namespace MediaBrowser.Server.Implementations.Dto
public IEnumerable<BaseItemDto> GetBaseItemDtos(IEnumerable<BaseItem> items, DtoOptions options, User user = null, BaseItem owner = null)
{
- var itemIdsWithSyncJobs = GetItemIdsWithSyncJobs(options).ToList();
+ var tuple = GetItemIdsWithSyncJobs(options);
var list = new List<BaseItemDto>();
@@ -109,7 +109,7 @@ namespace MediaBrowser.Server.Implementations.Dto
}
}
- FillSyncInfo(dto, item, itemIdsWithSyncJobs, options, user);
+ FillSyncInfo(dto, item, tuple.Item1, tuple.Item2, options, user);
list.Add(dto);
}
@@ -145,29 +145,29 @@ namespace MediaBrowser.Server.Implementations.Dto
return dto;
}
- private IEnumerable<string> GetItemIdsWithSyncJobs(DtoOptions options)
+ private Tuple<IEnumerable<string>, IEnumerable<string>> GetItemIdsWithSyncJobs(DtoOptions options)
{
if (!options.Fields.Contains(ItemFields.SyncInfo))
{
- return new List<string>();
+ return new Tuple<IEnumerable<string>, IEnumerable<string>>(new List<string>(), new List<string>());
}
var deviceId = options.DeviceId;
if (string.IsNullOrWhiteSpace(deviceId))
{
- return new List<string>();
+ return new Tuple<IEnumerable<string>, IEnumerable<string>>(new List<string>(), new List<string>());
}
var caps = _deviceManager().GetCapabilities(deviceId);
if (caps == null || !caps.SupportsSync)
{
- return new List<string>();
+ return new Tuple<IEnumerable<string>, IEnumerable<string>>(new List<string>(), new List<string>());
}
- var result = _syncManager.GetLibraryItemIds(new SyncJobItemQuery
+ var result1 = _syncManager.GetLibraryItemIds(new SyncJobItemQuery
{
TargetId = deviceId,
- Statuses = new SyncJobItemStatus[]
+ Statuses = new[]
{
SyncJobItemStatus.Converting,
SyncJobItemStatus.Queued,
@@ -176,7 +176,16 @@ namespace MediaBrowser.Server.Implementations.Dto
}
});
- return result.Items;
+ var result2 = _syncManager.GetLibraryItemIds(new SyncJobItemQuery
+ {
+ TargetId = deviceId,
+ Statuses = new[]
+ {
+ SyncJobItemStatus.Synced
+ }
+ });
+
+ return new Tuple<IEnumerable<string>, IEnumerable<string>>(result1.Items, result2.Items);
}
private void FillSyncInfo(BaseItemDto dto, BaseItem item, DtoOptions options, User user)
@@ -189,11 +198,14 @@ namespace MediaBrowser.Server.Implementations.Dto
if (dto.SupportsSync ?? false)
{
- dto.HasSyncJob = GetItemIdsWithSyncJobs(options).Contains(dto.Id, StringComparer.OrdinalIgnoreCase);
+ var tuple = GetItemIdsWithSyncJobs(options);
+
+ dto.HasSyncJob = tuple.Item1.Contains(dto.Id, StringComparer.OrdinalIgnoreCase);
+ dto.IsSynced = tuple.Item2.Contains(dto.Id, StringComparer.OrdinalIgnoreCase);
}
}
- private void FillSyncInfo(BaseItemDto dto, BaseItem item, IEnumerable<string> itemIdsWithSyncJobs, DtoOptions options, User user)
+ private void FillSyncInfo(BaseItemDto dto, BaseItem item, IEnumerable<string> itemIdsWithPendingSyncJobs, IEnumerable<string> syncedItemIds, DtoOptions options, User user)
{
if (options.Fields.Contains(ItemFields.SyncInfo))
{
@@ -203,7 +215,8 @@ namespace MediaBrowser.Server.Implementations.Dto
if (dto.SupportsSync ?? false)
{
- dto.HasSyncJob = itemIdsWithSyncJobs.Contains(dto.Id, StringComparer.OrdinalIgnoreCase);
+ dto.HasSyncJob = itemIdsWithPendingSyncJobs.Contains(dto.Id, StringComparer.OrdinalIgnoreCase);
+ dto.IsSynced = syncedItemIds.Contains(dto.Id, StringComparer.OrdinalIgnoreCase);
}
}
@@ -269,7 +282,7 @@ namespace MediaBrowser.Server.Implementations.Dto
}
}
}
-
+
if (fields.Contains(ItemFields.Studios))
{
AttachStudios(dto, item);
diff --git a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs
index c0435a81e..185c3464e 100644
--- a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs
+++ b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs
@@ -394,7 +394,7 @@ namespace MediaBrowser.Server.Implementations.Sync
AddMetadata = false
});
- await SyncJobItems(result.Items, true, progress, cancellationToken).ConfigureAwait(false);
+ await SyncJobItems(result.Items, enableConversion, progress, cancellationToken).ConfigureAwait(false);
}
public async Task SyncJobItems(SyncJobItem[] items, bool enableConversion, IProgress<double> progress, CancellationToken cancellationToken)