Добавлена подсветка воспроизводимой песни

This commit is contained in:
FrigaT
2026-05-22 00:07:26 +03:00
parent 9139d8ecfe
commit efe1c3c2dd
23 changed files with 362 additions and 57 deletions

View File

@@ -3,9 +3,11 @@
@inherits LayoutComponentBase
@inject PwaUpdateService PwaUpdateService
@inject IJSRuntime JSRuntime
@inject NavigationManager NavigationManager
@inject ContextualActionBarService ContextualActionBarService
@inject IBrowserViewportService BrowserViewportService
@implements IBrowserViewportObserver
@implements IDisposable
<MudThemeProvider Theme="@_theme" IsDarkMode="_isDarkMode" />
<MudPopoverProvider />
@@ -23,7 +25,7 @@
{
<MudSpacer />
<LoginDisplay />
<MudIconButton Icon="@(DarkLightModeButtonIcon)" Color="Color.Inherit" OnClick="@DarkModeToggle" Class="ml-2" />
<MudIconButton Icon="@(DarkLightModeButtonIcon)" Color="Color.Inherit" OnClick="@(() => DarkModeToggle())" Class="ml-2" />
<MudLink Href="https://git.frigat.duckdns.org/FrigaT/PlaylistShared" Target="_blank" Color="Color.Inherit" Underline="Underline.None" Class="ml-4">
<MudIcon Icon="@Icons.Custom.Brands.GitHub" Size="Size.Small" Class="mr-1" /> Git
</MudLink>
@@ -68,6 +70,22 @@
};
ContextualActionBarService.OnChanged += OnContextualChangedHandler;
NavigationManager.LocationChanged += OnLocationChanged;
}
private void OnLocationChanged(object? sender, Microsoft.AspNetCore.Components.Routing.LocationChangedEventArgs e)
{
if (_isMobile)
{
_drawerOpen = false;
InvokeAsync(StateHasChanged);
}
}
public void Dispose()
{
NavigationManager.LocationChanged -= OnLocationChanged;
ContextualActionBarService.OnChanged -= OnContextualChangedHandler;
}
protected override async Task OnAfterRenderAsync(bool firstRender)
@@ -77,6 +95,13 @@
_dotNetRef = DotNetObjectReference.Create(PwaUpdateService);
await JSRuntime.InvokeVoidAsync("registerSWMessageHandler", _dotNetRef);
await BrowserViewportService.SubscribeAsync(this, fireImmediately: true);
var savedTheme = await JSRuntime.InvokeAsync<string?>("localStorage.getItem", "theme");
if (savedTheme != null)
{
_isDarkMode = savedTheme != "light";
StateHasChanged();
}
}
}
@@ -92,9 +117,10 @@
_drawerOpen = !_drawerOpen;
}
private void DarkModeToggle()
private async Task DarkModeToggle()
{
_isDarkMode = !_isDarkMode;
await JSRuntime.InvokeVoidAsync("localStorage.setItem", "theme", _isDarkMode ? "dark" : "light");
}
private readonly PaletteLight _lightPalette = new()
@@ -154,8 +180,14 @@
Task IBrowserViewportObserver.NotifyBrowserViewportChangeAsync(BrowserViewportEventArgs browserViewportEventArgs)
{
var wasMobile = _isMobile;
_isMobile = browserViewportEventArgs.Breakpoint <= Breakpoint.Sm;
if (!wasMobile && _isMobile)
_drawerOpen = false;
else if (wasMobile && !_isMobile)
_drawerOpen = true;
return InvokeAsync(StateHasChanged);
}
}