From e6270013ffae1ed94739a8c7ec1a024834a6e6ed Mon Sep 17 00:00:00 2001 From: shiibe <82057235+shiibe@users.noreply.github.com> Date: Sat, 9 Mar 2024 11:59:21 -0500 Subject: [PATCH 1/9] Adjust breadcrumbs, login redirects --- TaikoWebUI/Pages/AccessCode.razor.cs | 25 ++++++++++++++-------- TaikoWebUI/Pages/Components/UserCard.razor | 14 ++++++++---- TaikoWebUI/Pages/DaniDojo.razor.cs | 13 +++++++---- TaikoWebUI/Pages/HighScores.razor.cs | 14 +++++++----- TaikoWebUI/Pages/Profile.razor.cs | 19 ++++++++-------- TaikoWebUI/Pages/Register.razor.cs | 6 +++--- TaikoWebUI/Pages/Users.razor | 8 +++---- TaikoWebUI/wwwroot/appsettings.json | 2 +- 8 files changed, 61 insertions(+), 40 deletions(-) diff --git a/TaikoWebUI/Pages/AccessCode.razor.cs b/TaikoWebUI/Pages/AccessCode.razor.cs index 1002263..a6ca7ba 100644 --- a/TaikoWebUI/Pages/AccessCode.razor.cs +++ b/TaikoWebUI/Pages/AccessCode.razor.cs @@ -1,6 +1,4 @@ -using Microsoft.AspNetCore.Http; -using System.Linq; -using TaikoWebUI.Pages.Dialogs; +using TaikoWebUI.Pages.Dialogs; namespace TaikoWebUI.Pages; @@ -15,18 +13,27 @@ public partial class AccessCode private User? User { get; set; } = new(); private DashboardResponse? response; + private UserSetting? userSetting; - private readonly List breadcrumbs = new() - { - new BreadcrumbItem("Users", href: "/Users"), - }; + private readonly List breadcrumbs = new(); protected override async Task OnInitializedAsync() { await base.OnInitializedAsync(); await InitializeUser(); - breadcrumbs.Add(new BreadcrumbItem($"User: {Baid}", href: null, disabled: true)); - breadcrumbs.Add(new BreadcrumbItem("Access Code Management", href: $"/Users/{Baid}/AccessCode", disabled: false)); + + userSetting = await Client.GetFromJsonAsync($"api/UserSettings/{Baid}"); + + if (LoginService.IsLoggedIn && !LoginService.IsAdmin) + { + breadcrumbs.Add(new BreadcrumbItem("Dashboard", href: "/")); + } + else + { + breadcrumbs.Add(new BreadcrumbItem("Users", href: "/Users")); + }; + breadcrumbs.Add(new BreadcrumbItem($"{userSetting?.MyDonName}", href: null, disabled: true)); + breadcrumbs.Add(new BreadcrumbItem("Access Codes", href: $"/Users/{Baid}/AccessCode", disabled: false)); } private async Task InitializeUser() diff --git a/TaikoWebUI/Pages/Components/UserCard.razor b/TaikoWebUI/Pages/Components/UserCard.razor index b5c8802..78fb9c5 100644 --- a/TaikoWebUI/Pages/Components/UserCard.razor +++ b/TaikoWebUI/Pages/Components/UserCard.razor @@ -11,8 +11,14 @@ -
- @userSetting?.MyDonName +
+ @if (userSetting is not null) + { + @userSetting?.MyDonName + } else + { + + } @if (user?.IsAdmin == true) { @Localizer["Admin"] @@ -47,11 +53,11 @@ } @if (LoginService.LoginRequired && LoginService.IsAdmin) { - - @Localizer["Reset Password"] + @Localizer["Unregister"] } diff --git a/TaikoWebUI/Pages/DaniDojo.razor.cs b/TaikoWebUI/Pages/DaniDojo.razor.cs index 953c1d5..447f692 100644 --- a/TaikoWebUI/Pages/DaniDojo.razor.cs +++ b/TaikoWebUI/Pages/DaniDojo.razor.cs @@ -14,10 +14,7 @@ public partial class DaniDojo private static Dictionary bestDataMap = new(); - private readonly List breadcrumbs = new() - { - new BreadcrumbItem("Users", href: "/Users"), - }; + private readonly List breadcrumbs = new(); protected override async Task OnInitializedAsync() { @@ -33,6 +30,14 @@ public partial class DaniDojo userSetting = await Client.GetFromJsonAsync($"api/UserSettings/{Baid}"); + if (LoginService.IsLoggedIn && !LoginService.IsAdmin) + { + breadcrumbs.Add(new BreadcrumbItem("Dashboard", href: "/")); + } + else + { + breadcrumbs.Add(new BreadcrumbItem("Users", href: "/Users")); + }; breadcrumbs.Add(new BreadcrumbItem($"{userSetting?.MyDonName}", href: null, disabled: true)); breadcrumbs.Add(new BreadcrumbItem("Dani Dojo", href: $"/Users/{Baid}/DaniDojo", disabled: false)); } diff --git a/TaikoWebUI/Pages/HighScores.razor.cs b/TaikoWebUI/Pages/HighScores.razor.cs index bd605a8..345e2a7 100644 --- a/TaikoWebUI/Pages/HighScores.razor.cs +++ b/TaikoWebUI/Pages/HighScores.razor.cs @@ -16,10 +16,7 @@ public partial class HighScores private Dictionary> songBestDataMap = new(); - private readonly List breadcrumbs = new() - { - new BreadcrumbItem("Users", href: "/Users"), - }; + private readonly List breadcrumbs = new(); protected override async Task OnInitializedAsync() { @@ -48,7 +45,14 @@ public partial class HighScores .CompareTo(GameDataService.GetMusicIndexBySongId(data2.SongId))); } - + if (LoginService.IsLoggedIn && !LoginService.IsAdmin) + { + breadcrumbs.Add(new BreadcrumbItem("Dashboard", href: "/")); + } + else + { + breadcrumbs.Add(new BreadcrumbItem("Users", href: "/Users")); + }; breadcrumbs.Add(new BreadcrumbItem($"{userSetting?.MyDonName}", href: null, disabled: true)); breadcrumbs.Add(new BreadcrumbItem("High Scores", href: $"/Users/{Baid}/HighScores", disabled: false)); } diff --git a/TaikoWebUI/Pages/Profile.razor.cs b/TaikoWebUI/Pages/Profile.razor.cs index 9a7f479..032154d 100644 --- a/TaikoWebUI/Pages/Profile.razor.cs +++ b/TaikoWebUI/Pages/Profile.razor.cs @@ -1,8 +1,4 @@ -using Microsoft.AspNetCore.Http; -using SharedProject.Enums; -using System.Linq; -using TaikoWebUI.Pages.Dialogs; -using static MudBlazor.CategoryTypes; +using TaikoWebUI.Pages.Dialogs; namespace TaikoWebUI.Pages; @@ -168,10 +164,7 @@ public partial class Profile "Not cleared", "Not Full Combo", "Not Donderful Combo" }; - private readonly List breadcrumbs = new() - { - new BreadcrumbItem("Users", href: "/Users"), - }; + private readonly List breadcrumbs = new(); private Dictionary> songBestDataMap = new(); @@ -194,6 +187,14 @@ public partial class Profile response = await Client.GetFromJsonAsync($"api/UserSettings/{Baid}"); response.ThrowIfNull(); + if (LoginService.IsLoggedIn && !LoginService.IsAdmin) + { + breadcrumbs.Add(new BreadcrumbItem("Dashboard", href: "/")); + } + else + { + breadcrumbs.Add(new BreadcrumbItem("Users", href: "/Users")); + }; breadcrumbs.Add(new BreadcrumbItem($"{response.MyDonName}", href: null, disabled: true)); breadcrumbs.Add(new BreadcrumbItem("Profile", href: $"/Users/{Baid}/Profile", disabled: false)); diff --git a/TaikoWebUI/Pages/Register.razor.cs b/TaikoWebUI/Pages/Register.razor.cs index 51d8a17..fca67c5 100644 --- a/TaikoWebUI/Pages/Register.razor.cs +++ b/TaikoWebUI/Pages/Register.razor.cs @@ -34,14 +34,14 @@ public partial class Register "Error", "Only admin can log in.", "Ok", null, null, options); - NavigationManager.NavigateTo("/Dashboard"); + NavigationManager.NavigateTo("/"); break; case 1: await DialogService.ShowMessageBox( "Success", "Access code registered successfully.", "Ok", null, null, options); - NavigationManager.NavigateTo("/Users"); + NavigationManager.NavigateTo("/Login"); break; case 2: await DialogService.ShowMessageBox( @@ -62,7 +62,7 @@ public partial class Register (MarkupString) "Access code is already registered, please use set password to login.", "Ok", null, null, options); - NavigationManager.NavigateTo("/Users"); + NavigationManager.NavigateTo("/Login"); break; case 5: await DialogService.ShowMessageBox( diff --git a/TaikoWebUI/Pages/Users.razor b/TaikoWebUI/Pages/Users.razor index 272b594..56a6c01 100644 --- a/TaikoWebUI/Pages/Users.razor +++ b/TaikoWebUI/Pages/Users.razor @@ -25,16 +25,14 @@ } else { + // Not admin, redirect @if (!LoginService.IsLoggedIn) // Not logged in, show login form { NavigationManager.NavigateTo("/Login"); } else { - var user = LoginService.GetLoggedInUser(); // Logged in, show only own user - - - + NavigationManager.NavigateTo("/"); } } } @@ -49,7 +47,7 @@ } else { // Loading... - @for (uint i = 0; i < 3; i++) + @for (uint i = 0; i < 6; i++) { diff --git a/TaikoWebUI/wwwroot/appsettings.json b/TaikoWebUI/wwwroot/appsettings.json index f0b1931..137faa4 100644 --- a/TaikoWebUI/wwwroot/appsettings.json +++ b/TaikoWebUI/wwwroot/appsettings.json @@ -1,6 +1,6 @@ { "WebUiSettings": { - "LoginRequired": "false", + "LoginRequired": "true", "OnlyAdmin": "false", "BoundAccessCodeUpperLimit": "3", "RegisterWithLastPlayTime": "false", From 6eb5d6e52b69c70b1ddf52fc15d178ea022e2a04 Mon Sep 17 00:00:00 2001 From: shiibe <82057235+shiibe@users.noreply.github.com> Date: Sat, 9 Mar 2024 11:59:56 -0500 Subject: [PATCH 2/9] Revert `LoginRequired` --- TaikoWebUI/wwwroot/appsettings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TaikoWebUI/wwwroot/appsettings.json b/TaikoWebUI/wwwroot/appsettings.json index 137faa4..f0b1931 100644 --- a/TaikoWebUI/wwwroot/appsettings.json +++ b/TaikoWebUI/wwwroot/appsettings.json @@ -1,6 +1,6 @@ { "WebUiSettings": { - "LoginRequired": "true", + "LoginRequired": "false", "OnlyAdmin": "false", "BoundAccessCodeUpperLimit": "3", "RegisterWithLastPlayTime": "false", From c54c80f3f2afbffcd309431eb9de9bd31bc1d803 Mon Sep 17 00:00:00 2001 From: shiibe <82057235+shiibe@users.noreply.github.com> Date: Sat, 9 Mar 2024 12:04:31 -0500 Subject: [PATCH 3/9] Adjust language menu --- TaikoWebUI/Shared/ChooseLanguage.razor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TaikoWebUI/Shared/ChooseLanguage.razor b/TaikoWebUI/Shared/ChooseLanguage.razor index 5c723eb..9b63b0e 100644 --- a/TaikoWebUI/Shared/ChooseLanguage.razor +++ b/TaikoWebUI/Shared/ChooseLanguage.razor @@ -5,7 +5,7 @@ @inject IJSRuntime JSRuntime @inject IOptions Settings - + @foreach (var culture in SupportedCultures) { @culture.Value From e0b3e3783e3ee293ac5b3e3434f0c03d53cb7058 Mon Sep 17 00:00:00 2001 From: shiibe <82057235+shiibe@users.noreply.github.com> Date: Sat, 9 Mar 2024 12:55:52 -0500 Subject: [PATCH 4/9] Update user name in breadcrumbs if it is changed --- TaikoWebUI/Pages/Profile.razor.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/TaikoWebUI/Pages/Profile.razor.cs b/TaikoWebUI/Pages/Profile.razor.cs index 032154d..60a49b4 100644 --- a/TaikoWebUI/Pages/Profile.razor.cs +++ b/TaikoWebUI/Pages/Profile.razor.cs @@ -244,6 +244,12 @@ public partial class Profile isSavingOptions = true; await Client.PostAsJsonAsync($"api/UserSettings/{Baid}", response); isSavingOptions = false; + + // Adjust breadcrumb if name is changed + if (response != null && response.MyDonName != null) + { + breadcrumbs[^2] = new BreadcrumbItem($"{response.MyDonName}", href: null, disabled: true); + } } private void UpdateScores(Difficulty difficulty) From d034a2218ded1ec2ad76506a7f2bd3647b3070ed Mon Sep 17 00:00:00 2001 From: shiibe <82057235+shiibe@users.noreply.github.com> Date: Sat, 9 Mar 2024 13:45:20 -0500 Subject: [PATCH 5/9] Login/Register clean up --- TaikoWebUI/Pages/Components/UserCard.razor | 3 +- TaikoWebUI/Pages/Login.razor | 71 ++++++++++------------ TaikoWebUI/Pages/Register.razor | 14 ++++- TaikoWebUI/Services/LoginService.cs | 6 ++ TaikoWebUI/Shared/NavMenu.razor | 2 +- 5 files changed, 53 insertions(+), 43 deletions(-) diff --git a/TaikoWebUI/Pages/Components/UserCard.razor b/TaikoWebUI/Pages/Components/UserCard.razor index 78fb9c5..daaff78 100644 --- a/TaikoWebUI/Pages/Components/UserCard.razor +++ b/TaikoWebUI/Pages/Components/UserCard.razor @@ -19,9 +19,10 @@ { } + @if (user?.IsAdmin == true) { - @Localizer["Admin"] + @Localizer["Admin"] }
User ID: @user?.Baid diff --git a/TaikoWebUI/Pages/Login.razor b/TaikoWebUI/Pages/Login.razor index 5d05855..8ce15b7 100644 --- a/TaikoWebUI/Pages/Login.razor +++ b/TaikoWebUI/Pages/Login.razor @@ -5,41 +5,36 @@ @page "/Login" - - @if (!LoginService.IsLoggedIn) // Not logged in, show login form - { - - - - - - - Login -
- - - - Login - @if (!LoginService.OnlyAdmin) - { - Register - } - -
-
-
-
-
-
-
- } else - { - // Already logged in - NavigationManager.NavigateTo("/"); - } -
\ No newline at end of file + +@if (!LoginService.IsLoggedIn) // Not logged in, show login form +{ + + + + + + @Localizer["Log In"] + + + +
+ + + @Localizer["Log In"] +
+
+
+
+
+
+
+} else +{ + // Already logged in + NavigationManager.NavigateTo("/"); +} \ No newline at end of file diff --git a/TaikoWebUI/Pages/Register.razor b/TaikoWebUI/Pages/Register.razor index ba18224..3f63267 100644 --- a/TaikoWebUI/Pages/Register.razor +++ b/TaikoWebUI/Pages/Register.razor @@ -7,17 +7,25 @@ @if (LoginService.OnlyAdmin || !LoginService.LoginRequired) { - Registration is currently closed. + Console.WriteLine("Registration is disabled. Redirecting to Dashboard..."); + NavigationManager.NavigateTo("/"); +} +else if (LoginService.IsLoggedIn) +{ + // User is already logged in. Redirect to dashboard. + NavigationManager.NavigateTo("/"); } else { - + + + Register + - Register
user.AccessCodes.Contains(inputCardNum))) { foreach (var userCredential in response.UserCredentials.Where(userCredential => userCredential.Baid == user.Baid)) @@ -64,6 +67,9 @@ public class LoginService { if (OnlyAdmin) return 0; + // strip spaces or dashes from card number + inputCardNum = inputCardNum.Replace(" ", "").Replace("-", ""); + foreach (var user in response.Users.Where(user => user.AccessCodes.Contains(inputCardNum))) { foreach (var userCredential in response.UserCredentials.Where(userCredential => userCredential.Baid == user.Baid)) diff --git a/TaikoWebUI/Shared/NavMenu.razor b/TaikoWebUI/Shared/NavMenu.razor index 838491c..c76f5d7 100644 --- a/TaikoWebUI/Shared/NavMenu.razor +++ b/TaikoWebUI/Shared/NavMenu.razor @@ -16,7 +16,7 @@ if (LoginService.LoginRequired && !LoginService.OnlyAdmin && !LoginService.IsLoggedIn) { - @Localizer["Login"] + @Localizer["Log In"] @Localizer["Register"] } From 604872116f2e2f523cfe1059e0761fdecbd2a4cd Mon Sep 17 00:00:00 2001 From: shiibe <82057235+shiibe@users.noreply.github.com> Date: Sat, 9 Mar 2024 14:13:56 -0500 Subject: [PATCH 6/9] Redirects, styles clean up --- TaikoWebUI/Pages/AccessCode.razor | 156 +++++++++++++++--------------- TaikoWebUI/Pages/DaniDojo.razor | 16 +-- TaikoWebUI/Pages/HighScores.razor | 18 ++-- TaikoWebUI/Pages/Profile.razor | 27 ++++-- 4 files changed, 115 insertions(+), 102 deletions(-) diff --git a/TaikoWebUI/Pages/AccessCode.razor b/TaikoWebUI/Pages/AccessCode.razor index ed5382d..2b7b6f0 100644 --- a/TaikoWebUI/Pages/AccessCode.razor +++ b/TaikoWebUI/Pages/AccessCode.razor @@ -5,93 +5,91 @@ @inject NavigationManager NavigationManager @inject IStringUtil StringUtil - - -Access Code Management -User ID: @Baid - -
- - @if (response is null) +@if (response is not null) +{ + @if ((LoginService.LoginRequired && (!LoginService.IsLoggedIn || (LoginService.GetLoggedInUser().Baid != Baid && !LoginService.IsAdmin))) || User is null) { - - - - - - } - else - { - @if ((LoginService.LoginRequired && (!LoginService.IsLoggedIn || (LoginService.GetLoggedInUser().Baid != Baid && !LoginService.IsAdmin))) || User is null) + if (!LoginService.IsLoggedIn) { - - - You are not authorized to see this page. Please log in by clicking on "Users" tab first. - - + NavigationManager.NavigateTo("/Login"); } else { - - - - - Bind New Access Code - - Enter a new access code to bind to this user account. - - - - - - - - Bind - - - - - - - - - - - - - Access Codes - - @for (var idx = 0; idx < User.AccessCodes.Count; idx++) - { - var accessCode = User.AccessCodes[idx]; - var localIdx = idx + 1; + NavigationManager.NavigateTo("/"); + } + } + else + { + + Access Codes + User ID: @Baid + + + + + -
- - -
-                                                @foreach (var digitGroup in StringUtil.SplitIntoGroups(accessCode, 4))
-											{
-												@digitGroup
-											}
-                                            
+ Add Access Code + + + + - - - @Localizer["Delete"] - + + Add + + +
+
+ + + + + + + + Access Codes + + @for (var idx = 0; idx < User.AccessCodes.Count; idx++) + { + var accessCode = User.AccessCodes[idx]; + var localIdx = idx + 1; + +
+ + +
+                                                    @foreach (var digitGroup in StringUtil.SplitIntoGroups(accessCode, 4))
+                                                    {
+                                                    @digitGroup
+                                                    }
+                                                            
+
+ + + @Localizer["Delete"] + +
- } -
-
-
- } - } -
\ No newline at end of file + } +
+
+
+
+
+ + } +} +else +{ + + + +} \ No newline at end of file diff --git a/TaikoWebUI/Pages/DaniDojo.razor b/TaikoWebUI/Pages/DaniDojo.razor index aa7f2d8..732d088 100644 --- a/TaikoWebUI/Pages/DaniDojo.razor +++ b/TaikoWebUI/Pages/DaniDojo.razor @@ -2,21 +2,25 @@ @inject HttpClient Client @inject LoginService LoginService @inject IJSRuntime JSRuntime +@inject NavigationManager NavigationManager @page "/Users/{baid:int}/DaniDojo" - + @Localizer["Key_03"] User ID: @Baid @if (LoginService.LoginRequired && (!LoginService.IsLoggedIn || (LoginService.GetLoggedInUser().Baid != Baid && !LoginService.IsAdmin))) { - - - @Localizer["Key_02"] - - + if (!LoginService.IsLoggedIn) + { + NavigationManager.NavigateTo("/Login"); + } + else + { + NavigationManager.NavigateTo("/"); + } } else { diff --git a/TaikoWebUI/Pages/HighScores.razor b/TaikoWebUI/Pages/HighScores.razor index 0ffd4a0..3682f69 100644 --- a/TaikoWebUI/Pages/HighScores.razor +++ b/TaikoWebUI/Pages/HighScores.razor @@ -2,15 +2,14 @@ @inject HttpClient Client @inject LoginService LoginService @inject IJSRuntime JSRuntime +@inject NavigationManager NavigationManager @page "/Users/{baid:int}/HighScores" - - + @Localizer["Key_01"] User ID: @Baid - @if (response is null) { @@ -24,11 +23,14 @@ { @if (LoginService.LoginRequired && (!LoginService.IsLoggedIn || (LoginService.GetLoggedInUser().Baid != Baid && !LoginService.IsAdmin))) { - - - @Localizer["Key_02"] - - + if (!LoginService.IsLoggedIn) + { + NavigationManager.NavigateTo("/Login"); + } + else + { + NavigationManager.NavigateTo("/"); + } } else { diff --git a/TaikoWebUI/Pages/Profile.razor b/TaikoWebUI/Pages/Profile.razor index 115f933..88aaad6 100644 --- a/TaikoWebUI/Pages/Profile.razor +++ b/TaikoWebUI/Pages/Profile.razor @@ -4,23 +4,26 @@ @inject IDialogService DialogService @inject LoginService LoginService @inject IJSRuntime Js - - -@Localizer["Profile"] -User ID: @Baid +@inject NavigationManager NavigationManager @if (response is not null) { @if (LoginService.LoginRequired && (!LoginService.IsLoggedIn || (LoginService.GetLoggedInUser().Baid != Baid && !LoginService.IsAdmin))) { - - - @Localizer["Key_02"] - - + if (!LoginService.IsLoggedIn) + { + NavigationManager.NavigateTo("/Login"); + } + else + { + NavigationManager.NavigateTo("/"); + } } else { + + @Localizer["Profile"] + User ID: @Baid @@ -448,6 +451,12 @@ } } +else +{ + + + +} @code { private async Task UpdateMyDonName() From 05220cca3b892dcf6ca4167210bf811ff6453fbb Mon Sep 17 00:00:00 2001 From: shiibe <82057235+shiibe@users.noreply.github.com> Date: Sat, 9 Mar 2024 16:41:25 -0500 Subject: [PATCH 7/9] Misc formatting --- TaikoWebUI/App.razor | 2 +- TaikoWebUI/Pages/AccessCode.razor | 2 +- TaikoWebUI/Pages/Login.razor | 7 ++++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/TaikoWebUI/App.razor b/TaikoWebUI/App.razor index dcdcd36..b80db76 100644 --- a/TaikoWebUI/App.razor +++ b/TaikoWebUI/App.razor @@ -1,6 +1,6 @@ - + Not found diff --git a/TaikoWebUI/Pages/AccessCode.razor b/TaikoWebUI/Pages/AccessCode.razor index 2b7b6f0..43375c2 100644 --- a/TaikoWebUI/Pages/AccessCode.razor +++ b/TaikoWebUI/Pages/AccessCode.razor @@ -66,7 +66,7 @@ { @digitGroup } - + @@ -20,7 +21,7 @@
+ Label="Access Code" Variant="Variant.Outlined" Margin="Margin.Dense" /> } else { - // Already logged in + // Already logged in, redirect to Dashboard NavigationManager.NavigateTo("/"); } \ No newline at end of file From 2b351c4480bac3166e7deef4b15f276e1eb1144d Mon Sep 17 00:00:00 2001 From: shiibe <82057235+shiibe@users.noreply.github.com> Date: Sat, 9 Mar 2024 18:20:25 -0500 Subject: [PATCH 8/9] Fix deprecated prop --- TaikoWebUI/Shared/MainLayout.razor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TaikoWebUI/Shared/MainLayout.razor b/TaikoWebUI/Shared/MainLayout.razor index 37f3c16..684b9eb 100644 --- a/TaikoWebUI/Shared/MainLayout.razor +++ b/TaikoWebUI/Shared/MainLayout.razor @@ -21,7 +21,7 @@ @Body - + From 5a156ef5392488f25542b07094e78d687ba9e723 Mon Sep 17 00:00:00 2001 From: shiibe <82057235+shiibe@users.noreply.github.com> Date: Sat, 9 Mar 2024 18:29:17 -0500 Subject: [PATCH 9/9] Fix Prevent Settings menu from closing when QR code is shown --- TaikoWebUI/Shared/NavMenu.razor | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/TaikoWebUI/Shared/NavMenu.razor b/TaikoWebUI/Shared/NavMenu.razor index c76f5d7..819f481 100644 --- a/TaikoWebUI/Shared/NavMenu.razor +++ b/TaikoWebUI/Shared/NavMenu.razor @@ -28,7 +28,7 @@ @Localizer["Key_01"] @Localizer["Key_03"] - + @Localizer["Show QR Code"] @Localizer["Change Password"] @Localizer["Manage Access Codes"] @@ -45,6 +45,9 @@ @code { + + private bool _settingsOpen = false; + protected override void OnInitialized() { LoginService.LoginStatusChanged += HandleLoginStatusChanged; @@ -72,6 +75,9 @@ var options = new DialogOptions() { DisableBackdropClick = true }; DialogService.Show("QR Code", parameters, options); + + // Prevent the settings menu from closing + _settingsOpen = true; } private async Task Logout()