Consolidated repeated methods for interaction/user deletion into reusable components to improve maintainability. Introduced a `ConfirmDialog` for consistent confirmation UI and streamlined associated logic across pages. Removed redundant methods and enhanced admin-specific page security checks.
63 lines
2.0 KiB
C#
63 lines
2.0 KiB
C#
using Blazorise;
|
|
using FoodsharingSiegen.Server.BaseClasses;
|
|
using Microsoft.AspNetCore.Components;
|
|
|
|
namespace FoodsharingSiegen.Server.Dialogs
|
|
{
|
|
public partial class ConfirmDialog : FsBase
|
|
{
|
|
#region Parameters
|
|
|
|
[Parameter]
|
|
public Func<Task>? OnConfirm { get; set; }
|
|
|
|
[Parameter]
|
|
public string? Message { get; set; }
|
|
|
|
#endregion
|
|
|
|
#region Public Method ShowAsync
|
|
|
|
/// <summary>
|
|
/// Displays the confirm dialog with the specified title, message, and confirmation action.
|
|
/// </summary>
|
|
/// <param name="modalService">The modal service used to display the dialog.</param>
|
|
/// <param name="title">The title of the confirmation dialog. Defaults to "Bestätigen" if null.</param>
|
|
/// <param name="message">The message displayed in the confirmation dialog.</param>
|
|
/// <param name="onConfirm">The action to invoke when the user confirms.</param>
|
|
/// <returns>A task that represents the asynchronous operation of displaying the dialog.</returns>
|
|
public static async Task ShowAsync(IModalService modalService, string? title, string? message, Func<Task> onConfirm)
|
|
{
|
|
title ??= "Bestätigen";
|
|
|
|
var x = new Action<ModalProviderParameterBuilder<ConfirmDialog>>(b =>
|
|
{
|
|
b.Add(nameof(OnConfirm), onConfirm);
|
|
b.Add(nameof(Message), message);
|
|
});
|
|
|
|
var options = new ModalInstanceOptions
|
|
{
|
|
Size = ModalSize.Small
|
|
};
|
|
|
|
await modalService.Show(title, x, options);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Private Method ConfirmClickAsync
|
|
|
|
/// <summary>
|
|
/// Invokes the confirmation action if it is set.
|
|
/// </summary>
|
|
/// <returns>A task that represents the asynchronous operation.</returns>
|
|
private async Task ConfirmClickAsync()
|
|
{
|
|
if (OnConfirm != null) await OnConfirm.Invoke();
|
|
await ModalService.Hide();
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
} |