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 +{ +

Вам бы войти бы:

+ +} @if (Unauthorized) { -
Может быть, вы видите это сообщение по ошибке. Если вам кажется, что доступ должен быть, тем более, напишите, пожалуйста. Спасибо.
+
Может быть, вы видите это сообщение по ошибке. Если вам кажется, что доступ должен быть, тем более, напишите, пожалуйста. Спасибо.
} +

Совместимость

+
Это для случаев если приложение не загружается с первого раза. Не включайте режим совместимости, если всё работает.
+
+ +
+
+ +
+ @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