public IEnumerable <PackageItemListViewModel> GetCurrent() { if (_state.ItemsCount == 0) { return(Enumerable.Empty <PackageItemListViewModel>()); } var listItems = _state.Results .Select((metadata, index) => { VersionRange allowedVersions = VersionRange.All; // get the allowed version range and pass it to package item view model to choose the latest version based on that if (_packageReferences != null) { var matchedPackageReferences = _packageReferences.Where(r => StringComparer.OrdinalIgnoreCase.Equals(r.Identity.Id, metadata.Identity.Id)); var allowedVersionsRange = matchedPackageReferences.Select(r => r.AllowedVersions).Where(v => v != null).ToArray(); if (allowedVersionsRange.Length > 0) { allowedVersions = allowedVersionsRange[0]; } } var listItem = new PackageItemListViewModel { Id = metadata.Identity.Id, Version = metadata.Identity.Version, IconUrl = metadata.IconUrl, Author = metadata.Authors, DownloadCount = metadata.DownloadCount, Summary = metadata.Summary, Versions = AsyncLazy.New(metadata.GetVersionsAsync), AllowedVersions = allowedVersions, PrefixReserved = metadata.PrefixReserved && !IsMultiSource, DeprecationMetadata = AsyncLazy.New(metadata.GetDeprecationMetadataAsync), Vulnerabilities = metadata.Vulnerabilities, Recommended = index < _recommendedCount, PackageReader = (metadata as PackageSearchMetadataBuilder.ClonedPackageSearchMetadata)?.PackageReader, }; listItem.UpdatePackageStatus(_installedPackages); if (!_context.IsSolution && _context.PackageManagerProviders.Any()) { listItem.ProvidersLoader = AsyncLazy.New( async() => { string uniqueProjectName = await _context.Projects[0].GetUniqueNameOrNameAsync(CancellationToken.None); return(await AlternativePackageManagerProviders.CalculateAlternativePackageManagersAsync(_context.PackageManagerProviders, listItem.Id, uniqueProjectName)); }); } return(listItem); }); return(listItems.ToArray()); }
public IEnumerable <PackageItemListViewModel> GetCurrent() { if (_state.ItemsCount == 0) { return(Enumerable.Empty <PackageItemListViewModel>()); } var listItems = _state.Results .Select(metadata => { VersionRange allowedVersions = VersionRange.All; // get the allowed version range and pass it to package item view model to choose the latest version based on that if (_packageReferences != null) { var matchedPackageReferences = _packageReferences.Where(r => StringComparer.OrdinalIgnoreCase.Equals(r.PackageIdentity.Id, metadata.Identity.Id)); var allowedVersionsRange = matchedPackageReferences.Select(r => r.AllowedVersions).Where(v => v != null).ToArray(); if (allowedVersionsRange.Length > 0) { allowedVersions = allowedVersionsRange[0]; } } var listItem = new PackageItemListViewModel { Id = metadata.Identity.Id, Version = metadata.Identity.Version, IconUrl = metadata.IconUrl, Author = metadata.Authors, DownloadCount = metadata.DownloadCount, Summary = metadata.Summary, Versions = AsyncLazy.New(() => metadata.GetVersionsAsync()), AllowedVersions = allowedVersions, PrefixReserved = metadata.PrefixReserved && !IsMultiSource, IsPackageDeprecated = metadata.DeprecationMetadata != null, }; listItem.UpdatePackageStatus(_installedPackages); if (!_context.IsSolution && _context.PackageManagerProviders.Any()) { listItem.ProvidersLoader = AsyncLazy.New( () => AlternativePackageManagerProviders.CalculateAlternativePackageManagersAsync( _context.PackageManagerProviders, listItem.Id, _context.Projects[0])); } return(listItem); }); return(listItems.ToArray()); }