@using PlaylistShared.Shared.Enums @using PlaylistShared.Shared.Shared @inject HttpClient Http @inject ISnackbar Snackbar Настройки доступа Все Только авторизованные Все Только авторизованные Все Только авторизованные Только добавивший Все Только авторизованные Только добавивший Отмена @if (_saving) { } else { Сохранить } @code { [CascadingParameter] private IMudDialogInstance? MudDialog { get; set; } [Parameter] public string ShareToken { get; set; } = string.Empty; [Parameter] public UpdatePermissionsDto InitialPermissions { get; set; } = new(); [Parameter] public EventCallback OnPermissionsUpdated { get; set; } private UpdatePermissionsDto _permissions = new(); private bool _saving; protected override void OnInitialized() { _permissions = new UpdatePermissionsDto { ViewPermission = InitialPermissions.ViewPermission, PlayPermission = InitialPermissions.PlayPermission, AddPermission = InitialPermissions.AddPermission, RemovePermission = InitialPermissions.RemovePermission }; } private async Task Save() { _saving = true; try { var response = await Http.PutAsJsonAsync($"/api/sharedplaylist/{ShareToken}/permissions", _permissions); if (response.IsSuccessStatusCode) { var result = await response.Content.ReadFromJsonAsync>(); if (result?.Success == true) { Snackbar.Add("Настройки доступа сохранены", Severity.Success); await OnPermissionsUpdated.InvokeAsync(_permissions); MudDialog?.Close(DialogResult.Ok(_permissions)); } else { Snackbar.Add(result?.Error?.Message ?? "Ошибка сохранения", Severity.Error); } } else { Snackbar.Add("Ошибка сохранения прав", Severity.Error); } } catch (Exception ex) { Snackbar.Add($"Ошибка: {ex.Message}", Severity.Error); } finally { _saving = false; } } private void Cancel() => MudDialog?.Cancel(); }