Skip to content

Commit 49043b6

Browse files
committed
privatize methods
1 parent cff3e93 commit 49043b6

10 files changed

Lines changed: 168 additions & 145 deletions

File tree

src/UniGetUI.PackageEngine.PackageLoader/DiscoverablePackagesLoader.cs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using UniGetUI.Core.Logging;
12
using UniGetUI.Core.Tools;
23
using UniGetUI.Interface.Enums;
34
using UniGetUI.PackageEngine.Interfaces;
@@ -66,5 +67,46 @@ protected override Task WhenAddingPackage(IPackage package)
6667
}
6768
return Task.CompletedTask;
6869
}
70+
71+
public (IPackage?, string?) GetPackageFromIdAndManager(string id, string managerName, string sourceName)
72+
{
73+
IPackageManager? manager = null;
74+
75+
foreach (var candidate in Managers)
76+
{
77+
if (candidate.Name == managerName || candidate.DisplayName == managerName)
78+
{
79+
manager = candidate;
80+
break;
81+
}
82+
}
83+
84+
if (manager is null)
85+
return (null, CoreTools.Translate("The package manager \"{0}\" was not found", managerName));
86+
87+
if (!manager.IsEnabled())
88+
return (null, CoreTools.Translate("The package manager \"{0}\" is disabled", manager.DisplayName));
89+
90+
if (!manager.Status.Found)
91+
return (null, CoreTools.Translate("There is an error with the configuration of the package manager \"{0}\"", manager.DisplayName));
92+
93+
var results = manager.FindPackages(id);
94+
var candidates = results.Where(p => p.Id == id).ToArray();
95+
96+
if (candidates.Length == 0)
97+
return (null, CoreTools.Translate("The package \"{0}\" was not found on the package manager \"{1}\"", id, manager.DisplayName));
98+
99+
IPackage package = candidates[0];
100+
101+
// Get package from best source
102+
if (candidates.Length >= 1 && manager.Capabilities.SupportsCustomSources)
103+
foreach (var candidate in candidates)
104+
{
105+
if (candidate.Source.Name == sourceName)
106+
package = candidate;
107+
}
108+
109+
return (package, null);
110+
}
69111
}
70112
}

src/UniGetUI/App.xaml.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
using UniGetUI.Interface.Telemetry;
1919
using UniGetUI.PackageEngine.Interfaces;
2020
using LaunchActivatedEventArgs = Microsoft.UI.Xaml.LaunchActivatedEventArgs;
21+
using UniGetUI.Pages.DialogPages;
22+
using UniGetUI.Interface.Enums;
2123

2224
namespace UniGetUI
2325
{
@@ -227,23 +229,22 @@ private async Task LoadComponentsAsync()
227229

228230
BackgroundApi.OnShowSharedPackage += (_, package) => MainWindow.DispatcherQueue.TryEnqueue(() =>
229231
{
230-
MainWindow?.NavigationPage?.DiscoverPage.ShowSharedPackage_ThreadSafe(package.Key, package.Value);
231-
MainWindow?.Activate();
232+
DialogHelper.ShowSharedPackage_ThreadSafe(package.Key, package.Value);
232233
});
233234

234235
BackgroundApi.OnUpgradeAll += (_, _) => MainWindow.DispatcherQueue.TryEnqueue(() =>
235236
{
236-
MainWindow?.NavigationPage?.UpdatesPage.UpdateAll();
237+
Operations.UpdateAll();
237238
});
238239

239-
BackgroundApi.OnUpgradeAllForManager += (_, manager) => MainWindow.DispatcherQueue.TryEnqueue(() =>
240+
BackgroundApi.OnUpgradeAllForManager += (_, managerName) => MainWindow.DispatcherQueue.TryEnqueue(async () =>
240241
{
241-
MainWindow?.NavigationPage?.UpdatesPage.UpdateAllPackagesForManager(manager);
242+
Operations.UpdateAllForManager(managerName);
242243
});
243244

244-
BackgroundApi.OnUpgradePackage += (_, package) => MainWindow.DispatcherQueue.TryEnqueue(() =>
245+
BackgroundApi.OnUpgradePackage += (_, packageId) => MainWindow.DispatcherQueue.TryEnqueue(() =>
245246
{
246-
MainWindow?.NavigationPage?.UpdatesPage.UpdatePackageForId(package);
247+
Operations.UpdateForId(packageId);
247248
});
248249

249250
_ = BackgroundApi.Start();

src/UniGetUI/AppOperationHelper.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
using UniGetUI.PackageEngine.PackageClasses;
1616
using UniGetUI.PackageOperations;
1717
using UniGetUI.Pages.DialogPages;
18+
using UniGetUI.Interface.Enums;
19+
using UniGetUI.PackageEngine;
1820

1921
namespace UniGetUI;
2022

@@ -163,6 +165,38 @@ public static void Update(IReadOnlyList<IPackage> packages, bool? elevated = nul
163165
}
164166
}
165167

168+
public static async void UpdateAll()
169+
{
170+
foreach (IPackage package in PEInterface.UpgradablePackagesLoader.Packages)
171+
if (package.Tag is not PackageTag.BeingProcessed and not PackageTag.OnQueue)
172+
await Update(package);
173+
}
174+
175+
public static async void UpdateAllForManager(string managerName)
176+
{
177+
foreach (IPackage package in PEInterface.UpgradablePackagesLoader.Packages)
178+
{
179+
if (package.Tag is not PackageTag.OnQueue and not PackageTag.BeingProcessed
180+
&& package.Manager.Name == managerName || package.Manager.DisplayName == managerName)
181+
await Update(package);
182+
}
183+
}
184+
185+
public static async void UpdateForId(string packageId)
186+
{
187+
foreach (IPackage package in PEInterface.UpgradablePackagesLoader.Packages)
188+
{
189+
if (package.Id == packageId)
190+
{
191+
await Update(package);
192+
Logger.Info($"[WIDGETS] Updating package with id {packageId}");
193+
return;
194+
}
195+
}
196+
197+
Logger.Warn($"[WIDGETS] No package with id={packageId} was found");
198+
}
199+
166200
/*
167201
* PACKAGE UNINSTALL
168202
*/

src/UniGetUI/MainWindow.xaml.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ public void HandleNotificationActivation(AppNotificationActivatedEventArgs args)
265265

266266
if (action == NotificationArguments.UpdateAllPackages)
267267
{
268-
NavigationPage.UpdatesPage.UpdateAll();
268+
MainApp.Operations.UpdateAll();
269269
}
270270
else if (action == NotificationArguments.ShowOnUpdatesTab)
271271
{
@@ -360,11 +360,11 @@ private void HandleDeepLink(string link)
360360
if (Id != "" && CombinedManagerName != "" && ManagerName == "" && SourceName == "")
361361
{
362362
Logger.Warn($"URI {link} follows old scheme");
363-
NavigationPage.DiscoverPage.ShowSharedPackage_ThreadSafe(Id, CombinedManagerName);
363+
DialogHelper.ShowSharedPackage_ThreadSafe(Id, CombinedManagerName);
364364
}
365365
else if (Id != "" && ManagerName != "" && SourceName != "")
366366
{
367-
NavigationPage.DiscoverPage.ShowSharedPackage_ThreadSafe(Id, ManagerName, SourceName);
367+
DialogHelper.ShowSharedPackage_ThreadSafe(Id, ManagerName, SourceName);
368368
}
369369
else
370370
{
@@ -437,8 +437,7 @@ public void ProcessCommandLineParameters()
437437
{
438438
// Handle potential JSON files
439439
Logger.ImportantInfo("Begin attempt to open the package bundle " + param);
440-
NavigationPage.NavigateTo(PageType.Bundles);
441-
_ = NavigationPage.BundlesPage.OpenFromFile(param);
440+
NavigationPage.LoadBundleFile(param);
442441
}
443442
else if (param.EndsWith("UniGetUI.exe") || param.EndsWith("UniGetUI.dll"))
444443
{

src/UniGetUI/Pages/DialogPages/DialogHelper_Packages.cs

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
1+
using System.Diagnostics.Tracing;
12
using Microsoft.UI.Xaml;
23
using Microsoft.UI.Xaml.Controls;
34
using Microsoft.UI.Xaml.Media;
5+
using UniGetUI.Core.Logging;
46
using UniGetUI.Core.Tools;
57
using UniGetUI.Interface.Dialogs;
68
using UniGetUI.Interface.Telemetry;
9+
using UniGetUI.PackageEngine;
710
using UniGetUI.PackageEngine.Enums;
811
using UniGetUI.PackageEngine.Interfaces;
912
using UniGetUI.PackageEngine.PackageClasses;
1013
using UniGetUI.PackageEngine.Serializable;
14+
using Windows.ApplicationModel;
1115

1216
namespace UniGetUI.Pages.DialogPages;
1317

@@ -139,4 +143,56 @@ public static async Task<bool> ConfirmUninstallation(IReadOnlyList<IPackage> pac
139143

140144
return await Window.ShowDialogAsync(dialog) is ContentDialogResult.Primary;
141145
}
146+
147+
public static void ShowSharedPackage_ThreadSafe(string id, string combinedSourceName)
148+
{
149+
var contents = combinedSourceName.Split(':');
150+
string managerName = contents[0];
151+
string sourceName = "";
152+
if (contents.Length > 1) sourceName = contents[1];
153+
GetPackageFromIdAndManager(id, managerName, sourceName, "LEGACY_COMBINEDSOURCE");
154+
}
155+
156+
public static void ShowSharedPackage_ThreadSafe(string id, string managerName, string sourceName)
157+
{
158+
MainApp.Instance.MainWindow.DispatcherQueue.TryEnqueue(() =>
159+
{
160+
GetPackageFromIdAndManager(id, managerName, sourceName, "DEFAULT");
161+
});
162+
}
163+
164+
private static async void GetPackageFromIdAndManager(string id, string managerName, string sourceName, string eventSource)
165+
{
166+
try
167+
{
168+
Window.Activate();
169+
ShowLoadingDialog(CoreTools.Translate("Please wait..."));
170+
171+
var findResult = await Task.Run(() => PEInterface.DiscoveredPackagesLoader.GetPackageFromIdAndManager(id, managerName, sourceName));
172+
173+
HideLoadingDialog();
174+
175+
if (findResult.Item1 is null) throw new KeyNotFoundException(findResult.Item2 ?? "Unknown error");
176+
177+
TelemetryHandler.SharedPackage(findResult.Item1, eventSource);
178+
ShowPackageDetails(findResult.Item1, OperationType.Install, TEL_InstallReferral.FROM_WEB_SHARE);
179+
180+
}
181+
catch (Exception ex)
182+
{
183+
Logger.Error($"An error occurred while attempting to show the package with id {id}");
184+
var warningDialog = new ContentDialog
185+
{
186+
Title = CoreTools.Translate("Package not found"),
187+
Content = CoreTools.Translate("An error occurred when attempting to show the package with Id {0}", id) + ":\n" + ex.Message,
188+
CloseButtonText = CoreTools.Translate("Ok"),
189+
DefaultButton = ContentDialogButton.Close,
190+
XamlRoot = MainApp.Instance.MainWindow.Content.XamlRoot // Ensure the dialog is shown in the correct context
191+
};
192+
193+
HideLoadingDialog();
194+
await Window.ShowDialogAsync(warningDialog);
195+
196+
}
197+
}
142198
}

src/UniGetUI/Pages/MainView.xaml.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,10 @@ public enum PageType
4242

4343
public sealed partial class MainView : UserControl
4444
{
45-
public DiscoverSoftwarePage DiscoverPage;
46-
public SoftwareUpdatesPage UpdatesPage;
47-
public InstalledPackagesPage InstalledPage;
48-
public PackageBundlesPage BundlesPage;
45+
private DiscoverSoftwarePage DiscoverPage;
46+
private SoftwareUpdatesPage UpdatesPage;
47+
private InstalledPackagesPage InstalledPage;
48+
private PackageBundlesPage BundlesPage;
4949
private SettingsBasePage? SettingsPage;
5050
private SettingsBasePage? ManagersPage;
5151
private UniGetUILogPage? UniGetUILogPage;
@@ -431,5 +431,11 @@ private void MoreNavBtn_Tapped(object sender, Microsoft.UI.Xaml.Input.TappedRout
431431
(VersionMenuItem as MenuFlyoutItem).Text = CoreTools.Translate("WingetUI Version {0}", CoreData.VersionName);
432432
MoreNavButtonMenu.ShowAt(sender as FrameworkElement);
433433
}
434+
435+
internal void LoadBundleFile(string param)
436+
{
437+
NavigateTo(PageType.Bundles);
438+
BundlesPage?.OpenFromFile(param);
439+
}
434440
}
435441
}

src/UniGetUI/Pages/SettingsPages/GeneralPages/Backup.xaml.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using UniGetUI.Core.Data;
66
using System.Diagnostics;
77
using UniGetUI.Pages.DialogPages;
8+
using UniGetUI.Interface.SoftwarePages;
89

910
// To learn more about WinUI, the WinUI project structure,
1011
// and more about our project templates, see: http://aka.ms/winui-project-info.
@@ -99,7 +100,7 @@ private void OpenBackupPath_Click(object sender, RoutedEventArgs e)
99100
private async void DoBackup_Click(object sender, EventArgs e)
100101
{
101102
DialogHelper.ShowLoadingDialog(CoreTools.Translate("Performing backup, please wait..."));
102-
await MainApp.Instance.MainWindow.NavigationPage.InstalledPage.BackupPackages();
103+
await InstalledPackagesPage.BackupPackages();
103104
DialogHelper.HideLoadingDialog();
104105
}
105106
}

src/UniGetUI/Pages/SoftwarePages/DiscoverSoftwarePage.cs

Lines changed: 0 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -298,102 +298,5 @@ private void MenuAsAdmin_Invoked(object sender, RoutedEventArgs e)
298298
private void MenuInstallSettings_Invoked(object sender, RoutedEventArgs e)
299299
=> ShowInstallationOptionsForPackage(SelectedItem);
300300

301-
public void ShowSharedPackage_ThreadSafe(string id, string combinedSourceName)
302-
{
303-
var contents = combinedSourceName.Split(':');
304-
string managerName = contents[0];
305-
string sourceName = "";
306-
if (contents.Length > 1) sourceName = contents[1];
307-
_showSharedPackage(id, managerName, sourceName, "LEGACY_COMBINEDSOURCE");
308-
}
309-
310-
public void ShowSharedPackage_ThreadSafe(string id, string managerName, string sourceName)
311-
{
312-
MainApp.Instance.MainWindow.DispatcherQueue.TryEnqueue(() =>
313-
{
314-
_showSharedPackage(id, managerName, sourceName, "DEFAULT");
315-
});
316-
}
317-
318-
private async void _showSharedPackage(string id, string manager, string source, string eventSource)
319-
{
320-
IPackage? package = await GetPackageFromIdAndManager(id, manager, source);
321-
if (package is not null)
322-
{
323-
TelemetryHandler.SharedPackage(package, eventSource);
324-
ShowDetailsForPackage(package, TEL_InstallReferral.FROM_WEB_SHARE);
325-
}
326-
}
327-
328-
private static async Task<IPackage?> GetPackageFromIdAndManager(string id, string managerName, string sourceName)
329-
{
330-
try
331-
{
332-
Logger.Info($"Showing shared package with pId={id} and pSource={managerName}: ´{sourceName} ...");
333-
MainApp.Instance.MainWindow.Activate();
334-
DialogHelper.ShowLoadingDialog(CoreTools.Translate("Please wait...", id));
335-
336-
IPackageManager? manager = null;
337-
338-
foreach (var candidate in PEInterface.Managers)
339-
{
340-
if (candidate.Name == managerName || candidate.DisplayName == managerName)
341-
{
342-
manager = candidate;
343-
break;
344-
}
345-
}
346-
347-
if (manager is null)
348-
{
349-
throw new ArgumentException(CoreTools.Translate("The package manager \"{0}\" was not found", managerName));
350-
}
351-
352-
if (!manager.IsEnabled())
353-
throw new ArgumentException(CoreTools.Translate("The package manager \"{0}\" is disabled", manager.DisplayName));
354-
355-
if (!manager.Status.Found)
356-
throw new ArgumentException(CoreTools.Translate("There is an error with the configuration of the package manager \"{0}\"", manager.DisplayName));
357-
358-
var results = await Task.Run(() => manager.FindPackages(id));
359-
var candidates = results.Where(p => p.Id == id).ToArray();
360-
361-
if (candidates.Length == 0)
362-
{
363-
throw new ArgumentException(CoreTools.Translate("The package \"{0}\" was not found on the package manager \"{1}\"", id, manager.DisplayName));
364-
}
365-
366-
IPackage package = candidates[0];
367-
368-
// Get package from best source
369-
if (candidates.Length >= 1 && manager.Capabilities.SupportsCustomSources)
370-
foreach (var candidate in candidates)
371-
{
372-
if (candidate.Source.Name == sourceName)
373-
package = candidate;
374-
}
375-
376-
Logger.ImportantInfo($"Found package {package.Id} on manager {package.Manager.Name}, showing it...");
377-
DialogHelper.HideLoadingDialog();
378-
return package;
379-
}
380-
catch (Exception ex)
381-
{
382-
Logger.Error($"An error occurred while attempting to show the package with id {id}");
383-
Logger.Error(ex);
384-
var warningDialog = new ContentDialog
385-
{
386-
Title = CoreTools.Translate("Package not found"),
387-
Content = CoreTools.Translate("An error occurred when attempting to show the package with Id {0}", id) + ":\n" + ex.Message,
388-
CloseButtonText = CoreTools.Translate("Ok"),
389-
DefaultButton = ContentDialogButton.Close,
390-
XamlRoot = MainApp.Instance.MainWindow.Content.XamlRoot // Ensure the dialog is shown in the correct context
391-
};
392-
393-
DialogHelper.HideLoadingDialog();
394-
await MainApp.Instance.MainWindow.ShowDialogAsync(warningDialog);
395-
return null;
396-
}
397-
}
398301
}
399302
}

0 commit comments

Comments
 (0)