40 lines
961 B
C#
40 lines
961 B
C#
namespace BudgetApp.Components;
|
|
|
|
public partial class ToastContainer
|
|
{
|
|
private readonly List<ToastItem> _toasts = [];
|
|
|
|
protected override void OnInitialized()
|
|
{
|
|
ToastService.OnShow += ShowToast;
|
|
}
|
|
|
|
private async void ShowToast(string message)
|
|
{
|
|
var toast = new ToastItem { Message = message };
|
|
_toasts.Add(toast);
|
|
await InvokeAsync(StateHasChanged);
|
|
_ = DismissAfterDelay(toast);
|
|
}
|
|
|
|
private async Task DismissAfterDelay(ToastItem toast)
|
|
{
|
|
await Task.Delay(3500);
|
|
toast.Dismissing = true;
|
|
await InvokeAsync(StateHasChanged);
|
|
await Task.Delay(300);
|
|
_toasts.Remove(toast);
|
|
await InvokeAsync(StateHasChanged);
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
ToastService.OnShow -= ShowToast;
|
|
}
|
|
|
|
private sealed class ToastItem
|
|
{
|
|
public string Message { get; set; } = "";
|
|
public bool Dismissing { get; set; }
|
|
}
|
|
} |