Example #1
0
        private async Task LoadInstalledAndAvailablePackagesAsync()
        {
            await TaskUtilities.SwitchToBackgroundThread();

            var availablePackages = await _packageManager.GetAvailablePackagesAsync();

            var installedPackages = await _packageManager.GetInstalledPackagesAsync();

            var vmAvailablePackages = availablePackages.Select(RPackageViewModel.CreateAvailable).ToDictionary(p => p.Name);
            var vmInstalledPackages = new List <IRPackageViewModel>();

            foreach (var installedPackage in installedPackages)
            {
                RPackageViewModel vmPackage;
                if (vmAvailablePackages.TryGetValue(installedPackage.Package, out vmPackage))
                {
                    vmPackage.AddDetails(installedPackage, true);
                    vmInstalledPackages.Add(vmPackage);
                }
                else
                {
                    vmInstalledPackages.Add(RPackageViewModel.CreateInstalled(installedPackage));
                }
            }

            _installedPackages = vmInstalledPackages.OrderBy(p => p.Name).ToList();
            _availablePackages = vmAvailablePackages.Values.OrderBy(p => p.Name).ToList <IRPackageViewModel>();
        }
Example #2
0
        private async Task LoadInstalledAndLoadedPackagesAsync()
        {
            await TaskUtilities.SwitchToBackgroundThread();

            var markUninstalledAndUnloadedTask = MarkUninstalledAndUnloaded();
            var getInstalledPackagesTask       = _packageManager.GetInstalledPackagesAsync();
            await Task.WhenAll(markUninstalledAndUnloadedTask, getInstalledPackagesTask);

            var installedPackages = getInstalledPackagesTask.Result;

            if (!_availableLock.IsCompleted)
            {
                var vmInstalledPackages = installedPackages
                                          .Select(package => RPackageViewModel.CreateInstalled(package, this))
                                          .OrderBy(p => p.Name)
                                          .ToList <IRPackageViewModel>();

                IdentifyRemovablePackages(vmInstalledPackages);

                await UpdateLoadedPackages(vmInstalledPackages);

                _installedPackages = vmInstalledPackages;

                EnsureAvailablePackagesLoadedAsync().DoNotWait();
            }
            else
            {
                var vmAvailablePackages = _availablePackages.ToDictionary(k => k.Name);
                var vmInstalledPackages = new List <IRPackageViewModel>();

                foreach (var installedPackage in installedPackages)
                {
                    IRPackageViewModel vmPackage;
                    if (vmAvailablePackages.TryGetValue(installedPackage.Package, out vmPackage))
                    {
                        vmPackage.AddDetails(installedPackage, true);
                        vmInstalledPackages.Add(vmPackage);
                    }
                    else
                    {
                        vmInstalledPackages.Add(RPackageViewModel.CreateInstalled(installedPackage, this));
                    }
                }

                IdentifyRemovablePackages(vmInstalledPackages);
                vmInstalledPackages = vmInstalledPackages.OrderBy(p => p.Name).ToList();

                await UpdateLoadedPackages(vmInstalledPackages);

                _installedPackages = vmInstalledPackages;
            }
        }