Beispiel #1
0
        public NuGetPackageListViewModel(INavigationService navigationService, INuGetPackageService nugetPackageService)
        {
            _navigationService   = navigationService;
            _nugetPackageService = nugetPackageService;

            PackageDetails = ReactiveCommand.CreateFromTask <NuGetPackageViewModel>(ExecutePackageDetails);
            Refresh        = ReactiveCommand.CreateFromTask(ExecuteRefresh);

            Refresh.ThrownExceptions.Subscribe(exception => this.Log().Warn(exception));
            PackageDetails.ThrownExceptions.Subscribe(exception => this.Log().Warn(exception));

            _searchResults =
                this.WhenAnyValue(x => x.SearchText)
                .Throttle(TimeSpan.FromMilliseconds(800))
                .Select(term => term?.Trim())
                .DistinctUntilChanged()
                .SelectMany(SearchNuGetPackages)
                .ObserveOn(RxApp.MainThreadScheduler)
                .ToProperty(this, x => x.SearchResults);

            _isRefreshing =
                this.WhenAnyObservable(x => x.Refresh.IsExecuting)
                .StartWith(false)
                .DistinctUntilChanged()
                .ObserveOn(RxApp.MainThreadScheduler)
                .ToProperty(this, x => x.IsRefreshing);

            _hasItems =
                this.WhenAnyValue(x => x.SearchResults, x => x != null && x.Any())
                .ToProperty(this, x => x.HasItems);
        }
Beispiel #2
0
        public ProjectService(INuGetPackageService nuGetPackageService, ISolutionDiretoryManager solutionDiretoryManager, ISolutionManagerProvider solutionManagerProvider)
        {
            _nuGetPackageService     = nuGetPackageService;
            _solutionDiretoryManager = solutionDiretoryManager;
            _solutionManagerProvider = solutionManagerProvider;

            InitialEvents();
        }
 public AbstractNuGetPackageController(
     ApiSettings settings,
     ILogger <AbstractNuGetPackageController> logger,
     ITransactionCoordinator transactionCoordinator,
     INuGetPackageService nuGetPackageService,
     IApiNuGetPackageModelMapper nuGetPackageModelMapper
     )
     : base(settings, logger, transactionCoordinator)
 {
     this.NuGetPackageService     = nuGetPackageService;
     this.NuGetPackageModelMapper = nuGetPackageModelMapper;
 }
Beispiel #4
0
 public NuGetPackageController(
     ApiSettings settings,
     ILogger <NuGetPackageController> logger,
     ITransactionCoordinator transactionCoordinator,
     INuGetPackageService nuGetPackageService,
     IApiNuGetPackageModelMapper nuGetPackageModelMapper
     )
     : base(settings,
            logger,
            transactionCoordinator,
            nuGetPackageService,
            nuGetPackageModelMapper)
 {
     this.BulkInsertLimit = 250;
     this.MaxLimit        = 1000;
     this.DefaultLimit    = 250;
 }
        public NuGetPackageListViewModel(INavigationService navigationService, INuGetPackageService nugetPackageService)
        {
            _navigationService   = navigationService;
            _nugetPackageService = nugetPackageService;

            PackageDetails = ReactiveCommand.CreateFromTask <NuGetPackageViewModel>(ExecutePackageDetails);
            Refresh        = ReactiveCommand.CreateFromTask(ExecuteRefresh);

            Refresh.ThrownExceptions.Subscribe(exception => this.Log().Warn(exception));
            PackageDetails.ThrownExceptions.Subscribe(exception => this.Log().Warn(exception));

            var nugetChangeSet =
                _nugetCache
                .Connect()
                .RefCount();

            var sortChanged =
                this.WhenAnyValue(x => x.SelectedTag)
                .Where(x => !string.IsNullOrEmpty(x))
                .Select(selectedTag =>
                        SortExpressionComparer <NuGetPackageViewModel>
                        .Ascending(x => x.PackageMetadata.DownloadCount)
                        .ThenByAscending(x => x.PackageMetadata.Tags.Contains(selectedTag)));

            nugetChangeSet
            .Transform(x => new NuGetPackageViewModel(x))
            .Sort(sortChanged)
            .Bind(out _searchResults)
            .DisposeMany()
            .Subscribe()
            .DisposeWith(Disposal);

            _nugetCache
            .CountChanged
            .Select(count => count > 0)
            .ToProperty(this, x => x.HasItems, out _hasItems)
            .DisposeWith(Disposal);

            nugetChangeSet
            .Transform(x => x.Tags.Split(','))
            .RemoveKey()
            .TransformMany(x => x)
            .DistinctValues(x => x)
            .Bind(out _tags)
            .Subscribe()
            .DisposeWith(Disposal);

            Search =
                ReactiveCommand.CreateFromObservable <string, IEnumerable <IPackageSearchMetadata> >(SearchNuGetPackages);

            Search
            .Select(packageSearchMetadata => packageSearchMetadata)
            .Subscribe(packages =>
                       _nugetCache.EditDiff(packages, (first, second) => first.Identity.Id == second.Identity.Id))
            .DisposeWith(Disposal);

            this.WhenAnyValue(x => x.SearchText)
            .Where(x => !string.IsNullOrEmpty(x))
            .Throttle(TimeSpan.FromMilliseconds(750), RxApp.TaskpoolScheduler)
            .Select(term => term.Trim())
            .DistinctUntilChanged()
            .InvokeCommand(this, x => x.Search)
            .DisposeWith(Disposal);

            this.WhenAnyValue(x => x.SearchText)
            .Where(string.IsNullOrEmpty)
            .Subscribe(_ => _nugetCache.Clear())
            .DisposeWith(Disposal);

            this.WhenAnyObservable(x => x.Refresh.IsExecuting)
            .StartWith(false)
            .DistinctUntilChanged()
            .ToProperty(this, x => x.IsRefreshing, out _isRefreshing)
            .DisposeWith(Disposal);
        }