Refactor interaction and user deletion logic
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.
This commit is contained in:
63
FoodsharingSiegen.Server/Dialogs/ConfirmDialog.razor.cs
Normal file
63
FoodsharingSiegen.Server/Dialogs/ConfirmDialog.razor.cs
Normal file
@@ -0,0 +1,63 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user