From 6cb4cad01f0501ee2cdcf198e748f9ccccfada67 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Thu, 27 Mar 2025 21:07:39 +0100 Subject: [PATCH] Added switch to enable or disable a plugin --- app/MindWork AI Studio/Pages/Plugins.razor | 5 ++++- app/MindWork AI Studio/Pages/Plugins.razor.cs | 16 +++++++++++++++- .../Settings/SettingsManager.cs | 3 +++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/MindWork AI Studio/Pages/Plugins.razor b/app/MindWork AI Studio/Pages/Plugins.razor index 7ee17f95..07df6486 100644 --- a/app/MindWork AI Studio/Pages/Plugins.razor +++ b/app/MindWork AI Studio/Pages/Plugins.razor @@ -63,7 +63,10 @@ - Actions... + @if (!context.IsInternal) + { + + } diff --git a/app/MindWork AI Studio/Pages/Plugins.razor.cs b/app/MindWork AI Studio/Pages/Plugins.razor.cs index 0a1abe02..f2dc83d9 100644 --- a/app/MindWork AI Studio/Pages/Plugins.razor.cs +++ b/app/MindWork AI Studio/Pages/Plugins.razor.cs @@ -11,6 +11,9 @@ public partial class Plugins : ComponentBase private const string GROUP_DISABLED = "Disabled"; private const string GROUP_INTERNAL = "Internal"; + [Inject] + private MessageBus MessageBus { get; init; } = null!; + [Inject] private SettingsManager SettingsManager { get; init; } = null!; @@ -29,7 +32,7 @@ public partial class Plugins : ComponentBase if (pluginMeta.IsInternal) return GROUP_INTERNAL; - return this.SettingsManager.ConfigurationData.EnabledPlugins.Contains(pluginMeta.Id) + return this.SettingsManager.IsPluginEnabled(pluginMeta) ? GROUP_ENABLED : GROUP_DISABLED; } @@ -39,4 +42,15 @@ public partial class Plugins : ComponentBase } #endregion + + private async Task PluginActivationStateChanged(IPluginMetadata pluginMeta) + { + if (this.SettingsManager.IsPluginEnabled(pluginMeta)) + this.SettingsManager.ConfigurationData.EnabledPlugins.Remove(pluginMeta.Id); + else + this.SettingsManager.ConfigurationData.EnabledPlugins.Add(pluginMeta.Id); + + await this.SettingsManager.StoreSettings(); + await this.MessageBus.SendMessage(this, Event.CONFIGURATION_CHANGED); + } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/SettingsManager.cs b/app/MindWork AI Studio/Settings/SettingsManager.cs index 0930c9a5..ec74cab8 100644 --- a/app/MindWork AI Studio/Settings/SettingsManager.cs +++ b/app/MindWork AI Studio/Settings/SettingsManager.cs @@ -4,6 +4,7 @@ using System.Text.Json.Serialization; using AIStudio.Provider; using AIStudio.Settings.DataModel; +using AIStudio.Tools.PluginSystem; // ReSharper disable NotAccessedPositionalProperty.Local @@ -142,6 +143,8 @@ public sealed class SettingsManager(ILogger logger) return minimumLevel; } + public bool IsPluginEnabled(IPluginMetadata plugin) => this.ConfigurationData.EnabledPlugins.Contains(plugin.Id); + [SuppressMessage("Usage", "MWAIS0001:Direct access to `Providers` is not allowed")] public Provider GetPreselectedProvider(Tools.Components component, string? currentProviderId = null, bool usePreselectionBeforeCurrentProvider = false) {