@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;
}
}
}