using System; using System.Collections.Generic; using UnityEngine; using UnityEditor.PackageManager.Requests; namespace UnityEditor.PackageManager.UI { internal class UpmListOperation : UpmBaseOperation, IListOperation { [SerializeField] private Action> _doneCallbackAction; public UpmListOperation(bool offlineMode) : base() { OfflineMode = offlineMode; } public bool OfflineMode { get; set; } public void GetPackageListAsync(Action> doneCallbackAction, Action errorCallbackAction = null) { this._doneCallbackAction = doneCallbackAction; OnOperationError += errorCallbackAction; Start(); } protected override Request CreateRequest() { return Client.List(OfflineMode); } protected override void ProcessData() { var request = CurrentRequest as ListRequest; var packages = new List(); foreach (var upmPackage in request.Result) { var packageInfos = FromUpmPackageInfo(upmPackage); packages.AddRange(packageInfos); } _doneCallbackAction(packages); } } }