private void ListInternal(IDictionary <string, AssetStorePackageInfo> localPackages, int offset, int limit) { onOperationStart?.Invoke(); AssetStoreRestAPI.instance.GetProductIDList(offset, limit, productList => { if (!productList.isValid) { onOperationFinish?.Invoke(); onOperationError?.Invoke(new Error(NativeErrorCode.Unknown, productList.errorMessage)); return; } var countProduct = productList.list.Count; if (countProduct == 0 || !ApplicationUtil.instance.isUserLoggedIn) { onOperationFinish?.Invoke(); return; } foreach (var product in productList.list) { AssetStoreRestAPI.instance.GetProductDetail(product, productDetail => { AssetStorePackage package; object error; if (!productDetail.TryGetValue("errorMessage", out error)) { AssetStorePackageInfo localPackage; if (localPackages.TryGetValue(product.ToString(), out localPackage)) { productDetail["localPath"] = localPackage.packagePath; } else { productDetail["localPath"] = string.Empty; } package = new AssetStorePackage(product.ToString(), productDetail); if (m_UpdateDetails.ContainsKey(package.uniqueId)) { package.SetState(m_UpdateDetails[package.uniqueId]); } if (package.state == PackageState.Outdated && !string.IsNullOrEmpty(localPackage.packagePath)) { package.m_FirstVersion.localPath = string.Empty; try { var info = new AssetStorePackageVersion.SpecificVersionInfo(); var item = Json.Deserialize(localPackage.jsonInfo) as Dictionary <string, object>; info.versionId = item["version_id"] as string; info.versionString = item["version"] as string; info.publishedDate = item["pubdate"] as string; info.supportedVersion = item["unity_version"] as string; var installedVersion = new AssetStorePackageVersion(product.ToString(), productDetail, info); installedVersion.localPath = localPackage.packagePath; package.AddVersion(installedVersion); } catch (Exception) { } } } else { package = new AssetStorePackage(product.ToString(), new Error(NativeErrorCode.Unknown, error as string)); } onPackagesChanged?.Invoke(new[] { package }); countProduct--; if (countProduct == 0) { onOperationFinish?.Invoke(); } }); } }); }
private void FetchDetailsInternal(IEnumerable <long> packageIds, IDictionary <string, AssetStorePackageInfo> localPackages) { var countProduct = packageIds.Count(); if (countProduct == 0) { return; } onFetchDetailsStart?.Invoke(); foreach (var id in packageIds) { AssetStoreRestAPI.instance.GetProductDetail(id, productDetail => { AssetStorePackage package; object error; if (!productDetail.TryGetValue("errorMessage", out error)) { AssetStorePackageInfo localPackage; if (localPackages.TryGetValue(id.ToString(), out localPackage)) { productDetail["localPath"] = localPackage.packagePath; } else { productDetail["localPath"] = string.Empty; } package = new AssetStorePackage(id.ToString(), productDetail); if (m_UpdateDetails.ContainsKey(package.uniqueId)) { package.SetState(m_UpdateDetails[package.uniqueId]); } if (package.state == PackageState.Outdated && !string.IsNullOrEmpty(localPackage.packagePath)) { package.m_FetchedVersion.localPath = string.Empty; try { var info = new AssetStorePackageVersion.SpecificVersionInfo(); var item = Json.Deserialize(localPackage.jsonInfo) as Dictionary <string, object>; info.versionId = item["version_id"] as string; info.versionString = item["version"] as string; info.publishedDate = item["pubdate"] as string; info.supportedVersion = item["unity_version"] as string; var installedVersion = new AssetStorePackageVersion(id.ToString(), productDetail, info); installedVersion.localPath = localPackage.packagePath; package.AddVersion(installedVersion); } catch (Exception) { } } m_PackageDetailsFetched.Add(id); } else { package = new AssetStorePackage(id.ToString(), new Error(NativeErrorCode.Unknown, error as string)); } onPackagesChanged?.Invoke(new[] { package }); countProduct--; if (countProduct == 0) { onFetchDetailsFinish?.Invoke(); } }); } }