wired the editor dialog to an action button on the plugin overview page

This commit is contained in:
krut_ni 2026-07-08 22:12:16 +02:00
parent caf5eb19a0
commit c104f9144c
No known key found for this signature in database
GPG Key ID: A5C0151B4DDB172C
2 changed files with 28 additions and 0 deletions

View File

@ -97,6 +97,13 @@
}
}
@if (context is IAvailablePlugin editablePlugin && CanEditAssistantPlugin(editablePlugin))
{
<MudTooltip Text="@T("Edit assistant plugin")">
<MudIconButton Icon="@Icons.Material.Filled.EditNote" Size="Size.Medium" OnClick="@(() => this.OpenAssistantPluginEditorDialogAsync(editablePlugin))"/>
</MudTooltip>
}
@if (context is IAvailablePlugin availablePlugin && CanDeleteAssistantPlugin(availablePlugin))
{
<MudTooltip Text="@T("Delete assistant plugin")">

View File

@ -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<AssistantPluginEditorDialog>
{
{ x => x.PluginId, plugin.Id },
{ x => x.PluginLocalPath, plugin.LocalPath },
};
var dialogReference = await this.DialogService.ShowAsync<AssistantPluginEditorDialog>(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<bool>(this, Event.PLUGINS_RELOADED);
await this.InvokeAsync(this.StateHasChanged);
}
private async Task DeleteAssistantPluginAsync(IAvailablePlugin plugin)
{
var dialogParameters = new DialogParameters<ConfirmDialog>