Вынесена логика формирования обложки
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
@onmouseleave="HandleMouseLeave"
|
@onmouseleave="HandleMouseLeave"
|
||||||
style="position: relative; display: inline-block; cursor: pointer;">
|
style="position: relative; display: inline-block; cursor: pointer;">
|
||||||
|
|
||||||
<MudImage Src="@FormatCoverUrl(CoverUrl)" Height="@Height" Width="@Width" Class="rounded" Style="display: block;" />
|
<MudImage Src="@CoverUrl.FormatCoverUrl(Width, Height)" Height="@Height" Width="@Width" Class="rounded" Style="display: block;" />
|
||||||
|
|
||||||
@if (_isHovered || IsCurrentTrackPlaying)
|
@if (_isHovered || IsCurrentTrackPlaying)
|
||||||
{
|
{
|
||||||
@@ -62,10 +62,4 @@
|
|||||||
{
|
{
|
||||||
InvokeAsync(StateHasChanged);
|
InvokeAsync(StateHasChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
private string FormatCoverUrl(string? url)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(url)) return "";
|
|
||||||
return "https://" + url.Replace("%%", $"{Width}x{Height}");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -11,7 +11,7 @@
|
|||||||
<div style="display: flex; gap: 16px; align-items: center;">
|
<div style="display: flex; gap: 16px; align-items: center;">
|
||||||
@if (!string.IsNullOrEmpty(Playlist?.CoverUrl))
|
@if (!string.IsNullOrEmpty(Playlist?.CoverUrl))
|
||||||
{
|
{
|
||||||
<MudImage Src="@FormatCoverUrl(Playlist.CoverUrl, "80x80")" Height="80" Width="80" Class="rounded" />
|
<MudImage Src="@Playlist.CoverUrl.FormatCoverUrl(80, 80)" Height="80" Width="80" Class="rounded" />
|
||||||
}
|
}
|
||||||
<div>
|
<div>
|
||||||
<div style="display: flex; align-items: center; gap: 8px; flex-wrap: wrap;">
|
<div style="display: flex; align-items: center; gap: 8px; flex-wrap: wrap;">
|
||||||
@@ -144,10 +144,4 @@
|
|||||||
await OnPermissionsChanged.InvokeAsync();
|
await OnPermissionsChanged.InvokeAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private string FormatCoverUrl(string? url, string size)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(url)) return "";
|
|
||||||
return "https://" + url.Replace("%%", size);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
<MudImage Src="@FormatCoverUrl(context.CoverUri, "50x50")" Height="50" Width="50" Class="rounded" />
|
<MudImage Src="@context.CoverUri.FormatCoverUrl(50, 50)" Height="50" Width="50" Class="rounded" />
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</MudTd>
|
</MudTd>
|
||||||
@@ -141,12 +141,6 @@
|
|||||||
await OnPlayTrack.InvokeAsync(trackId);
|
await OnPlayTrack.InvokeAsync(trackId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private string FormatCoverUrl(string? url, string size)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(url)) return "";
|
|
||||||
return "https://" + url.Replace("%%", size);
|
|
||||||
}
|
|
||||||
|
|
||||||
private string FormatDuration(long ms)
|
private string FormatDuration(long ms)
|
||||||
{
|
{
|
||||||
var seconds = ms / 1000;
|
var seconds = ms / 1000;
|
||||||
|
|||||||
19
PlaylistShared.Pwa/Extensions/StringExtensions.cs
Normal file
19
PlaylistShared.Pwa/Extensions/StringExtensions.cs
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
namespace PlaylistShared.Pwa.Extensions;
|
||||||
|
|
||||||
|
public static class StringExtensions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Преобразует шаблон URL обложки Яндекс.Музыки в полный URL с указанным размером.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="coverUri">Шаблон URL (например, "avatars.yandex.net/get-music-content/.../%%")</param>
|
||||||
|
/// <param name="width">Желаемая ширина обложки (по умолчанию 200)</param>
|
||||||
|
/// <param name="height">Желаемая высота обложки (по умолчанию 200)</param>
|
||||||
|
/// <returns>Полный URL обложки или пустую строку, если входная строка null или пуста.</returns>
|
||||||
|
public static string FormatCoverUrl(this string? coverUri, int width = 200, int height = 200)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(coverUri))
|
||||||
|
return string.Empty;
|
||||||
|
|
||||||
|
return "https://" + coverUri.Replace("%%", $"{width}x{height}");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -14,3 +14,4 @@
|
|||||||
@using Microsoft.AspNetCore.Authorization
|
@using Microsoft.AspNetCore.Authorization
|
||||||
@using PlaylistShared.Shared
|
@using PlaylistShared.Shared
|
||||||
@using PlaylistShared.Pwa.Components
|
@using PlaylistShared.Pwa.Components
|
||||||
|
@using PlaylistShared.Pwa.Extensions
|
||||||
Reference in New Issue
Block a user