Ejemplo n.º 1
0
        private void FillSyncInfo(IHasSyncInfo dto, BaseItem item, SyncedItemProgress[] syncProgress, DtoOptions options, User user)
        {
            if (options.Fields.Contains(ItemFields.SyncInfo))
            {
                var userCanSync = user != null && user.Policy.EnableSync;
                dto.SupportsSync = userCanSync && _syncManager.SupportsSync(item);
            }

            if (dto.SupportsSync ?? false)
            {
                dto.HasSyncJob = syncProgress.Any(i => i.Status != SyncJobItemStatus.Synced && string.Equals(i.ItemId, dto.Id, StringComparison.OrdinalIgnoreCase));
                dto.IsSynced = syncProgress.Any(i => i.Status == SyncJobItemStatus.Synced && string.Equals(i.ItemId, dto.Id, StringComparison.OrdinalIgnoreCase));

                if (dto.IsSynced.Value)
                {
                    dto.SyncStatus = SyncJobItemStatus.Synced;
                }

                else if (dto.HasSyncJob.Value)
                {
                    dto.SyncStatus = SyncJobItemStatus.Queued;
                }
            }
        }
Ejemplo n.º 2
0
        private void FillSyncInfo(IHasSyncInfo dto, BaseItem item, DtoOptions options, User user, Dictionary<string, SyncedItemProgress> syncProgress)
        {
            var hasFullSyncInfo = options.Fields.Contains(ItemFields.SyncInfo);

            if (!options.Fields.Contains(ItemFields.BasicSyncInfo) &&
                !hasFullSyncInfo)
            {
                return;
            }

            if (dto.SupportsSync ?? false)
            {
                SyncedItemProgress syncStatus;
                if (syncProgress.TryGetValue(dto.Id, out syncStatus))
                {
                    if (syncStatus.Status == SyncJobItemStatus.Synced)
                    {
                        dto.SyncPercent = 100;
                    }
                    else
                    {
                        dto.SyncPercent = syncStatus.Progress;
                    }

                    if (hasFullSyncInfo)
                    {
                        dto.HasSyncJob = true;
                        dto.SyncStatus = syncStatus.Status;
                    }
                }
            }
        }