@page "/my-playlists"
@attribute [Authorize]
@using PlaylistShared.Shared.DTO
@inject HttpClient Http
@inject ISnackbar Snackbar
@inject NavigationManager Navigation
Мои плейлисты
@if (_loading)
{
}
else if (_playlists == null || !_playlists.Any())
{
Плейлисты не найдены. Убедитесь, что вы сохранили корректный токен Яндекс.Музыки.
}
else
{
Название
Треков
Статус
@context.Title
@context.TrackCount
@if (context.IsShared)
{
Расшарен
}
else
{
Не расшарен
}
@if (!context.IsShared)
{
Поделиться
}
else
{
Управлять
}
}
@code {
private List _playlists;
private bool _loading = true;
private bool _showOnlyShared = false;
private List FilteredPlaylists => _showOnlyShared ? _playlists?.Where(p => p.IsShared).ToList() : _playlists;
protected override async Task OnInitializedAsync()
{
await LoadPlaylists();
}
private async Task LoadPlaylists()
{
_loading = true;
try
{
var response = await Http.GetFromJsonAsync>>("/api/playlist/my");
if (response?.Success == true)
_playlists = response.Data;
else
Snackbar.Add("Ошибка загрузки плейлистов", Severity.Error);
}
catch (Exception ex)
{
Snackbar.Add($"Ошибка: {ex.Message}", Severity.Error);
}
finally
{
_loading = false;
StateHasChanged();
}
}
private async Task SharePlaylist(YandexPlaylistInfo playlist)
{
var request = new SharePlaylistRequest { Kind = playlist.Kind, OwnerUid = playlist.OwnerUid };
var response = await Http.PostAsJsonAsync("/api/playlist/share", request);
if (response.IsSuccessStatusCode)
{
Snackbar.Add("Плейлист расшарен", Severity.Success);
await LoadPlaylists();
}
else
{
Snackbar.Add("Ошибка расшаривания", Severity.Error);
}
}
private void GoToShared(YandexPlaylistInfo playlist)
{
if (!string.IsNullOrEmpty(playlist.ShareToken))
Navigation.NavigateTo($"/shared/{playlist.ShareToken}");
else
Snackbar.Add("Ошибка: токен расшаривания не найден", Severity.Error);
}
}