diff --git a/PlaylistShared.Pwa/Components/Common/ShareButton.razor b/PlaylistShared.Pwa/Components/Common/ShareButton.razor
index 55edca3..26275c3 100644
--- a/PlaylistShared.Pwa/Components/Common/ShareButton.razor
+++ b/PlaylistShared.Pwa/Components/Common/ShareButton.razor
@@ -66,6 +66,7 @@
}
_shareUrl = ShareUrl;
_popoverOpen = true;
+ await CopyLink();
}
}
diff --git a/PlaylistShared.Pwa/Components/Common/TrackCoverWithPlay.razor b/PlaylistShared.Pwa/Components/Common/TrackCoverWithPlay.razor
index a3c1b47..b287a71 100644
--- a/PlaylistShared.Pwa/Components/Common/TrackCoverWithPlay.razor
+++ b/PlaylistShared.Pwa/Components/Common/TrackCoverWithPlay.razor
@@ -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);
}
}
diff --git a/PlaylistShared.Pwa/Components/Global/AudioPlayer.razor b/PlaylistShared.Pwa/Components/Global/AudioPlayer.razor
index 7276499..8f9dcb2 100644
--- a/PlaylistShared.Pwa/Components/Global/AudioPlayer.razor
+++ b/PlaylistShared.Pwa/Components/Global/AudioPlayer.razor
@@ -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;
diff --git a/PlaylistShared.Pwa/Components/SharedPlaylist/AddTrackBySearch.razor b/PlaylistShared.Pwa/Components/SharedPlaylist/AddTrackBySearch.razor
index b758d3f..a47980f 100644
--- a/PlaylistShared.Pwa/Components/SharedPlaylist/AddTrackBySearch.razor
+++ b/PlaylistShared.Pwa/Components/SharedPlaylist/AddTrackBySearch.razor
@@ -35,6 +35,8 @@
diff --git a/PlaylistShared.Pwa/Components/SharedPlaylist/PlaylistHeader.razor b/PlaylistShared.Pwa/Components/SharedPlaylist/PlaylistHeader.razor
index 7f68042..8a79e2b 100644
--- a/PlaylistShared.Pwa/Components/SharedPlaylist/PlaylistHeader.razor
+++ b/PlaylistShared.Pwa/Components/SharedPlaylist/PlaylistHeader.razor
@@ -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
{
diff --git a/PlaylistShared.Pwa/Components/SharedPlaylist/TracksTable.razor b/PlaylistShared.Pwa/Components/SharedPlaylist/TracksTable.razor
index fe81561..d068f5f 100644
--- a/PlaylistShared.Pwa/Components/SharedPlaylist/TracksTable.razor
+++ b/PlaylistShared.Pwa/Components/SharedPlaylist/TracksTable.razor
@@ -26,6 +26,8 @@
{
}
else
diff --git a/PlaylistShared.Pwa/Services/AudioPlayerService.cs b/PlaylistShared.Pwa/Services/AudioPlayerService.cs
index dc56560..554a5a8 100644
--- a/PlaylistShared.Pwa/Services/AudioPlayerService.cs
+++ b/PlaylistShared.Pwa/Services/AudioPlayerService.cs
@@ -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()
diff --git a/PlaylistShared.Pwa/Services/IAudioPlayerService.cs b/PlaylistShared.Pwa/Services/IAudioPlayerService.cs
index b61e3ce..8ade31a 100644
--- a/PlaylistShared.Pwa/Services/IAudioPlayerService.cs
+++ b/PlaylistShared.Pwa/Services/IAudioPlayerService.cs
@@ -39,7 +39,7 @@ public interface IAudioPlayerService
///
ID расшаренного плейлиста (для неавторизованного доступа).
///
Название трека. (Если не передано, вызывает api для получения)
///
URL обложки трека. (Если не передано, вызывает api для получения)
- 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);
///
Воспроизвести (если трек загружен и на паузе).
Task PlayAsync();