From 9746d238a5993f349aa24e1bf95cf4ac58d54229 Mon Sep 17 00:00:00 2001 From: C1rdec Date: Tue, 2 Aug 2022 23:38:54 -0400 Subject: [PATCH] Leverage favorite system for recommended tool providers --- .../DevToys/ViewModels/MainPageViewModel.cs | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/dev/impl/DevToys/ViewModels/MainPageViewModel.cs b/src/dev/impl/DevToys/ViewModels/MainPageViewModel.cs index 886b253e9c..6385792cd9 100644 --- a/src/dev/impl/DevToys/ViewModels/MainPageViewModel.cs +++ b/src/dev/impl/DevToys/ViewModels/MainPageViewModel.cs @@ -666,8 +666,9 @@ ToolProviderViewItem[] newRecommendedTools using (await _sempahore.WaitAsync(CancellationToken.None).ConfigureAwait(false)) { - if (newRecommendedTools.Length == 1 - && IsToolDisplayedInMenu(ToolsMenuItems.OfType(), newRecommendedTools[0])) + ToolProviderViewItem? toolProvider = GetRecommendedToolProvider(newRecommendedTools); + if (toolProvider != null + && IsToolDisplayedInMenu(ToolsMenuItems.OfType(), toolProvider)) { // One unique tool is recommended. // The recommended tool is displayed in the top menu. @@ -679,13 +680,28 @@ ToolProviderViewItem[] newRecommendedTools { if (!IsInCompactOverlayMode && _allowSelectAutomaticallyRecommendedTool) { - SetSelectedMenuItem(newRecommendedTools[0], _clipboardContent); + SetSelectedMenuItem(toolProvider, _clipboardContent); } }); } } } + private ToolProviderViewItem? GetRecommendedToolProvider(ToolProviderViewItem[] items) + { + ToolProviderViewItem favoriteItem = items.FirstOrDefault(i => i.IsFavorite); + if (favoriteItem != null) + { + return favoriteItem; + } + else if (items.Length == 1) + { + return items[0]; + } + + return null; + } + private bool IsToolDisplayedInMenu(IEnumerable tools, ToolProviderViewItem ToolProviderViewItem) { Arguments.NotNull(tools, nameof(tools));