You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.1 KiB
60 lines
1.1 KiB
@implements IDisposable; |
|
|
|
@inject IToastService toastService |
|
|
|
@if (toastService.HasToasts()) |
|
{ |
|
<div class="toastsContainer"> |
|
@foreach(var toast in Toasts) |
|
{ |
|
|
|
<ToastComponent Toast="toast"/> |
|
} |
|
</div> |
|
} |
|
|
|
<style> |
|
.toastsContainer { |
|
position: fixed; |
|
top: 64px; |
|
right: 64px; |
|
display: flex; |
|
flex-direction: column; |
|
gap: 5px; |
|
} |
|
</style> |
|
|
|
|
|
@code { |
|
private List<ToastModel> Toasts => toastService.GetToasts(); |
|
|
|
private Timer ageTimer = null!; |
|
|
|
protected override void OnInitialized() |
|
{ |
|
toastService.Subscribe(OnUpdate); |
|
|
|
ageTimer = new Timer(10); |
|
ageTimer.Elapsed += OnAge!; |
|
ageTimer.Enabled = true; |
|
|
|
} |
|
|
|
public void Dispose() |
|
{ |
|
toastService.Unsubscribe(OnUpdate); |
|
} |
|
|
|
|
|
void OnAge(object? sender, ElapsedEventArgs elapsedEventArgs) |
|
{ |
|
toastService.AgeToasts(); |
|
ageTimer.Enabled = true; |
|
} |
|
|
|
|
|
void OnUpdate() |
|
{ |
|
StateHasChanged(); |
|
} |
|
} |