AI-Studio/app/MindWork AI Studio/Dialogs/ReviewAttachmentsDialog.razor.cs

49 lines
1.6 KiB
C#
Raw Normal View History

2025-12-28 15:50:36 +00:00
using AIStudio.Chat;
using AIStudio.Components;
2025-12-18 16:40:18 +00:00
using AIStudio.Tools.PluginSystem;
using Microsoft.AspNetCore.Components;
namespace AIStudio.Dialogs;
public partial class ReviewAttachmentsDialog : MSGComponentBase
{
2025-12-18 16:40:18 +00:00
private static string TB(string fallbackEN) => I18N.I.T(fallbackEN, typeof(ReviewAttachmentsDialog).Namespace, nameof(ReviewAttachmentsDialog));
[CascadingParameter]
private IMudDialogInstance MudDialog { get; set; } = null!;
[Parameter]
2025-12-28 15:50:36 +00:00
public HashSet<FileAttachment> DocumentPaths { get; set; } = new();
[Inject]
private IDialogService DialogService { get; set; } = null!;
2025-12-28 15:50:36 +00:00
private void Close() => this.MudDialog.Close(DialogResult.Ok(this.DocumentPaths));
2025-12-28 15:50:36 +00:00
public static async Task<HashSet<FileAttachment>> OpenDialogAsync(IDialogService dialogService, params HashSet<FileAttachment> documentPaths)
{
var dialogParameters = new DialogParameters<ReviewAttachmentsDialog>
{
2025-12-28 15:50:36 +00:00
{ x => x.DocumentPaths, documentPaths }
};
2025-12-28 15:50:36 +00:00
2025-12-18 16:40:18 +00:00
var dialogReference = await dialogService.ShowAsync<ReviewAttachmentsDialog>(TB("Your attached files"), dialogParameters, DialogOptions.FULLSCREEN);
var dialogResult = await dialogReference.Result;
if (dialogResult is null || dialogResult.Canceled)
return documentPaths;
if (dialogResult.Data is null)
return documentPaths;
2025-12-28 15:50:36 +00:00
return dialogResult.Data as HashSet<FileAttachment> ?? documentPaths;
}
2025-12-28 15:50:36 +00:00
private void DeleteAttachment(FileAttachment fileAttachment)
{
2025-12-28 15:50:36 +00:00
if (this.DocumentPaths.Remove(fileAttachment))
{
this.StateHasChanged();
}
}
}