@page "/createplaylist" @attribute [Authorize] @using System.Security.Claims @using Microsoft.AspNetCore.Components.Authorization @inject AuthenticationStateProvider AuthenticationStateProvider @inject AppDbContext Db @inject IYandexMusicService YandexService @inject NavigationManager Navigation

Создание общего плейлиста

@code { private CreateModel model = new(); private bool isLoading; private string? userId; public class CreateModel { [Required] public string Title { get; set; } = ""; public string? Description { get; set; } } protected override async Task OnInitializedAsync() { var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync(); userId = authState.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; } private async Task HandleSubmit() { if (string.IsNullOrEmpty(userId)) { // пользователь не авторизован return; } isLoading = true; try { // 1. Создаём плейлист в Яндекс Музыке var yandexId = await YandexService.CreatePlaylistAsync(userId, model.Title); // 2. Сохраняем в БД var playlist = new SharedPlaylist { Id = Guid.NewGuid(), OwnerUserId = userId, YandexPlaylistId = yandexId, Title = model.Title, Description = model.Description, ShareSlug = Guid.NewGuid().ToString("N"), CreatedAt = DateTime.UtcNow }; Db.SharedPlaylists.Add(playlist); await Db.SaveChangesAsync(); Navigation.NavigateTo("/myplaylists"); } catch (Exception ex) { // показать ошибку (можно добавить переменную errorMessage) } finally { isLoading = false; } } }