예제 #1
0
            private void UpdateExtraPackageInfos(UpmPackage package)
            {
                if (!package.versions.Any())
                {
                    return;
                }

                Dictionary <string, PackageInfo> extraVersions;

                if (m_ExtraPackageInfo.TryGetValue(package.name, out extraVersions))
                {
                    foreach (var version in package.versions.Cast <UpmPackageVersion>())
                    {
                        if (version.isFullyFetched)
                        {
                            continue;
                        }
                        PackageInfo info;
                        if (extraVersions.TryGetValue(version.version.ToString(), out info))
                        {
                            version.UpdatePackageInfo(info);
                        }
                    }
                }

                // if the primary version is not fully fetched, trigger an extra fetch automatically right away to get results early
                // since the primary version's display name is used in the package list
                var primaryVersion = package.primaryVersion;

                if (!primaryVersion.isFullyFetched)
                {
                    ExtraFetch(primaryVersion.uniqueId);
                }
            }
        public AssetStorePackage(AssetStoreFetchedInfo fetchedInfo, UpmPackage package)
        {
            m_Errors    = new List <Error>();
            m_Progress  = PackageProgress.None;
            m_Type      = PackageType.AssetStore;
            m_Name      = package?.name ?? string.Empty;
            m_ProductId = fetchedInfo?.id.ToString();

            m_Images      = fetchedInfo?.images ?? new List <PackageImage>();
            m_Links       = fetchedInfo?.links ?? new List <PackageLink>();
            m_VersionList = new AssetStoreVersionList();

            m_UpmVersionList = package?.versions as UpmVersionList ?? new UpmVersionList();
            foreach (var version in m_UpmVersionList.Cast <UpmPackageVersion>())
            {
                version.UpdateFetchedInfo(fetchedInfo);
            }

            if (string.IsNullOrEmpty(fetchedInfo?.id) || string.IsNullOrEmpty(fetchedInfo?.versionId))
            {
                AddError(new Error(NativeErrorCode.Unknown, "Invalid product details."));
            }
            else if (string.IsNullOrEmpty(package?.name))
            {
                AddError(new Error(NativeErrorCode.Unknown, "Invalid package info."));
            }
        }
예제 #3
0
 // check if the preview versions be filtered out if the user have `show previews` turned off
 private static bool ShouldPreviewsBeRemoved(UpmPackage package)
 {
     if (IsPreviewInstalled(package))
     {
         return(false);
     }
     return(package.versions.Any(v => !v.HasTag(PackageTag.Release)));
 }
예제 #4
0
        internal static void UpdateVersions(this Package self, IEnumerable <PackageInfo> versions)
        {
            var latest = versions.OrderBy(v => v.GetVersion()).Last();

            versions = versions.Select(v =>
            {
                v.IsLatest = v == latest;
                v.State    = v == latest ? PackageState.UpToDate : PackageState.Outdated;
                return(v);
            });

            self.Set("source", versions);
        }
예제 #5
0
        /// <summary>
        /// Update package info.
        /// </summary>
        static bool UpdatePackageVersions(Package package, IEnumerable <AvailableVersion> versions)
        {
            Debug.Log(kHeader, $"[UpdatePackageVersions] {package.GetName()} has {versions.Count()} versions");
            var pInfoCurrent = package.GetInstalledVersion();

            pInfoCurrent.UnlockVersion();

            var versionInfos = versions
                               .Select(v => v.ToPackageVersion(pInfoCurrent))
                               .Concat(new[] { pInfoCurrent })
                               .Where(pInfo => pInfo == pInfoCurrent || pInfo.GetVersion() != pInfoCurrent.GetVersion())
                               .OrderBy(pInfo => pInfo.GetVersion())
                               .ToArray();

            if (package.GetVersionCount() != versionInfos.Length)
            {
                Debug.Log(kHeader, "[UpdatePackageVersions] package source changing");
                package.UpdateVersions(versionInfos);
                return(true);
            }
            return(false);
        }
예제 #6
0
        private UpmPackage CreateUpmPackage(PackageInfo searchInfo, PackageInfo installedInfo, string packageName = null)
        {
            if (searchInfo == null && installedInfo == null)
            {
                return(new UpmPackage(m_IOProxy, packageName, false, PackageType.Installable));
            }

            UpmPackage result;

            if (searchInfo == null)
            {
                result = new UpmPackage(m_IOProxy, installedInfo, true, false);
            }
            else
            {
                result = new UpmPackage(m_IOProxy, searchInfo, false, true);
                if (installedInfo != null)
                {
                    result.AddInstalledVersion(new UpmPackageVersion(m_IOProxy, installedInfo, true));
                }
            }
            return(result);
        }
예제 #7
0
            private UpmPackage CreateUpmPackage(PackageInfo searchInfo, PackageInfo installedInfo, string packageName = null)
            {
                if (searchInfo == null && installedInfo == null)
                {
                    return(new UpmPackage(packageName, Enumerable.Empty <UpmPackageVersion>(), false));
                }

                UpmPackage result;

                if (searchInfo == null)
                {
                    result = new UpmPackage(installedInfo, true, false);
                }
                else
                {
                    result = new UpmPackage(searchInfo, false, true);
                    if (installedInfo != null)
                    {
                        result.AddInstalledVersion(new UpmPackageVersion(installedInfo, true));
                    }
                }
                return(result);
            }
예제 #8
0
 private static void RemovePreviewVersions(UpmPackage package)
 {
     package.UpdateVersions(package.versions.Where(v => v.HasTag(PackageTag.Release)).Cast <UpmPackageVersion>());
 }
예제 #9
0
 internal static int GetVersionCount(this Package self)
 {
     return(self.source.Count());
 }
예제 #10
0
 internal static string GetName(this Package self)
 {
     return(self.Name);
 }
예제 #11
0
 internal static PackageInfo GetInstalledVersion(this Package self)
 {
     return(self.Current);
 }
예제 #12
0
 private static bool IsPreviewInstalled(UpmPackage package)
 {
     return((!package.installedVersion?.HasTag(PackageTag.Release)) ?? false);
 }
        public AssetStorePackage(AssetStorePurchaseInfo purchaseInfo, AssetStoreProductInfo productInfo, UpmPackage package)
        {
            m_Errors    = new List <UIError>();
            m_Progress  = PackageProgress.None;
            m_Type      = PackageType.AssetStore;
            m_Name      = package?.name ?? string.Empty;
            m_ProductId = productInfo?.id.ToString();

            m_Images      = productInfo?.images ?? new List <PackageImage>();
            m_Links       = productInfo?.links ?? new List <PackageLink>();
            m_VersionList = new AssetStoreVersionList();

            m_Labels             = purchaseInfo?.tags;
            m_PurchasedTimeTicks = !string.IsNullOrEmpty(purchaseInfo?.purchasedTime) ? DateTime.Parse(purchaseInfo?.purchasedTime).Ticks : 0;

            m_UpmVersionList = package?.versions as UpmVersionList ?? new UpmVersionList();
            foreach (var version in m_UpmVersionList.Cast <UpmPackageVersion>())
            {
                version.UpdateProductInfo(productInfo);
            }

            m_AssetStoreLink = productInfo?.assetStoreLink.url;

            var firstPublishedDateString = productInfo?.firstPublishedDate ?? string.Empty;

            m_FirstPublishedDateTicks = !string.IsNullOrEmpty(firstPublishedDateString) ? DateTime.Parse(firstPublishedDateString).Ticks : 0;

            if (purchaseInfo == null)
            {
                AddError(new UIError(UIErrorCode.AssetStorePackageError, ApplicationUtil.instance.GetTranslationForText("Invalid purchase details.")));
            }
            if (string.IsNullOrEmpty(productInfo?.id) || string.IsNullOrEmpty(productInfo?.versionId))
            {
                AddError(new UIError(UIErrorCode.AssetStorePackageError, ApplicationUtil.instance.GetTranslationForText("Invalid product details.")));
            }
            else if (string.IsNullOrEmpty(package?.name))
            {
                AddError(new UIError(UIErrorCode.AssetStorePackageError, ApplicationUtil.instance.GetTranslationForText("Invalid package info.")));
            }
        }
예제 #14
0
        public AssetStorePackage(AssetStoreUtils assetStoreUtils, IOProxy ioProxy, AssetStorePurchaseInfo purchaseInfo, AssetStoreProductInfo productInfo, UpmPackage package)
        {
            ResolveDependencies(assetStoreUtils, ioProxy);

            m_Errors    = new List <UIError>();
            m_Progress  = PackageProgress.None;
            m_Type      = PackageType.AssetStore;
            m_Name      = package?.name ?? string.Empty;
            m_ProductId = productInfo?.id.ToString();

            m_Images      = productInfo?.images ?? new List <PackageImage>();
            m_Links       = productInfo?.links ?? new List <PackageLink>();
            m_VersionList = new AssetStoreVersionList(assetStoreUtils, ioProxy);

            m_Labels             = purchaseInfo?.tags;
            m_PurchasedTimeTicks = !string.IsNullOrEmpty(purchaseInfo?.purchasedTime) ? DateTime.Parse(purchaseInfo?.purchasedTime).Ticks : 0;

            m_UpmVersionList = package?.versions as UpmVersionList ?? new UpmVersionList(ioProxy);
            if (productInfo != null)
            {
                foreach (var version in m_UpmVersionList.Cast <UpmPackageVersion>())
                {
                    version.UpdateProductInfo(productInfo);
                }
            }

            m_AssetStoreLink = productInfo?.assetStoreLink.url;

            var firstPublishedDateString = productInfo?.firstPublishedDate ?? string.Empty;

            m_FirstPublishedDateTicks = !string.IsNullOrEmpty(firstPublishedDateString) ? DateTime.Parse(firstPublishedDateString).Ticks : 0;

            if (purchaseInfo == null)
            {
                var errorMessage = L10n.Tr("Unable to get purchase details because you may not have purchased this package.");
                AddError(new UIError(UIErrorCode.AssetStorePackageError, errorMessage));
            }
            if (string.IsNullOrEmpty(productInfo?.id) || string.IsNullOrEmpty(productInfo?.versionId))
            {
                AddError(new UIError(UIErrorCode.AssetStorePackageError, L10n.Tr("Invalid product details.")));
            }
            else if (string.IsNullOrEmpty(package?.name))
            {
                AddError(new UIError(UIErrorCode.AssetStorePackageError, L10n.Tr("Invalid package info.")));
            }
        }