diff --git a/src/Artemis.Core/Plugins/PluginFeatureInfo.cs b/src/Artemis.Core/Plugins/PluginFeatureInfo.cs index cda82170d..77cfb84e7 100644 --- a/src/Artemis.Core/Plugins/PluginFeatureInfo.cs +++ b/src/Artemis.Core/Plugins/PluginFeatureInfo.cs @@ -95,5 +95,16 @@ public class PluginFeatureInfo : IPrerequisitesSubject return Instance?.Id ?? "Uninitialized feature"; } + /// + /// Returns a boolean indicating whether this feature info matches the provided search string + /// + /// The search string to match + /// A boolean indicating whether this plugin info matches the provided search string + public bool MatchesSearch(string search) + { + return Name.Contains(search, StringComparison.InvariantCultureIgnoreCase) || + (Description != null && Description.Contains(search, StringComparison.InvariantCultureIgnoreCase)); + } + internal PluginFeatureEntity Entity { get; } } \ No newline at end of file diff --git a/src/Artemis.Core/Plugins/PluginInfo.cs b/src/Artemis.Core/Plugins/PluginInfo.cs index a682fb135..5f668f506 100644 --- a/src/Artemis.Core/Plugins/PluginInfo.cs +++ b/src/Artemis.Core/Plugins/PluginInfo.cs @@ -155,19 +155,30 @@ public class PluginInfo : IPrerequisitesSubject { return PlatformPrerequisites.All(p => p.IsMet()); } - + /// public override string ToString() { return $"{Name} v{Version} - {Guid}"; } - + private bool MatchesMinimumVersion() { if (Constants.CurrentVersion == "local") return true; - + Version currentVersion = new(Constants.CurrentVersion); return currentVersion >= MinimumVersion; } + + /// + /// Returns a boolean indicating whether this plugin info matches the provided search string + /// + /// The search string to match + /// A boolean indicating whether this plugin info matches the provided search string + public bool MatchesSearch(string search) + { + return Name.Contains(search, StringComparison.InvariantCultureIgnoreCase) || + (Description != null && Description.Contains(search, StringComparison.InvariantCultureIgnoreCase)); + } } \ No newline at end of file diff --git a/src/Artemis.UI/Screens/Plugins/PluginSettingsView.axaml b/src/Artemis.UI/Screens/Plugins/PluginSettingsView.axaml index ffed28a76..aa7b657a3 100644 --- a/src/Artemis.UI/Screens/Plugins/PluginSettingsView.axaml +++ b/src/Artemis.UI/Screens/Plugins/PluginSettingsView.axaml @@ -13,7 +13,7 @@ Plugin features - + diff --git a/src/Artemis.UI/Screens/Settings/Tabs/PluginsTabView.axaml b/src/Artemis.UI/Screens/Settings/Tabs/PluginsTabView.axaml index b9377f61b..4fb1a771a 100644 --- a/src/Artemis.UI/Screens/Settings/Tabs/PluginsTabView.axaml +++ b/src/Artemis.UI/Screens/Settings/Tabs/PluginsTabView.axaml @@ -33,7 +33,7 @@ - + diff --git a/src/Artemis.UI/Screens/Settings/Tabs/PluginsTabViewModel.cs b/src/Artemis.UI/Screens/Settings/Tabs/PluginsTabViewModel.cs index 5c9c76cb4..ca289eed7 100644 --- a/src/Artemis.UI/Screens/Settings/Tabs/PluginsTabViewModel.cs +++ b/src/Artemis.UI/Screens/Settings/Tabs/PluginsTabViewModel.cs @@ -112,8 +112,7 @@ public partial class PluginsTabViewModel : RoutableScreen if (string.IsNullOrWhiteSpace(text)) return _ => true; - return data => data.Info.Name.Contains(text, StringComparison.InvariantCultureIgnoreCase) || - (data.Info.Description != null && data.Info.Description.Contains(text, StringComparison.InvariantCultureIgnoreCase)); + return data => data.Info.MatchesSearch(text) || data.Features.Any(f => f.MatchesSearch(text)); } public async Task GetMorePlugins()