You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.3 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEditor.PackageManager.Requests;
  5. namespace UnityEditor.PackageManager.UI
  6. {
  7. internal class UpmListOperation : UpmBaseOperation, IListOperation
  8. {
  9. [SerializeField]
  10. private Action<IEnumerable<PackageInfo>> _doneCallbackAction;
  11. public UpmListOperation(bool offlineMode) : base()
  12. {
  13. OfflineMode = offlineMode;
  14. }
  15. public bool OfflineMode { get; set; }
  16. public void GetPackageListAsync(Action<IEnumerable<PackageInfo>> doneCallbackAction, Action<Error> errorCallbackAction = null)
  17. {
  18. this._doneCallbackAction = doneCallbackAction;
  19. OnOperationError += errorCallbackAction;
  20. Start();
  21. }
  22. protected override Request CreateRequest()
  23. {
  24. return Client.List(OfflineMode);
  25. }
  26. protected override void ProcessData()
  27. {
  28. var request = CurrentRequest as ListRequest;
  29. var packages = new List<PackageInfo>();
  30. foreach (var upmPackage in request.Result)
  31. {
  32. var packageInfos = FromUpmPackageInfo(upmPackage);
  33. packages.AddRange(packageInfos);
  34. }
  35. _doneCallbackAction(packages);
  36. }
  37. }
  38. }