public void AddReleaseNote(ReleaseItem pluginReadme) { if (items == null) { items = new List <ReleaseItem> { pluginReadme }; } else { bool exist = false; foreach (var item in items) { if (item.version == pluginReadme.version) { item.content = pluginReadme.content; item.author = pluginReadme.author; exist = true; break; } } if (!exist) { items.Add(pluginReadme); } } }
void OnResponse(EditorHttpResponse response, Action <List <PackageData> > onResponse) { if (response.Type == ResponseType.SUCCEED) { var responseJson = JsonUtility.FromJson <QFrameworkServerResultFormat <List <ResultPackage> > >(response.Text); if (responseJson != null && responseJson.code == 1) { var packageInfosJson = responseJson.data; var packageDatas = new List <PackageData>(); foreach (var packageInfo in packageInfosJson) { var name = packageInfo.name; var package = packageDatas.Find(packageData => packageData.Name == name); if (package == null) { package = new PackageData() { Name = name, }; packageDatas.Add(package); } var id = packageInfo.id; var version = packageInfo.version; var url = packageInfo.downloadUrl; var installPath = packageInfo.installPath; var releaseNote = packageInfo.releaseNote; var createAt = packageInfo.createAt; var creator = packageInfo.username; var releaseItem = new ReleaseItem(version, releaseNote, creator, DateTime.Parse(createAt), id); var accessRightName = packageInfo.accessRight; var typeName = packageInfo.type; var packageType = PackageType.FrameworkModule; switch (typeName) { case "fm": packageType = PackageType.FrameworkModule; break; case "s": packageType = PackageType.Shader; break; case "agt": packageType = PackageType.AppOrGameDemoOrTemplate; break; case "p": packageType = PackageType.Plugin; break; case "master": packageType = PackageType.Master; break; } var accessRight = PackageAccessRight.Public; switch (accessRightName) { case "public": accessRight = PackageAccessRight.Public; break; case "private": accessRight = PackageAccessRight.Private; break; } package.PackageVersions.Add(new PackageVersion() { Id = id, Version = version, DownloadUrl = url, InstallPath = installPath, Type = packageType, AccessRight = accessRight, Readme = releaseItem, }); package.readme.AddReleaseNote(releaseItem); } packageDatas.ForEach(packageData => { packageData.PackageVersions.Sort((a, b) => b.VersionNumber - a.VersionNumber); packageData.readme.items.Sort((a, b) => b.VersionNumber - a.VersionNumber); }); onResponse(packageDatas); new PackageInfosRequestCache() { PackageDatas = packageDatas }.Save(); } } else { onResponse(null); } }