From c104f9144cd15565084fb1cb73b94c83bb628a9e Mon Sep 17 00:00:00 2001 From: krut_ni Date: Wed, 8 Jul 2026 22:12:16 +0200 Subject: [PATCH] wired the editor dialog to an action button on the plugin overview page --- app/MindWork AI Studio/Pages/Plugins.razor | 7 +++++++ app/MindWork AI Studio/Pages/Plugins.razor.cs | 21 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/app/MindWork AI Studio/Pages/Plugins.razor b/app/MindWork AI Studio/Pages/Plugins.razor index fc561089..eb83661d 100644 --- a/app/MindWork AI Studio/Pages/Plugins.razor +++ b/app/MindWork AI Studio/Pages/Plugins.razor @@ -97,6 +97,13 @@ } } + @if (context is IAvailablePlugin editablePlugin && CanEditAssistantPlugin(editablePlugin)) + { + + + + } + @if (context is IAvailablePlugin availablePlugin && CanDeleteAssistantPlugin(availablePlugin)) { diff --git a/app/MindWork AI Studio/Pages/Plugins.razor.cs b/app/MindWork AI Studio/Pages/Plugins.razor.cs index 8a616ad4..4afeeed7 100644 --- a/app/MindWork AI Studio/Pages/Plugins.razor.cs +++ b/app/MindWork AI Studio/Pages/Plugins.razor.cs @@ -188,8 +188,29 @@ public partial class Plugins : MSGComponentBase : this.T("Enable plugin"); } + private static bool CanEditAssistantPlugin(IAvailablePlugin plugin) => plugin is { IsInternal: false, Type: PluginType.ASSISTANT } && !string.IsNullOrWhiteSpace(plugin.LocalPath); + private static bool CanDeleteAssistantPlugin(IAvailablePlugin plugin) => plugin is { IsInternal: false, Type: PluginType.ASSISTANT } && !string.IsNullOrWhiteSpace(plugin.LocalPath); + private async Task OpenAssistantPluginEditorDialogAsync(IAvailablePlugin plugin) + { + var parameters = new DialogParameters + { + { x => x.PluginId, plugin.Id }, + { x => x.PluginLocalPath, plugin.LocalPath }, + }; + + var dialogReference = await this.DialogService.ShowAsync(this.T("Edit Assistant Plugin"), parameters, DialogOptions.BLOCKING_FULLSCREEN); + var dialogResult = await dialogReference.Result; + if (dialogResult is null || dialogResult.Canceled || dialogResult.Data is not AssistantPluginEditorDialogResult result) + return; + + await this.MessageBus.SendSuccess(new(Icons.Material.Filled.Save, string.Format(this.T("The assistant plugin '{0}' has been successfully saved."), result.PluginName))); + LOG.LogInformation($"The assistant plugin '{result.PluginName}' ({result.PluginId}) has been successfully updated."); + await this.MessageBus.SendMessage(this, Event.PLUGINS_RELOADED); + await this.InvokeAsync(this.StateHasChanged); + } + private async Task DeleteAssistantPluginAsync(IAvailablePlugin plugin) { var dialogParameters = new DialogParameters