Добавлен вывод названия трека и обложки в плеере

This commit is contained in:
FrigaT
2026-04-14 19:38:33 +03:00
parent acf02c85a7
commit 0381ef74ab
8 changed files with 139 additions and 29 deletions

View File

@@ -7,8 +7,16 @@
@inject ISnackbar Snackbar
@inject HttpClient Http
<MudPaper Class="pa-4" Elevation="0" Style="background-color: rgba(0,0,0,0.05); border-radius: 8px;">
<MudPaper Class="pa-4" Elevation="0" Width="100%" Style="background-color: rgba(0,0,0,0.05); border-radius: 8px;">
<div style="display: flex; align-items: center; gap: 12px; flex-wrap: wrap;">
<div style="display: flex; align-items: center; gap: 12px;">
@if (!string.IsNullOrEmpty(_currentTrackCoverUrl))
{
<MudImage Src="@_currentTrackCoverUrl" Height="40" Width="40" Class="rounded" />
}
<MudText Typo="Typo.body1" Style="font-weight: 500;">@_currentTrackTitle</MudText>
</div>
<div style="display: flex; gap: 8px;">
<MudIconButton Icon="@(_isPlaying? Icons.Material.Filled.Pause : Icons.Material.Filled.PlayArrow)"
Size="Size.Medium"
@@ -50,11 +58,13 @@
<audio id="@_audioId" style="display: none;"></audio>
@code {
private const double _defaultVolume = 50;
private string _audioId = $"audio_{Guid.NewGuid():N}";
private IJSObjectReference? _audioModule;
private IJSObjectReference? _audioElement;
private double _currentProgress;
private double _currentVolume = 70;
private double _currentVolume = _defaultVolume;
private string _currentTime = "0:00";
private string _totalTime = "0:00";
private bool _isPlaying;
@@ -62,6 +72,8 @@
private bool _isMuted;
private string? _currentAccessToken;
private string? _currentSharedPlaylistId;
private string? _currentTrackCoverUrl;
private string? _currentTrackTitle;
protected override async Task OnInitializedAsync()
{
@@ -71,6 +83,7 @@
AudioPlayerService.OnStopRequested += OnStop;
AudioPlayerService.OnSeekRequested += OnSeek;
AudioPlayerService.OnVolumeChangeRequested += OnVolumeChange;
AudioPlayerService.OnStateChanged += OnStateChanged;
await LoadSavedVolume();
await AudioPlayerService.SetVolumeAsync(_currentVolume); // синхронизация
@@ -83,10 +96,17 @@
await EnsureAudioModuleAsync();
}
}
private void OnStateChanged()
{
_currentTrackTitle = AudioPlayerService.CurrentTrackTitle;
_currentTrackCoverUrl = AudioPlayerService.CurrentTrackCoverUrl?.FormatCoverUrl(40, 40);
InvokeAsync(StateHasChanged);
}
private async Task LoadSavedVolume()
{
var savedVolume = await PlayerStorage.GetVolumeAsync();
var savedVolume = await PlayerStorage.GetVolumeAsync() ?? _defaultVolume;
_currentVolume = savedVolume;
await AudioPlayerService.SetVolumeAsync(savedVolume);
}