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()