@page "/shared/{token}" @attribute [Authorize] @using PlaylistShared.Shared.DTO @using PlaylistShared.Shared.Enums @using PlaylistShared.Pwa.Services @using PlaylistShared.Shared.Models @inject HttpClient Http @inject ISnackbar Snackbar @inject NavigationManager Navigation @inject AuthenticationStateProvider AuthProvider @if (_loading) { } else if (_playlist == null) { Плейлист не найден или у вас нет доступа } else { @_playlist.Title Владелец: @_playlist.Creator?.UserName @if (_isCreator) { Настройки доступа Все Только авторизованные Все Только авторизованные Только добавивший Все Только авторизованные Только добавивший @if (_savingPermissions) { } else { Сохранить } } Функционал управления треками в разработке } @code { [Parameter] public string Token { get; set; } private SharedPlaylistDto? _playlist; private bool _loading = true; private bool _isCreator; private UpdatePermissionsDto _editPermissions = new(); private bool _savingPermissions; private string? _currentUserId; protected override async Task OnInitializedAsync() { var authState = await AuthProvider.GetAuthenticationStateAsync(); _currentUserId = authState.User.FindFirst(System.Security.Claims.ClaimTypes.NameIdentifier)?.Value; await LoadPlaylist(); } private async Task LoadPlaylist() { try { var response = await Http.GetFromJsonAsync>($"/api/sharedplaylist/{Token}"); if (response?.Success == true) { _playlist = response.Data; _isCreator = _playlist.CreatorUserId.ToString() == _currentUserId; if (_isCreator) { _editPermissions = new UpdatePermissionsDto { ViewPermission = _playlist.ViewPermission, AddPermission = _playlist.AddPermission, RemovePermission = _playlist.RemovePermission }; } } else { Snackbar.Add(response?.Error?.Message ?? "Не удалось загрузить плейлист", Severity.Error); } } catch (Exception ex) { Snackbar.Add($"Ошибка: {ex.Message}", Severity.Error); } finally { _loading = false; StateHasChanged(); } } private async Task SavePermissions() { _savingPermissions = true; try { var response = await Http.PutAsJsonAsync($"/api/sharedplaylist/{Token}/permissions", _editPermissions); if (response.IsSuccessStatusCode) { var result = await response.Content.ReadFromJsonAsync>(); if (result?.Success == true) { _playlist = result.Data; Snackbar.Add("Права доступа обновлены", Severity.Success); } else { Snackbar.Add(result?.Error?.Message ?? "Ошибка обновления", Severity.Error); } } else { Snackbar.Add("Ошибка сохранения прав", Severity.Error); } } catch (Exception ex) { Snackbar.Add($"Ошибка: {ex.Message}", Severity.Error); } finally { _savingPermissions = false; } } }