Loading...
-
-
- An unhandled error has occurred.
-
Reload
-
🗙
+
-
-
-
-
-
-
-
-
-
+
+ An unhandled error has occurred.
+
Reload
+
🗙
+
+
+
+
+
+
diff --git a/SteUp.Shared/Components/Layout/MainLayout.razor b/SteUp.Shared/Components/Layout/MainLayout.razor
index 3da63fd..76ab0c2 100644
--- a/SteUp.Shared/Components/Layout/MainLayout.razor
+++ b/SteUp.Shared/Components/Layout/MainLayout.razor
@@ -1,16 +1,170 @@
-@inherits LayoutComponentBase
+@using System.Globalization
+@using SteUp.Shared.Core.Interface.IntegryApi
+@using SteUp.Shared.Core.Interface.System.Network
+@inherits LayoutComponentBase
+@inject INetworkService NetworkService
+@inject IIntegryApiService IntegryApiService
+
+
+
+
+
-
\ No newline at end of file
+@code {
+ private MudThemeProvider _mudThemeProvider = null!;
+ private bool IsDarkMode { get; set; }
+ private string _mainContentClass = "";
+
+ //Connection state
+ private bool _isNetworkAvailable;
+ private bool _servicesIsDown;
+ private bool _showWarning;
+
+ private DateTime _lastApiCheck = DateTime.MinValue;
+ private const int DelaySeconds = 90;
+
+ private CancellationTokenSource? _cts;
+
+ private bool ServicesIsDown
+ {
+ get => _servicesIsDown;
+ set
+ {
+ if (_servicesIsDown == value) return;
+ _servicesIsDown = value;
+ StateHasChanged();
+ }
+ }
+
+ private bool IsNetworkAvailable
+ {
+ get => _isNetworkAvailable;
+ set
+ {
+ if (_isNetworkAvailable == value) return;
+ _isNetworkAvailable = value;
+ StateHasChanged();
+ }
+ }
+
+ private bool ShowWarning
+ {
+ get => _showWarning;
+ set
+ {
+ if (_showWarning == value) return;
+ _showWarning = value;
+ StateHasChanged();
+ }
+ }
+
+ private readonly MudTheme _currentTheme = new()
+ {
+ PaletteLight = new PaletteLight()
+ {
+ Primary = "#ec4c41",
+ Secondary = "#002339",
+ Tertiary = "#dff2ff",
+ TextPrimary = "#000"
+ },
+ PaletteDark = new PaletteDark
+ {
+ Primary = "#ec4c41",
+ Secondary = "#002339",
+ Tertiary = "#dff2ff",
+ Surface = "#000406",
+ Background = "#000406",
+ TextPrimary = "#fff",
+ GrayDark = "#E0E0E0"
+ }
+ };
+
+ protected override async Task OnAfterRenderAsync(bool firstRender)
+ {
+ // if (firstRender)
+ // {
+ // var isDarkMode = LocalStorage.GetString("isDarkMode");
+
+ // if (isDarkMode == null && _mudThemeProvider != null)
+ // {
+ // IsDarkMode = await _mudThemeProvider.GetSystemPreference();
+ // await _mudThemeProvider.WatchSystemPreference(OnSystemPreferenceChanged);
+ // LocalStorage.SetString("isDarkMode", IsDarkMode.ToString());
+ // StateHasChanged();
+ // }
+ // else
+ // {
+ // IsDarkMode = bool.Parse(isDarkMode!);
+ // }
+
+ // if (IsDarkMode)
+ // {
+ // _mainContentClass += "is-dark";
+ // StateHasChanged();
+ // }
+ // }
+ }
+
+ private async Task OnSystemPreferenceChanged(bool newValue)
+ {
+ IsDarkMode = newValue;
+ }
+
+ protected override void OnInitialized()
+ {
+ _cts = new CancellationTokenSource();
+ _ = CheckConnectionState(_cts.Token);
+
+ var culture = new CultureInfo("it-IT", false);
+
+ CultureInfo.CurrentCulture = culture;
+ CultureInfo.CurrentUICulture = culture;
+ }
+
+ private Task CheckConnectionState(CancellationToken token)
+ {
+ return Task.Run(async () =>
+ {
+ while (!token.IsCancellationRequested)
+ {
+ var isNetworkAvailable = NetworkService.IsNetworkAvailable();
+ var servicesDown = ServicesIsDown;
+
+ if (isNetworkAvailable && (DateTime.UtcNow - _lastApiCheck).TotalSeconds >= DelaySeconds)
+ {
+ servicesDown = !await IntegryApiService.SystemOk();
+ _lastApiCheck = DateTime.UtcNow;
+ }
+
+ await InvokeAsync(async () =>
+ {
+ IsNetworkAvailable = isNetworkAvailable;
+ ServicesIsDown = servicesDown;
+
+ await Task.Delay(1500, token);
+ ShowWarning = !(IsNetworkAvailable && !ServicesIsDown);
+ NetworkService.ConnectionAvailable = !ShowWarning;
+ });
+
+ await Task.Delay(500, token);
+ }
+ }, token);
+ }
+
+ public void Dispose()
+ {
+ _cts?.Cancel();
+ _cts?.Dispose();
+ }
+
+}
\ No newline at end of file
diff --git a/SteUp.Shared/Components/Layout/MainLayout.razor.css b/SteUp.Shared/Components/Layout/MainLayout.razor.css
index 8521145..b179f89 100644
--- a/SteUp.Shared/Components/Layout/MainLayout.razor.css
+++ b/SteUp.Shared/Components/Layout/MainLayout.razor.css
@@ -21,29 +21,29 @@ main {
align-items: center;
}
- .top-row ::deep a, .top-row ::deep .btn-link {
- white-space: nowrap;
- margin-left: 1.5rem;
- text-decoration: none;
- }
+.top-row ::deep a, .top-row ::deep .btn-link {
+ white-space: nowrap;
+ margin-left: 1.5rem;
+ text-decoration: none;
+}
- .top-row ::deep a:hover, .top-row ::deep .btn-link:hover {
- text-decoration: underline;
- }
+.top-row ::deep a:hover, .top-row ::deep .btn-link:hover {
+ text-decoration: underline;
+}
- .top-row ::deep a:first-child {
- overflow: hidden;
- text-overflow: ellipsis;
- }
+.top-row ::deep a:first-child {
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
@media (max-width: 640.98px) {
.top-row {
justify-content: space-between;
}
- .top-row ::deep a, .top-row ::deep .btn-link {
- margin-left: 0;
- }
+ .top-row ::deep a, .top-row ::deep .btn-link {
+ margin-left: 0;
+ }
}
@media (min-width: 641px) {
@@ -64,14 +64,14 @@ main {
z-index: 1;
}
- .top-row.auth ::deep a:first-child {
- flex: 1;
- text-align: right;
- width: 0;
- }
+ .top-row.auth ::deep a:first-child {
+ flex: 1;
+ text-align: right;
+ width: 0;
+ }
.top-row, article {
padding-left: 2rem !important;
padding-right: 1.5rem !important;
}
-}
+}
\ No newline at end of file
diff --git a/SteUp.Shared/Components/Layout/NavBar.razor b/SteUp.Shared/Components/Layout/NavBar.razor
deleted file mode 100644
index a9c1b7b..0000000
--- a/SteUp.Shared/Components/Layout/NavBar.razor
+++ /dev/null
@@ -1,40 +0,0 @@
-