Вынесен глобальный плеер
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
@using Microsoft.AspNetCore.Components.Web
|
||||
@inject IAudioPlayerService AudioPlayerService
|
||||
|
||||
<div class="track-cover-container"
|
||||
@onmouseenter="HandleMouseEnter"
|
||||
@@ -7,7 +8,7 @@
|
||||
|
||||
<MudImage Src="@FormatCoverUrl(CoverUrl)" Height="@Height" Width="@Width" Class="rounded" Style="display: block;" />
|
||||
|
||||
@if (_isHovered || IsPlaying)
|
||||
@if (_isHovered || IsCurrentTrackPlaying)
|
||||
{
|
||||
<div class="play-overlay"
|
||||
style="position: absolute; top: 0; left: 0; right: 0; bottom: 0;
|
||||
@@ -16,7 +17,7 @@
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 4px;">
|
||||
<MudIconButton Icon="@(IsPlaying? Icons.Material.Filled.Pause : Icons.Material.Filled.PlayArrow)"
|
||||
<MudIconButton Icon="@(IsCurrentTrackPlaying? Icons.Material.Filled.Pause : Icons.Material.Filled.PlayArrow)"
|
||||
Color="Color.Inherit"
|
||||
Size="Size.Large"
|
||||
OnClick="OnPlayClick" />
|
||||
@@ -27,19 +28,39 @@
|
||||
@code {
|
||||
[Parameter] public string CoverUrl { get; set; } = string.Empty;
|
||||
[Parameter] public string TrackId { get; set; } = string.Empty;
|
||||
[Parameter] public bool IsPlaying { get; set; } = false;
|
||||
[Parameter] public EventCallback<string> OnPlay { get; set; }
|
||||
[Parameter] public int Height { get; set; } = 50;
|
||||
[Parameter] public int Width { get; set; } = 50;
|
||||
[Parameter] public string SharedPlaylistId { get; set; } = string.Empty;
|
||||
|
||||
private bool IsCurrentTrackPlaying => AudioPlayerService.IsPlaying && AudioPlayerService.CurrentTrackId == TrackId;
|
||||
|
||||
private bool _isHovered;
|
||||
|
||||
private void HandleMouseEnter() => _isHovered = true;
|
||||
private void HandleMouseLeave() => _isHovered = false;
|
||||
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
AudioPlayerService.OnStateChanged += OnPlayerStateChanged;
|
||||
}
|
||||
|
||||
private async Task OnPlayClick()
|
||||
{
|
||||
await OnPlay.InvokeAsync(TrackId);
|
||||
var sharedPlaylistId = string.IsNullOrWhiteSpace(SharedPlaylistId) ? null : SharedPlaylistId;
|
||||
|
||||
if (IsCurrentTrackPlaying)
|
||||
{
|
||||
await AudioPlayerService.PauseAsync();
|
||||
}
|
||||
else
|
||||
{
|
||||
await AudioPlayerService.LoadAndPlayAsync(TrackId, sharedPlaylistId: SharedPlaylistId);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnPlayerStateChanged()
|
||||
{
|
||||
InvokeAsync(StateHasChanged);
|
||||
}
|
||||
|
||||
private string FormatCoverUrl(string? url)
|
||||
|
||||
Reference in New Issue
Block a user