Улучшен плеер
This commit is contained in:
@@ -112,10 +112,11 @@
|
||||
}
|
||||
|
||||
<!-- Список треков -->
|
||||
<div style="display: flex; justify-content: space-between; align-items: center;">
|
||||
<MudText Typo="Typo.h6" GutterBottom>Треки</MudText>
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Refresh" OnClick="LoadTracks" Disabled="_tracksLoading" Size="Size.Small" />
|
||||
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px;">
|
||||
<MudText Typo="Typo.h6">Треки</MudText>
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Refresh" OnClick="LoadTracks" Disabled="_tracksLoading" Size="Size.Medium" />
|
||||
</div>
|
||||
|
||||
@if (_tracksLoading)
|
||||
{
|
||||
<MudProgressCircular Indeterminate />
|
||||
@@ -126,7 +127,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
<MudTable Items="@_tracks" Hover="true" Breakpoint="Breakpoint.Sm">
|
||||
<MudTable Items="@_tracks">
|
||||
<HeaderContent>
|
||||
<MudTh>#</MudTh>
|
||||
<MudTh>Обложка</MudTh>
|
||||
@@ -139,50 +140,52 @@
|
||||
}
|
||||
</HeaderContent>
|
||||
<RowTemplate>
|
||||
<MudTd>@context.Index</MudTd>
|
||||
<MudTd>
|
||||
<MudTd DataLabel="#" Style="font-weight: normal;">@context.Index</MudTd>
|
||||
<MudTd DataLabel="Обложка">
|
||||
@if (!string.IsNullOrEmpty(context.CoverUri))
|
||||
{
|
||||
<TrackCoverWithPlay CoverUrl="@context.CoverUri"
|
||||
TrackId="@context.Id"
|
||||
Width="50"
|
||||
Height="50"
|
||||
Width="50" Height="50"
|
||||
IsPlaying="@(_currentTrackId == context.Id && _isPlaying)"
|
||||
OnPlay="PlayTrack" />
|
||||
}
|
||||
</MudTd>
|
||||
<MudTd>
|
||||
<MudLink Href="@($"https://music.yandex.ru/track/{context.Id}")"
|
||||
Target="_blank"
|
||||
Underline="Underline.Hover"
|
||||
Style="cursor: pointer; display: inline-flex; align-items: center;">
|
||||
<MudTd DataLabel="Название">
|
||||
<MudLink Href="@($"https://music.yandex.ru/track/{context.Id}")" Target="_blank" Underline="Underline.Hover">
|
||||
@context.Title
|
||||
<MudIcon Icon="@Icons.Material.Filled.OpenInNew" Size="Size.Small" Class="ml-1" />
|
||||
</MudLink>
|
||||
</MudTd>
|
||||
<MudTd>@string.Join(", ", context.Artists)</MudTd>
|
||||
<MudTd>@FormatDuration(context.DurationMs)</MudTd>
|
||||
<MudTd DataLabel="Исполнитель">@string.Join(", ", context.Artists)</MudTd>
|
||||
<MudTd DataLabel="Длительность">@FormatDuration(context.DurationMs)</MudTd>
|
||||
@if (_canRemove)
|
||||
{
|
||||
<MudTd>
|
||||
<MudTd DataLabel="">
|
||||
<MudIconButton Icon="@Icons.Material.Filled.Delete" Color="Color.Error" OnClick="() => RemoveTrack(context)" />
|
||||
</MudTd>
|
||||
}
|
||||
</RowTemplate>
|
||||
</MudTable>
|
||||
<AudioPlayer @ref="_audioPlayer" OnTrackEnded="OnTrackEnded" />
|
||||
}
|
||||
</MudCardContent>
|
||||
</MudCard>
|
||||
}
|
||||
|
||||
<!-- Фиксированный плеер внизу -->
|
||||
<div class="fixed-player" style="display: @(_isPlayerVisible ? "block" : "none");">
|
||||
<AudioPlayer @ref="_audioPlayer" OnTrackEnded="OnTrackEnded" />
|
||||
</div>
|
||||
</MudContainer>
|
||||
|
||||
@code {
|
||||
|
||||
@code {
|
||||
[Parameter] public string Token { get; set; }
|
||||
|
||||
private AudioPlayer? _audioPlayer;
|
||||
private string? _currentTrackId { get; set; }
|
||||
private bool _isPlaying = false;
|
||||
private bool _isPlayerVisible = false;
|
||||
|
||||
private SharedPlaylistDto? _playlist;
|
||||
private bool _loading = true;
|
||||
@@ -436,6 +439,8 @@
|
||||
await _audioPlayer.LoadAndPlayAsync(trackId);
|
||||
_isPlaying = true;
|
||||
}
|
||||
|
||||
_isPlayerVisible = true;
|
||||
}
|
||||
|
||||
private async Task OnTrackEnded()
|
||||
|
||||
Reference in New Issue
Block a user