Добавлен вывод названия трека и обложки в плеере
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user