Beispiel #1
0
        public object Get(GetSyncDialogOptions request)
        {
            var result = new SyncDialogOptions();

            result.Targets = _syncManager.GetSyncTargets(request.UserId)
                             .ToList();

            if (request.Category.HasValue)
            {
                result.Options = SyncHelper.GetSyncOptions(request.Category.Value);
            }
            else
            {
                var dtoOptions = new DtoOptions
                {
                    Fields = new List <ItemFields>
                    {
                        ItemFields.SyncInfo
                    }
                };

                var dtos = request.ItemIds.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                           .Select(_libraryManager.GetItemById)
                           .Where(i => i != null)
                           .Select(i => _dtoService.GetBaseItemDto(i, dtoOptions))
                           .ToList();

                result.Options = SyncHelper.GetSyncOptions(dtos);
            }

            return(ToOptimizedResult(result));
        }
Beispiel #2
0
        public object Get(GetSyncDialogOptions request)
        {
            var result = new SyncDialogOptions();

            result.Targets = _syncManager.GetSyncTargets(request.UserId)
                             .ToList();

            if (!string.IsNullOrWhiteSpace(request.TargetId))
            {
                result.Targets = result.Targets
                                 .Where(i => string.Equals(i.Id, request.TargetId, StringComparison.OrdinalIgnoreCase))
                                 .ToList();

                result.QualityOptions = _syncManager
                                        .GetQualityOptions(request.TargetId)
                                        .ToList();

                result.ProfileOptions = _syncManager
                                        .GetProfileOptions(request.TargetId)
                                        .ToList();
            }

            if (request.Category.HasValue)
            {
                result.Options = SyncHelper.GetSyncOptions(request.Category.Value);
            }
            else
            {
                var dtoOptions = new DtoOptions
                {
                    Fields = new List <ItemFields>
                    {
                        ItemFields.SyncInfo
                    }
                };

                var auth = AuthorizationContext.GetAuthorizationInfo(Request);

                var authenticatedUser = _userManager.GetUserById(auth.UserId);

                var items = request.ItemIds.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
                            .Select(_libraryManager.GetItemById)
                            .Where(i => i != null);

                var dtos = _dtoService.GetBaseItemDtos(items, dtoOptions, authenticatedUser)
                           .ToList();

                result.Options = SyncHelper.GetSyncOptions(dtos);
            }

            return(ToOptimizedResult(result));
        }
Beispiel #3
0
        private async Task GetOptionsForDevice(string deviceId)
        {
            IsLoading         = true;
            _request.TargetId = deviceId;
            var apiClient = _connectionManager.GetApiClient(App.ServerInfo.Id);

            try
            {
                _logger.Info("Getting sync options for device ({0})", deviceId);
                _options = await apiClient.GetSyncOptions(_request);

                if (_options != null)
                {
                    _unwatched     = _options.Options.Contains(SyncJobOption.UnwatchedOnly);
                    _itemLimit     = _options.Options.Contains(SyncJobOption.ItemLimit);
                    _autoSync      = _options.Options.Contains(SyncJobOption.SyncNewContent);
                    _profileNeeded = _options.Options.Contains(SyncJobOption.Profile) && _options.ProfileOptions.Any();
                    _qualityNeeded = _options.Options.Contains(SyncJobOption.Quality);

                    if (_qualityNeeded)
                    {
                        QualityPicker.ItemsSource  = _options.QualityOptions;
                        QualityPicker.SelectedItem = QualityPicker.Items.FirstOrDefault(x => (x as SyncQualityOption).IsDefault);
                    }

                    if (_profileNeeded)
                    {
                        var profiles = _options.ProfileOptions.Select(x => x.Localise()).ToList();
                        ProfilePicker.ItemsSource  = profiles;
                        ProfilePicker.SelectedItem = ProfilePicker.Items.FirstOrDefault(x => (x as SyncProfileOption).IsDefault);
                    }

                    ProfilePicker.Visibility   = _profileNeeded ? Visibility.Visible : Visibility.Collapsed;
                    QualityPicker.Visibility   = _qualityNeeded ? Visibility.Visible : Visibility.Collapsed;
                    ItemLimitBox.Visibility    = _itemLimit ? Visibility.Visible : Visibility.Collapsed;
                    AutoSyncVideos.Visibility  = _autoSync ? Visibility.Visible : Visibility.Collapsed;
                    UnwatchedVideos.Visibility = _unwatched ? Visibility.Visible : Visibility.Collapsed;
                }
                else
                {
                    Close();
                }
            }
            catch (HttpException ex)
            {
                Close();
                Utils.HandleHttpException("SetOptions()", ex, SimpleIoc.Default.GetInstance <INavigationService>(), _logger);
            }

            IsLoading = false;
        }
Beispiel #4
0
        public async Task SetOptions(SyncJobRequest request)
        {
            IsLoading = true;
            _request  = request;
            var apiClient = _connectionManager.GetApiClient(App.ServerInfo.Id);

            try
            {
                _logger.Info("Getting sync options");
                _options = await apiClient.GetSyncOptions(request);

                if (_options != null && _options.Targets.Any())
                {
                    var thisDevice = _options.Targets.FirstOrDefault(x => x.Id == apiClient.DeviceId);
                    if (thisDevice == null)
                    {
                        TargetDevices.ItemsSource  = _options.Targets;
                        TargetDevices.SelectedItem = _options.Targets.FirstOrDefault();
                    }
                    else
                    {
                        thisDevice.Name = string.Format(AppResources.LabelThisDevice, thisDevice.Name);
                        _options.Targets.Remove(thisDevice);
                        _options.Targets.Insert(0, thisDevice);

                        TargetDevices.ItemsSource  = _options.Targets;
                        TargetDevices.SelectedItem = thisDevice;
                        //GetOptionsForDevice(thisDevice.Id).ConfigureAwait(false);
                    }
                }
                else
                {
                    Close();
                }
            }
            catch (HttpException ex)
            {
                Close();
                Utils.HandleHttpException("SetOptions()", ex, SimpleIoc.Default.GetInstance <INavigationService>(), _logger);
            }

            IsLoading = false;
        }