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); }
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; }
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); }