-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathConnectivityOverlay.razor
More file actions
60 lines (53 loc) · 2.33 KB
/
ConnectivityOverlay.razor
File metadata and controls
60 lines (53 loc) · 2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
@implements IDisposable
@namespace PrompterOne.Shared.Components.Diagnostics
@using Microsoft.Extensions.Localization
@using PrompterOne.Shared.Localization
@inject NavigationManager Navigation
@inject PrompterOne.Shared.Services.Diagnostics.BrowserConnectivityService Connectivity
@inject IStringLocalizer<SharedResource> Localizer
@if (Connectivity.IsVisible)
{
<section id="@UiDomIds.Diagnostics.ConnectivityUi"
class="app-shell-overlay app-shell-overlay-status"
role="status"
aria-live="assertive"
data-state="@Connectivity.State"
data-testid="@UiTestIds.Diagnostics.Connectivity">
<div class="app-shell-card app-shell-card-status">
<span class="app-shell-eyebrow">@Text(UiTextKey.DiagnosticsConnectivityEyebrow)</span>
<h2 id="@UiDomIds.Diagnostics.ConnectivityTitle">@Connectivity.Title</h2>
<p id="@UiDomIds.Diagnostics.ConnectivityMessage">@Connectivity.Message</p>
<div class="app-shell-actions">
<button type="button"
id="@UiDomIds.Diagnostics.ConnectivityRetry"
class="app-shell-btn app-shell-btn-primary"
@onclick="HandleRetry"
data-testid="@UiTestIds.Diagnostics.ConnectivityRetry">@Text(UiTextKey.DiagnosticsConnectivityRetryNow)</button>
<button type="button"
id="@UiDomIds.Diagnostics.ConnectivityDismiss"
class="app-shell-btn"
@onclick="HandleDismiss"
data-testid="@UiTestIds.Diagnostics.ConnectivityDismiss">@Text(UiTextKey.DiagnosticsDismiss)</button>
</div>
</div>
</section>
}
@code {
protected override void OnInitialized()
{
Connectivity.Changed += HandleConnectivityChanged;
}
private void HandleDismiss() => Connectivity.Dismiss();
private void HandleRetry()
{
Connectivity.Dismiss();
Navigation.NavigateTo(Navigation.Uri, forceLoad: true);
}
private void HandleConnectivityChanged(object? sender, EventArgs args) =>
InvokeAsync(StateHasChanged);
private string Text(UiTextKey key) => Localizer[key.ToString()];
public void Dispose()
{
Connectivity.Changed -= HandleConnectivityChanged;
}
}