Пример #1
0
        /// <summary>
        /// Updates the server package of this version.
        /// </summary>
        /// <param name="package">The server package corresponding to this version.</param>
        internal void UpdateServerPackage(NugetServerPackage package, IEnumerable <NugetServerPackage> alternateVersions)
        {
            OnPropertyChanging(nameof(FullName), nameof(Version));
            ServerPackage = package;
            OnPropertyChanged(nameof(FullName), nameof(Version));

            // Always keep track of highest version
            if (ServerPackage != null && (LatestServerPackage == null || LatestServerPackage.Version < ServerPackage.Version))
            {
                LatestServerPackage = ServerPackage;
            }

            Dispatcher.Invoke(UpdateStatus);
            if (alternateVersions != null)
            {
                Dispatcher.Invoke(() =>
                                  UpdateAlternateVersions(alternateVersions, (alternateVersionViewModel, alternateVersion) =>
                {
                    if (alternateVersion == null && alternateVersionViewModel.LocalPackage == null)
                    {
                        AlternateVersions.Remove(alternateVersionViewModel);
                    }
                    else
                    {
                        alternateVersionViewModel.UpdateServerPackage(alternateVersion);
                    }
                }));
            }
        }
Пример #2
0
        private void UpdateAlternateVersions <T>(IEnumerable <T> alternateVersions, Action <StrideStoreAlternateVersionViewModel, T> updateAction) where T : NugetPackage
        {
            var updatedViewModels = new HashSet <StrideStoreAlternateVersionViewModel>();

            foreach (var alternateVersion in alternateVersions)
            {
                int index = AlternateVersions.IndexOf(x => x.Version == alternateVersion.Version);
                StrideStoreAlternateVersionViewModel alternateVersionViewModel;
                if (index < 0)
                {
                    // If not, add it
                    alternateVersionViewModel = new StrideStoreAlternateVersionViewModel(this);
                    AlternateVersions.Add(alternateVersionViewModel);
                }
                else
                {
                    // If yes, update it and remove it from the list of old version
                    alternateVersionViewModel = AlternateVersions[index];
                }

                updateAction(alternateVersionViewModel, alternateVersion);
                updatedViewModels.Add(alternateVersionViewModel);
            }

            // Update versions that are not installed locally anymore
            foreach (var alternateVersionViewModel in AlternateVersions.Where(x => !updatedViewModels.Contains(x)).ToList())
            {
                updateAction(alternateVersionViewModel, null);
            }
        }
Пример #3
0
 /// <summary>
 /// Updates the local package of this version.
 /// </summary>
 /// <param name="package">The local package corresponding to this version.</param>
 internal void UpdateLocalPackage(NugetLocalPackage package, IEnumerable <NugetLocalPackage> alternateVersions)
 {
     OnPropertyChanging(nameof(FullName), nameof(Version));
     LocalPackage = package;
     OnPropertyChanged(nameof(FullName), nameof(Version));
     Dispatcher.Invoke(UpdateStatus);
     if (alternateVersions != null)
     {
         Dispatcher.Invoke(() =>
         {
             UpdateAlternateVersions(alternateVersions, (alternateVersionViewModel, alternateVersion) =>
             {
                 if (alternateVersion == null && alternateVersionViewModel.ServerPackage == null)
                 {
                     AlternateVersions.Remove(alternateVersionViewModel);
                 }
                 else
                 {
                     alternateVersionViewModel.UpdateLocalPackage(alternateVersion);
                 }
             });
         });
     }
     Dispatcher.Invoke(() => UpdateFrameworks());
 }