diff --git a/OneShelf.Frontend/OneShelf.Frontend.Web/Pages/User.razor b/OneShelf.Frontend/OneShelf.Frontend.Web/Pages/User.razor
index 1f645531..85d410c5 100644
--- a/OneShelf.Frontend/OneShelf.Frontend.Web/Pages/User.razor
+++ b/OneShelf.Frontend/OneShelf.Frontend.Web/Pages/User.razor
@@ -1,6 +1,8 @@
@page "/user"
+@using SpawnDev.BlazorJS
@inject IdentityProvider IdentityProvider
@inject NavigationManager NavigationManager
+@inject BlazorJSRuntime BlazorJsRuntime
Профиль
@@ -8,18 +10,44 @@
@if (!Unauthorized)
{
-
Не знаю, зачем нужна эта страница, обычно она везде есть. Вы можете присоединяться к клубам, напишите админам. Можно выйти (ваш шортлист будет с вами при следующем входе):
+ Вы можете присоединяться к клубам, напишите админам.
}
-Выйти
+@if (IdentityProvider.Identity != null)
+{
+ Выйти
+}
+else
+{
+ Вам бы войти бы:
+ IdentityProvider.EnsureAuthorized()">Войти
+}
@if (Unauthorized)
{
- Может быть, вы видите это сообщение по ошибке. Если вам кажется, что доступ должен быть, тем более, напишите, пожалуйста. Спасибо.
+ Может быть, вы видите это сообщение по ошибке. Если вам кажется, что доступ должен быть, тем более, напишите, пожалуйста. Спасибо.
}
+Совместимость
+Это для случаев если приложение не загружается с первого раза. Не включайте режим совместимости, если всё работает.
+
+
+
+ Совместимость сейчас
+
+
+
+
+
+ Совместимость всегда
+ @(_forceCompatMode ? "Выключить" : "Включить")
+
+
+
@code {
private string? _title;
+ private bool _isCompatMode;
+ private bool _forceCompatMode;
[Parameter]
[SupplyParameterFromQuery]
@@ -29,9 +57,10 @@
{
await base.OnInitializedAsync();
- if (!IdentityProvider.EnsureAuthorized()) return;
+ _title = IdentityProvider.Identity?.Title;
- _title = IdentityProvider.RequiredIdentity.Title;
+ _isCompatMode = BlazorJsRuntime.WindowThis!.JSRef!.Get("useCompatMode");
+ _forceCompatMode = BlazorJsRuntime.WindowThis.LocalStorage.GetItem("forceCompatMode") == "1";
}
protected override async Task OnParametersSetAsync()
@@ -45,4 +74,18 @@
NavigationManager.NavigateTo("/");
}
+ private void SwitchForceCompatMode()
+ {
+ if (_forceCompatMode)
+ {
+ BlazorJsRuntime.WindowThis!.LocalStorage.RemoveItem("forceCompatMode");
+ }
+ else
+ {
+ BlazorJsRuntime.WindowThis!.LocalStorage.SetItem("forceCompatMode", "1");
+ }
+
+ BlazorJsRuntime.WindowThis!.Location.Reload();
+ }
+
}
diff --git a/OneShelf.Frontend/OneShelf.Frontend.Web/Services/JsFunctions.cs b/OneShelf.Frontend/OneShelf.Frontend.Web/Services/JsFunctions.cs
index 0a9f6bc2..f532044d 100644
--- a/OneShelf.Frontend/OneShelf.Frontend.Web/Services/JsFunctions.cs
+++ b/OneShelf.Frontend/OneShelf.Frontend.Web/Services/JsFunctions.cs
@@ -30,4 +30,10 @@ public async Task ScrollToTop()
var module = await _jsRuntime.InvokeAsync("import", $"./services-js/{GetType().Name}.js");
await module.InvokeVoidAsync("ScrollToTop");
}
+
+ public async Task FirstInitSuccessful()
+ {
+ var module = await _jsRuntime.InvokeAsync("import", $"./services-js/{GetType().Name}.js");
+ await module.InvokeVoidAsync("FirstInitSuccessful");
+ }
}
\ No newline at end of file
diff --git a/OneShelf.Frontend/OneShelf.Frontend.Web/Shared/MainLayout.razor b/OneShelf.Frontend/OneShelf.Frontend.Web/Shared/MainLayout.razor
index c09c9a9b..37f6f5ef 100644
--- a/OneShelf.Frontend/OneShelf.Frontend.Web/Shared/MainLayout.razor
+++ b/OneShelf.Frontend/OneShelf.Frontend.Web/Shared/MainLayout.razor
@@ -1,6 +1,7 @@
@using OneShelf.Frontend.Web.Components
@inherits LayoutComponentBase
@inject IJSRuntime Js
+@inject JsFunctions JsFunctions
@@ -87,6 +88,7 @@
if (firstRender)
{
await module.InvokeVoidAsync("MainLayoutRendered");
+ await JsFunctions.FirstInitSuccessful();
}
await module.InvokeVoidAsync("InitSecondToTop");
diff --git a/OneShelf.Frontend/OneShelf.Frontend.Web/wwwroot/css/app.scss b/OneShelf.Frontend/OneShelf.Frontend.Web/wwwroot/css/app.scss
index c68e5e9c..03542a6c 100644
--- a/OneShelf.Frontend/OneShelf.Frontend.Web/wwwroot/css/app.scss
+++ b/OneShelf.Frontend/OneShelf.Frontend.Web/wwwroot/css/app.scss
@@ -91,6 +91,11 @@
}
+#error-info {
+ color: darkgreen;
+}
+
+
#my-preview div.chords-block {
span.chords-double-line {
line-height: 42px;
diff --git a/OneShelf.Frontend/OneShelf.Frontend.Web/wwwroot/index.html b/OneShelf.Frontend/OneShelf.Frontend.Web/wwwroot/index.html
index 5b6de140..8e21b4ed 100644
--- a/OneShelf.Frontend/OneShelf.Frontend.Web/wwwroot/index.html
+++ b/OneShelf.Frontend/OneShelf.Frontend.Web/wwwroot/index.html
@@ -148,7 +148,12 @@
Случилась ошибка.
+
Обновить
+
+ |
+ попробовать совместимость
+
🗙
@@ -170,7 +175,7 @@
(async () => {
var url = new URL(location.href);
let verboseStart = url.searchParams.get('verboseStart') === '1';
- var forceCompatMode = url.searchParams.get('forceCompatMode') === '1';
+ var forceCompatMode = url.searchParams.get('forceCompatMode') === '1' || localStorage.getItem('forceCompatMode') === '1';
var supportsSimd = await wasmFeatureDetect.simd();
if (verboseStart) console.log('supportsSimd', supportsSimd);
// compat mode build could be built without wasm exception support if needed and detected here
@@ -181,6 +186,9 @@
if (verboseStart) console.log('forceCompatMode', forceCompatMode);
useCompatMode = true;
}
+
+ window.useCompatMode = useCompatMode;
+
if (verboseStart) console.log('useCompatMode', useCompatMode);
// Blazor United (.Net 8 Blazor Web App) Blazor.start settings are slightly different than Blazor WebAssembly (Blazor WebAssembly Standalone App)
var getRuntimeType = function () {
@@ -211,6 +219,17 @@
}
})();
+
+