using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEditor.PackageManager.Requests;
|
|
|
|
namespace UnityEditor.PackageManager.UI
|
|
{
|
|
internal class UpmListOperation : UpmBaseOperation, IListOperation
|
|
{
|
|
[SerializeField]
|
|
private Action<IEnumerable<PackageInfo>> _doneCallbackAction;
|
|
|
|
public UpmListOperation(bool offlineMode) : base()
|
|
{
|
|
OfflineMode = offlineMode;
|
|
}
|
|
|
|
public bool OfflineMode { get; set; }
|
|
|
|
public void GetPackageListAsync(Action<IEnumerable<PackageInfo>> doneCallbackAction, Action<Error> 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<PackageInfo>();
|
|
foreach (var upmPackage in request.Result)
|
|
{
|
|
var packageInfos = FromUpmPackageInfo(upmPackage);
|
|
packages.AddRange(packageInfos);
|
|
}
|
|
|
|
_doneCallbackAction(packages);
|
|
}
|
|
}
|
|
}
|