using AIStudio.Components;
using AIStudio.Tools.PluginSystem;
using AIStudio.Tools.Services;
using Microsoft.AspNetCore.Components;
namespace AIStudio.Dialogs;
///
/// Asks the user whether a plugin archive may be installed. It shows the metadata the archive
/// declares about itself, so the user can judge the plugin before its code runs.
///
public partial class PluginImportDialog : MSGComponentBase
{
[CascadingParameter]
private IMudDialogInstance MudDialog { get; set; } = null!;
///
/// The metadata of the plugin archive about to be installed.
///
[Parameter]
public PluginImportPreview Preview { get; set; } = null!;
///
/// Names the kind of plugin the user is about to install. Each plugin type gets its own
/// sentence instead of a placeholder because articles and word order differ between languages.
///
private string IntroductionText => this.Preview.Plugin.Type switch
{
PluginType.LANGUAGE => this.T("You are about to install a language plugin from a file."),
PluginType.ASSISTANT => this.T("You are about to install an assistant plugin from a file."),
PluginType.CONFIGURATION => this.T("You are about to install a configuration plugin from a file."),
PluginType.THEME => this.T("You are about to install a theme plugin from a file."),
_ => this.T("You are about to install a plugin from a file."),
};
private string TypeLabel => this.Preview.Plugin.Type.GetName();
private string AuthorsLabel => this.Preview.Plugin.Authors.Length > 0
? string.Join(", ", this.Preview.Plugin.Authors)
: this.T("Unknown");
private void Cancel() => this.MudDialog.Cancel();
private void Confirm() => this.MudDialog.Close(DialogResult.Ok(true));
}