Добавлена передача параметров в плеер
This commit is contained in:
@@ -66,6 +66,7 @@
|
||||
}
|
||||
_shareUrl = ShareUrl;
|
||||
_popoverOpen = true;
|
||||
await CopyLink();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -27,10 +27,11 @@
|
||||
|
||||
@code {
|
||||
[Parameter] public string CoverUrl { get; set; } = string.Empty;
|
||||
[Parameter] public string TrackTitle { 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;
|
||||
[Parameter] public string PlaylistShareToken { get; set; } = string.Empty;
|
||||
|
||||
private bool IsCurrentTrackPlaying => AudioPlayerService.IsPlaying && AudioPlayerService.CurrentTrackId == TrackId;
|
||||
|
||||
@@ -46,7 +47,7 @@
|
||||
|
||||
private async Task OnPlayClick()
|
||||
{
|
||||
var sharedPlaylistId = string.IsNullOrWhiteSpace(SharedPlaylistId) ? null : SharedPlaylistId;
|
||||
var playlistShareToken = string.IsNullOrWhiteSpace(PlaylistShareToken) ? null : PlaylistShareToken;
|
||||
|
||||
if (IsCurrentTrackPlaying)
|
||||
{
|
||||
@@ -54,7 +55,11 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
await AudioPlayerService.LoadAndPlayAsync(TrackId, sharedPlaylistId: SharedPlaylistId);
|
||||
await AudioPlayerService.LoadAndPlayAsync(
|
||||
trackId: TrackId,
|
||||
playlistShareToken: playlistShareToken,
|
||||
title: TrackTitle,
|
||||
coverUrl: CoverUrl);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -164,7 +164,7 @@
|
||||
|
||||
private async Task OnLoadAndPlay(string trackId, string? accessToken, string? sharedPlaylistId)
|
||||
{
|
||||
if (!await CheckAuthAsync()) return;
|
||||
//if (!await CheckAuthAsync()) return;
|
||||
|
||||
var tokens = await TokenStorage.GetTokensAsync();
|
||||
_currentAccessToken = accessToken ?? tokens.token;
|
||||
|
||||
@@ -35,6 +35,8 @@
|
||||
<div style="width: 40px; height: 40px; flex-shrink: 0;">
|
||||
<TrackCoverWithPlay CoverUrl="@track.CoverUri"
|
||||
TrackId="@track.TrackId"
|
||||
TrackTitle="@track.Title"
|
||||
PlaylistShareToken="@ShareToken"
|
||||
Width="40" Height="40"/>
|
||||
</div>
|
||||
<div style="flex: 1; min-width: 0;">
|
||||
|
||||
@@ -80,7 +80,14 @@
|
||||
|
||||
private async Task ToggleFavorite()
|
||||
{
|
||||
if (!_isAuthenticated || Playlist == null) return;
|
||||
if (Playlist == null) return;
|
||||
|
||||
if (!_isAuthenticated)
|
||||
{
|
||||
Snackbar.Add("Добавление в избранное только авторизованным пользователям", Severity.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
_favoriteLoading = true;
|
||||
try
|
||||
{
|
||||
|
||||
@@ -26,6 +26,8 @@
|
||||
{
|
||||
<TrackCoverWithPlay CoverUrl="@context.CoverUri"
|
||||
TrackId="@context.TrackId"
|
||||
TrackTitle="@context.Title"
|
||||
PlaylistShareToken="@ShareToken"
|
||||
Width="50" Height="50"/>
|
||||
}
|
||||
else
|
||||
|
||||
@@ -47,7 +47,7 @@ public class AudioPlayerService : IAudioPlayerService
|
||||
}
|
||||
|
||||
// Внешние команды (вызываются из компонентов)
|
||||
public async Task LoadAndPlayAsync(string trackId, string? accessToken = null, string? sharedPlaylistId = null, string? title = null, string? coverUrl = null)
|
||||
public async Task LoadAndPlayAsync(string trackId, string? accessToken = null, string? playlistShareToken = null, string? title = null, string? coverUrl = null)
|
||||
{
|
||||
// Если accessToken не передан, пытаемся получить его из хранилища
|
||||
if (string.IsNullOrWhiteSpace(accessToken))
|
||||
@@ -57,7 +57,7 @@ public class AudioPlayerService : IAudioPlayerService
|
||||
}
|
||||
|
||||
// Проверяем, есть ли чем авторизоваться
|
||||
if (string.IsNullOrWhiteSpace(accessToken) && string.IsNullOrWhiteSpace(sharedPlaylistId))
|
||||
if (string.IsNullOrWhiteSpace(accessToken) && string.IsNullOrWhiteSpace(playlistShareToken))
|
||||
{
|
||||
_snackbar.Add("Не удалось воспроизвести трек: отсутствует токен авторизации или идентификатор расшаренного плейлиста.", Severity.Error);
|
||||
return;
|
||||
@@ -68,7 +68,7 @@ public class AudioPlayerService : IAudioPlayerService
|
||||
{
|
||||
try
|
||||
{
|
||||
var trackInfo = await GetTrackInfo(trackId, accessToken, sharedPlaylistId);
|
||||
var trackInfo = await GetTrackInfo(trackId, accessToken, playlistShareToken);
|
||||
title = trackInfo?.Title;
|
||||
coverUrl = trackInfo?.CoverUri;
|
||||
}
|
||||
@@ -84,7 +84,7 @@ public class AudioPlayerService : IAudioPlayerService
|
||||
_currentTrackCoverUrl = coverUrl;
|
||||
_isPlaying = true;
|
||||
OnStateChanged?.Invoke();
|
||||
OnLoadAndPlayRequested?.Invoke(trackId, accessToken, sharedPlaylistId);
|
||||
OnLoadAndPlayRequested?.Invoke(trackId, accessToken, playlistShareToken);
|
||||
}
|
||||
|
||||
public async Task PlayAsync()
|
||||
|
||||
@@ -39,7 +39,7 @@ public interface IAudioPlayerService
|
||||
/// <param name="sharedPlaylistId">ID расшаренного плейлиста (для неавторизованного доступа).</param>
|
||||
/// <param name="title">Название трека. (Если не передано, вызывает api для получения)</param>
|
||||
/// <param name="coverUrl">URL обложки трека. (Если не передано, вызывает api для получения)</param>
|
||||
Task LoadAndPlayAsync(string trackId, string? accessToken = null, string? sharedPlaylistId = null, string? title = null, string? coverUrl = null);
|
||||
Task LoadAndPlayAsync(string trackId, string? accessToken = null, string? playlistShareToken = null, string? title = null, string? coverUrl = null);
|
||||
|
||||
/// <summary>Воспроизвести (если трек загружен и на паузе).</summary>
|
||||
Task PlayAsync();
|
||||
|
||||
Reference in New Issue
Block a user