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

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

@@ -9,7 +9,7 @@
@implements IDisposable
@implements IAsyncDisposable
<MudStack Spacing="1" Row AlignItems="AlignItems.Center" Wrap="Wrap.NoWrap">
<MudStack Spacing="1" Row AlignItems="AlignItems.Center" Wrap="Wrap.NoWrap" Class="player-enter">
<!-- Кнопки управления -->
<MudIconButton Icon="@Icons.Material.Filled.SkipPrevious"
Size="Size.Small"
@@ -17,9 +17,7 @@
Disabled="@(!AudioPlayerService.HasPrevious)"
OnClick="() => AudioPlayerService.PlayPreviousAsync()" />
<MudItem @onmouseenter="() => { _isPlayHovered = true; }"
@onmouseleave="() => { _isPlayHovered = false; }"
Class="relative d-inline-block rounded overflow-hidden cursor-pointer"
<MudItem Class="relative d-inline-block rounded overflow-hidden cursor-pointer"
Style="width: 50px; height: 50px;">
@if (!string.IsNullOrEmpty(AudioPlayerService.CurrentTrack?.CoverUri))
@@ -125,7 +123,6 @@
private double _volumeBeforeMute;
private double _bufferSecond;
private bool _isPlayHovered;
protected override async Task OnInitializedAsync()
{
@@ -179,6 +176,29 @@
{
_bufferSecond = second;
}
[JSInvokable]
public async Task OnKeyboardTogglePlay()
{
if (AudioPlayerService.IsPlaying)
await AudioPlayerService.PauseAsync();
else
await AudioPlayerService.PlayAsync();
}
[JSInvokable]
public async Task OnKeyboardSeek(double delta)
{
var newTime = Math.Max(0, AudioPlayerService.CurrentTime + delta);
await AudioPlayerService.SeekToAsync(newTime);
}
[JSInvokable]
public async Task OnKeyboardVolumeChange(double delta)
{
var newVol = Math.Clamp(AudioPlayerService.CurrentVolume + delta, 0, 100);
await AudioPlayerService.SetVolumeAsync(newVol);
}
#endregion
#region Обработка сервиса
@@ -307,7 +327,10 @@
AudioPlayerService.OnStateChanged -= OnServiceStateChanged;
if (_audioElement != null)
{
try { await _audioElement.InvokeVoidAsync("destroy"); } catch { }
await _audioElement.DisposeAsync();
}
if (_audioModule != null)
await _audioModule.DisposeAsync();
}