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