Files
Budgeteer/BudgetApp/Components/ToastContainer.razor.cs
T
2026-03-06 11:05:01 +00:00

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; }
}
}