diff --git a/PlaylistShared.Pwa/Components/Common/TrackCoverWithPlay.razor b/PlaylistShared.Pwa/Components/Common/TrackCoverWithPlay.razor index 7f8c3f9..a3c1b47 100644 --- a/PlaylistShared.Pwa/Components/Common/TrackCoverWithPlay.razor +++ b/PlaylistShared.Pwa/Components/Common/TrackCoverWithPlay.razor @@ -6,7 +6,7 @@ @onmouseleave="HandleMouseLeave" style="position: relative; display: inline-block; cursor: pointer;"> - + @if (_isHovered || IsCurrentTrackPlaying) { @@ -62,10 +62,4 @@ { InvokeAsync(StateHasChanged); } - - private string FormatCoverUrl(string? url) - { - if (string.IsNullOrEmpty(url)) return ""; - return "https://" + url.Replace("%%", $"{Width}x{Height}"); - } } \ No newline at end of file diff --git a/PlaylistShared.Pwa/Components/SharedPlaylist/PlaylistHeader.razor b/PlaylistShared.Pwa/Components/SharedPlaylist/PlaylistHeader.razor index cfc8099..7f68042 100644 --- a/PlaylistShared.Pwa/Components/SharedPlaylist/PlaylistHeader.razor +++ b/PlaylistShared.Pwa/Components/SharedPlaylist/PlaylistHeader.razor @@ -11,7 +11,7 @@
@if (!string.IsNullOrEmpty(Playlist?.CoverUrl)) { - + }
@@ -144,10 +144,4 @@ await OnPermissionsChanged.InvokeAsync(); } } - - private string FormatCoverUrl(string? url, string size) - { - if (string.IsNullOrEmpty(url)) return ""; - return "https://" + url.Replace("%%", size); - } } \ No newline at end of file diff --git a/PlaylistShared.Pwa/Components/SharedPlaylist/TracksTable.razor b/PlaylistShared.Pwa/Components/SharedPlaylist/TracksTable.razor index 671cdc8..e5f2d8e 100644 --- a/PlaylistShared.Pwa/Components/SharedPlaylist/TracksTable.razor +++ b/PlaylistShared.Pwa/Components/SharedPlaylist/TracksTable.razor @@ -30,7 +30,7 @@ } else { - + } } @@ -141,12 +141,6 @@ 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) { var seconds = ms / 1000; diff --git a/PlaylistShared.Pwa/Extensions/StringExtensions.cs b/PlaylistShared.Pwa/Extensions/StringExtensions.cs new file mode 100644 index 0000000..42f0897 --- /dev/null +++ b/PlaylistShared.Pwa/Extensions/StringExtensions.cs @@ -0,0 +1,19 @@ +namespace PlaylistShared.Pwa.Extensions; + +public static class StringExtensions +{ + /// + /// Преобразует шаблон URL обложки Яндекс.Музыки в полный URL с указанным размером. + /// + /// Шаблон URL (например, "avatars.yandex.net/get-music-content/.../%%") + /// Желаемая ширина обложки (по умолчанию 200) + /// Желаемая высота обложки (по умолчанию 200) + /// Полный URL обложки или пустую строку, если входная строка null или пуста. + 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}"); + } +} \ No newline at end of file diff --git a/PlaylistShared.Pwa/_Imports.razor b/PlaylistShared.Pwa/_Imports.razor index e267f29..7eea931 100644 --- a/PlaylistShared.Pwa/_Imports.razor +++ b/PlaylistShared.Pwa/_Imports.razor @@ -13,4 +13,5 @@ @using MudBlazor @using Microsoft.AspNetCore.Authorization @using PlaylistShared.Shared -@using PlaylistShared.Pwa.Components \ No newline at end of file +@using PlaylistShared.Pwa.Components +@using PlaylistShared.Pwa.Extensions \ No newline at end of file