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());
        }
示例#2
0
        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());
        }