sync fixes
This commit is contained in:
parent
7c17c5182f
commit
20f239824f
|
@ -71,8 +71,21 @@ namespace MediaBrowser.Model.Dto
|
|||
|
||||
public int? AnimeSeriesIndex { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether [supports synchronize].
|
||||
/// </summary>
|
||||
/// <value><c>null</c> if [supports synchronize] contains no value, <c>true</c> if [supports synchronize]; otherwise, <c>false</c>.</value>
|
||||
public bool? SupportsSync { get; set; }
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether this instance has synchronize job.
|
||||
/// </summary>
|
||||
/// <value><c>null</c> if [has synchronize job] contains no value, <c>true</c> if [has synchronize job]; otherwise, <c>false</c>.</value>
|
||||
public bool? HasSyncJob { get; set; }
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether this instance is synced.
|
||||
/// </summary>
|
||||
/// <value><c>null</c> if [is synced] contains no value, <c>true</c> if [is synced]; otherwise, <c>false</c>.</value>
|
||||
public bool? IsSynced { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the DVD season number.
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue
Block a user