@using Microsoft.AspNetCore.Components.Web @inject IAudioPlayerService AudioPlayerService
@if (_isHovered || IsCurrentTrackPlaying) {
}
@code { [Parameter] public string CoverUrl { get; set; } = string.Empty; [Parameter] public string TrackId { get; set; } = string.Empty; [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() { 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) { if (string.IsNullOrEmpty(url)) return ""; return "https://" + url.Replace("%%", $"{Width}x{Height}"); } }