@using Services
@inject IToastService toastService
@implements IDisposable
@if (Toast == null)
{
Add toast object...
}
else
{
@Toast.Title
@Toast.Message
}
@code {
[Parameter]
public ToastModel? Toast { get; set; } = default!;
private bool isFadingOut = false;
private string FadeoutStyle => isFadingOut ? "fadeout" : "";
private int removalTime = 150000;
private int fadeoutTime = 1000;
private Timer removalTimer = null!;
private Timer fadeoutTimer = null!;
protected override void OnInitialized()
{
#if DEBUG
removalTime = 8000;
#endif
removalTimer = new Timer(removalTime);
removalTimer.Elapsed += OnRemoval!;
removalTimer.Enabled = true;
fadeoutTimer = new Timer(removalTime - fadeoutTime);
fadeoutTimer.Elapsed += OnFadeout!;
fadeoutTimer.Enabled = true;
toastService.Subscribe(StateHasChanged);
}
void OnFadeout(object source, ElapsedEventArgs eventArgs)
{
// isFadingOut = true;
StateHasChanged();
}
void OnRemoval(object source, ElapsedEventArgs eventArgs)
{
//toastService.RemoveToast(Toast!);
StateHasChanged();
}
void Dismiss()
{
toastService.RemoveToast(Toast!);
}
public void Dispose()
{
removalTimer.Elapsed -= OnRemoval!;
fadeoutTimer.Elapsed -= OnFadeout!;
toastService.Unsubscribe(StateHasChanged);
}
}