From 5d7e2682ba851c7e2984affc783afc6dd94c5973 Mon Sep 17 00:00:00 2001 From: Deyan Nenov Date: Fri, 15 Dec 2023 13:54:59 +0000 Subject: [PATCH] DYN-6511 Pm publish version from mypackages (#14723) * publish version from mypackages - now able to publish new package version from mypacakges * removed user prompt from tests - removed OnRequestPackagePublishDialog from tests which were not utilizing it, and rather relying on AddAllFilesAfterSelection (not sure how it was running before) * Update PackageManagerUITests.cs (cherry picked from commit 5d73e141eb0f14863fd8c4d93064b142ba896da9) --- .../PackageManagerSearchElementViewModel.cs | 18 ++++++++++ .../PackageManagerSearchViewModel.cs | 7 +++- .../PackageManager/PackageManagerViewModel.cs | 34 ++++++++++++++++++- .../Views/Core/DynamoView.xaml.cs | 4 +++ .../PackageManager/PackageManagerUITests.cs | 24 ------------- 5 files changed, 61 insertions(+), 26 deletions(-) diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchElementViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchElementViewModel.cs index 783035dfe4b..f04c2d5692f 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchElementViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchElementViewModel.cs @@ -113,6 +113,24 @@ public PackageManagerSearchElementViewModel(PackageManagerSearchElement element, public PackageManagerSearchElementViewModel(PackageManagerSearchElement element, bool canLogin) : this(element, canLogin, true) {} + /// + /// A property showing if the currently logged-in user owns the package + /// + private bool isOwner = false; + public bool IsOnwer + { + get + { + return isOwner; + } + + internal set + { + isOwner = value; + RaisePropertyChanged(nameof(IsOnwer)); + } + } + private bool canInstall; /// /// A Boolean flag reporting whether or not the user can install this SearchElement's package. diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs index 36cb8d1bd11..fd57ae6fd81 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerSearchViewModel.cs @@ -651,8 +651,12 @@ private void PopulateMyPackages() var pkgs = PackageManagerClientViewModel.CachedPackageList.Where(x => x.Maintainers != null && x.Maintainers.Contains(name)).ToList(); foreach(var pkg in pkgs) { - var p = new PackageManagerSearchElementViewModel(pkg, false); + var p = new PackageManagerSearchElementViewModel(pkg, + PackageManagerClientViewModel.AuthenticationManager.HasAuthProvider, + CanInstallPackage(pkg.Name)); p.RequestDownload += this.PackageOnExecuted; + p.RequestShowFileDialog += this.OnRequestShowFileDialog; + p.IsOnwer = true; myPackages.Add(p); } @@ -666,6 +670,7 @@ private void ClearMySearchResults() foreach (var ele in this.SearchMyResults) { ele.RequestDownload -= PackageOnExecuted; + ele.RequestShowFileDialog -= OnRequestShowFileDialog; } this.SearchMyResults = null; diff --git a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerViewModel.cs b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerViewModel.cs index 8474cf4e3ce..84897abc499 100644 --- a/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerViewModel.cs +++ b/src/DynamoCoreWpf/ViewModels/PackageManager/PackageManagerViewModel.cs @@ -1,5 +1,8 @@ using System; using System.Collections.ObjectModel; +using System.Linq; +using Dynamo.PackageManager.ViewModels; +using Dynamo.UI.Commands; using Dynamo.ViewModels; using NotificationObject = Dynamo.Core.NotificationObject; @@ -25,7 +28,20 @@ public class PackageManagerViewModel : NotificationObject, IDisposable /// /// PublishPackageViewModel containing information about all the published packages /// - public PublishPackageViewModel PublishPackageViewModel { get; set; } + /// + private PublishPackageViewModel publishPackageViewModel; + public PublishPackageViewModel PublishPackageViewModel + { + get { return publishPackageViewModel; } + set + { + if (publishPackageViewModel != value) + { + publishPackageViewModel = value; + RaisePropertyChanged(nameof(PublishPackageViewModel)); + } + } + } /// /// Returns all installed packages @@ -37,6 +53,7 @@ public class PackageManagerViewModel : NotificationObject, IDisposable /// public ObservableCollection Filters => installedPackagesViewModel.Filters; + public DelegateCommand PublishNewVersionCommand { get; set; } //Width of the PackageManagerView the default value is 1076 public double Width @@ -90,6 +107,21 @@ public PackageManagerViewModel(DynamoViewModel dynamoViewModel, PackageManagerSe { PreferencesViewModel.SelectedPackagePathForInstall = dynamoViewModel.PreferenceSettings.SelectedPackagePathForInstall; } + + PublishNewVersionCommand = new DelegateCommand(PublishNewPackageVersionRelayCommand); + } + + + private void PublishNewPackageVersionRelayCommand(object obj) + { + var searchElement = obj as PackageManagerSearchElementViewModel; + if(searchElement != null) + { + var localPackage = LocalPackages.First(x => x.Model.Name.Equals(searchElement.Name)); + + if (localPackage == null) { return; } + localPackage.PublishNewPackageVersionCommand.Execute(); + } } private void LocalPackages_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) diff --git a/src/DynamoCoreWpf/Views/Core/DynamoView.xaml.cs b/src/DynamoCoreWpf/Views/Core/DynamoView.xaml.cs index 91b9a2263ac..a492cd17384 100644 --- a/src/DynamoCoreWpf/Views/Core/DynamoView.xaml.cs +++ b/src/DynamoCoreWpf/Views/Core/DynamoView.xaml.cs @@ -1492,6 +1492,10 @@ private void DynamoViewModelRequestPackageManager(PublishPackageViewModel model) if (packageManagerWindow.IsLoaded && IsLoaded) packageManagerWindow.Owner = this; } + if (_pkgVM != null) + { + _pkgVM.PublishPackageViewModel = model; + } packageManagerWindow.Focus(); packageManagerWindow.Navigate(Wpf.Properties.Resources.PackageManagerPublishTab); diff --git a/test/DynamoCoreWpfTests/PackageManager/PackageManagerUITests.cs b/test/DynamoCoreWpfTests/PackageManager/PackageManagerUITests.cs index 0ff363a53a5..9ce8961dfec 100644 --- a/test/DynamoCoreWpfTests/PackageManager/PackageManagerUITests.cs +++ b/test/DynamoCoreWpfTests/PackageManager/PackageManagerUITests.cs @@ -1944,8 +1944,6 @@ public void GetAllFilesReturnsEqualsPackageContents() var allFiles = Directory.GetFiles(nodePath, "*", SearchOption.AllDirectories).ToList(); var vm = new PublishPackageViewModel(this.ViewModel); - ViewModel.OnRequestPackagePublishDialog(vm); - vm.AddAllFilesAfterSelection(allFiles); int packageContentsCount = 0; @@ -1969,8 +1967,6 @@ public void AssertGetPreBuildRootItemViewModelReturnsCorrectItem() var allFiles = Directory.GetFiles(nodePath, "*", SearchOption.AllDirectories).ToList(); var vm = new PublishPackageViewModel(this.ViewModel); - ViewModel.OnRequestPackagePublishDialog(vm); - vm.AddAllFilesAfterSelection(allFiles); var testPath = Path.Combine(TestDirectory, "core", "docbrowser\\pkgs\\RootPackageFolder\\", "TestPath"); @@ -1994,8 +1990,6 @@ public void AssertGetExistingRootItemViewModelReturnsCorrectItem() var allFiles = Directory.GetFiles(nodePath, "*", SearchOption.AllDirectories).ToList(); var vm = new PublishPackageViewModel(this.ViewModel); - ViewModel.OnRequestPackagePublishDialog(vm); - vm.AddAllFilesAfterSelection(allFiles); var testPath = Path.Combine(TestDirectory, "core", "docbrowser\\pkgs\\RootPackageFolder\\", "TestPath"); @@ -2031,8 +2025,6 @@ public void RemoveFilesUpdatesPerviewContentItem() var allFiles = Directory.GetFiles(nodePath, "*", SearchOption.AllDirectories).ToList(); var vm = new PublishPackageViewModel(this.ViewModel); - ViewModel.OnRequestPackagePublishDialog(vm); - vm.AddAllFilesAfterSelection(allFiles); // Act @@ -2056,8 +2048,6 @@ public void RemoveAllChildrenFilesUpdatesContentItem() var allFiles = Directory.GetFiles(nodePath, "*", SearchOption.AllDirectories).ToList(); var vm = new PublishPackageViewModel(this.ViewModel); - ViewModel.OnRequestPackagePublishDialog(vm); - vm.AddAllFilesAfterSelection(allFiles); // Act @@ -2085,8 +2075,6 @@ public void CanRemoveCustomDefinitionDependencyTypes() var allFiles = Directory.GetFiles(nodePath, "*", SearchOption.AllDirectories).ToList(); var vm = new PublishPackageViewModel(this.ViewModel); - ViewModel.OnRequestPackagePublishDialog(vm); - vm.AddAllFilesAfterSelection(allFiles); // Act @@ -2141,8 +2129,6 @@ public void CanRemoveAllDependencyTypes() var allFiles = Directory.GetFiles(nodePath, "*", SearchOption.AllDirectories).ToList(); var vm = new PublishPackageViewModel(this.ViewModel); - ViewModel.OnRequestPackagePublishDialog(vm); - vm.AddAllFilesAfterSelection(allFiles); // Act @@ -2189,8 +2175,6 @@ public void CancelCommandClearsAllData() Assert.AreEqual(0, vm.PackageContents.Count); Assert.AreEqual(0, vm.PreviewPackageContents.Count); - ViewModel.OnRequestPackagePublishDialog(vm); - vm.AddAllFilesAfterSelection(allFiles); // Act @@ -2217,8 +2201,6 @@ public void AssertPreviewPackageDefaultFolderStructureEqualsPublishLocalPackageR //now lets publish this package. var newPkgVm = new PublishPackageViewModel(this.ViewModel); - ViewModel.OnRequestPackagePublishDialog(newPkgVm); - newPkgVm.AddAllFilesAfterSelection(allFiles); var previewFilesAndFolders = PackageItemRootViewModel.GetFiles(newPkgVm.PreviewPackageContents.ToList()); @@ -2258,9 +2240,6 @@ public void AssertPreviewPackageRetainFolderStructureEqualsPublishLocalPackageRe //now lets publish this package. var newPkgVm = new PublishPackageViewModel(this.ViewModel); newPkgVm.RetainFolderStructureOverride = true; - - ViewModel.OnRequestPackagePublishDialog(newPkgVm); - newPkgVm.AddAllFilesAfterSelection(allFiles); var previewFilesAndFolders = PackageItemRootViewModel.GetFiles(newPkgVm.PreviewPackageContents.ToList()); @@ -2300,9 +2279,6 @@ public void AssertPublishLocalHandleType() //now lets publish this package. var newPkgVm = new PublishPackageViewModel(this.ViewModel); newPkgVm.RetainFolderStructureOverride = true; - - ViewModel.OnRequestPackagePublishDialog(newPkgVm); - newPkgVm.AddAllFilesAfterSelection(allFiles); var previewFilesAndFolders = PackageItemRootViewModel.GetFiles(newPkgVm.PreviewPackageContents.ToList());