@inject AuthService AuthService
@inject NavigationManager NavigationManager
@inject IDialogService DialogService
@using TaikoWebUI.Pages.Dialogs;
@Localizer["Dashboard"]
@if (AuthService.IsAdmin || !AuthService.LoginRequired)
{
@Localizer["Users"]
}
@{
var baid = AuthService.GetLoggedInBaid();
if (AuthService.LoginRequired && !AuthService.OnlyAdmin && !AuthService.IsLoggedIn) {
@Localizer["Log In"]
@Localizer["Register"]
}
if (AuthService.IsLoggedIn)
{
@Localizer["Profile"]
@Localizer["Song List"]
@Localizer["High Scores"]
@Localizer["Play History"]
@Localizer["Dani Dojo"]
@Localizer["Show QR Code"]
@Localizer["Change Password"]
@Localizer["Access Codes"]
}
if (AuthService.IsLoggedIn)
{
@Localizer["Log Out"]
}
}
@code {
private bool settingsOpen = false;
protected override void OnInitialized()
{
AuthService.LoginStatusChanged += HandleAuthStatusChanged;
}
private void HandleAuthStatusChanged(object? sender, EventArgs e)
{
StateHasChanged();
}
protected override void OnAfterRender(bool firstRender)
{
if (firstRender)
{
AuthService.LoginStatusChanged += HandleAuthStatusChanged;
}
}
private async Task ShowQrCode()
{
var user = await AuthService.GetLoggedInUser();
if (user == null) return;
var parameters = new DialogParameters
{
["user"] = user
};
var options = new DialogOptions { DisableBackdropClick = true };
await DialogService.ShowAsync(Localizer["QR Code"], parameters, options);
// Prevent the settings menu from closing
settingsOpen = true;
}
private async Task Logout()
{
var result = await DialogService.ShowMessageBox(
"Log Out",
"Are you sure you want to log out?",
yesText: "Log Out",
noText: "Cancel");
if (result == true)
{
await AuthService.Logout();
NavigationManager.NavigateTo("/");
}
}
}