113 lines
5.0 KiB
Plaintext
113 lines
5.0 KiB
Plaintext
@using PlaylistShared.Shared.Enums
|
||
@using PlaylistShared.Shared.Shared
|
||
@inject HttpClient Http
|
||
@inject ISnackbar Snackbar
|
||
|
||
<MudDialog>
|
||
<TitleContent>
|
||
<MudText Typo="Typo.h6">Настройки доступа</MudText>
|
||
</TitleContent>
|
||
<DialogContent>
|
||
<MudGrid>
|
||
<MudItem xs="12" sm="6">
|
||
<MudSelect T="ViewPermission" Label="Просмотр" @bind-Value="_permissions.ViewPermission" Variant="Variant.Outlined" FullWidth="true">
|
||
<MudSelectItem Value="ViewPermission.Everyone">Все</MudSelectItem>
|
||
<MudSelectItem Value="ViewPermission.AuthorizedOnly">Только авторизованные</MudSelectItem>
|
||
</MudSelect>
|
||
</MudItem>
|
||
<MudItem xs="12" sm="6">
|
||
<MudSelect T="ViewPermission" Label="Воспроизведение" @bind-Value="_permissions.PlayPermission" Variant="Variant.Outlined" FullWidth="true">
|
||
<MudSelectItem Value="ViewPermission.Everyone">Все</MudSelectItem>
|
||
<MudSelectItem Value="ViewPermission.AuthorizedOnly">Только авторизованные</MudSelectItem>
|
||
</MudSelect>
|
||
</MudItem>
|
||
<MudItem xs="12" sm="6">
|
||
<MudSelect T="EditPermission" Label="Добавление треков" @bind-Value="_permissions.AddPermission" Variant="Variant.Outlined" FullWidth="true">
|
||
<MudSelectItem Value="EditPermission.Everyone">Все</MudSelectItem>
|
||
<MudSelectItem Value="EditPermission.AuthorizedOnly">Только авторизованные</MudSelectItem>
|
||
<MudSelectItem Value="EditPermission.AddedByUserOnly">Только добавивший</MudSelectItem>
|
||
</MudSelect>
|
||
</MudItem>
|
||
<MudItem xs="12" sm="6">
|
||
<MudSelect T="EditPermission" Label="Удаление треков" @bind-Value="_permissions.RemovePermission" Variant="Variant.Outlined" FullWidth="true">
|
||
<MudSelectItem Value="EditPermission.Everyone">Все</MudSelectItem>
|
||
<MudSelectItem Value="EditPermission.AuthorizedOnly">Только авторизованные</MudSelectItem>
|
||
<MudSelectItem Value="EditPermission.AddedByUserOnly">Только добавивший</MudSelectItem>
|
||
</MudSelect>
|
||
</MudItem>
|
||
</MudGrid>
|
||
</DialogContent>
|
||
<DialogActions>
|
||
<MudButton Variant="Variant.Text" Color="Color.Default" OnClick="Cancel">Отмена</MudButton>
|
||
<MudButton Variant="Variant.Filled" Color="Color.Primary" OnClick="Save" Disabled="_saving">
|
||
@if (_saving)
|
||
{
|
||
<MudProgressCircular Size="Size.Small" Indeterminate />
|
||
}
|
||
else
|
||
{
|
||
<span>Сохранить</span>
|
||
}
|
||
</MudButton>
|
||
</DialogActions>
|
||
</MudDialog>
|
||
|
||
@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<UpdatePermissionsDto> 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<ApiResponse<SharedPlaylistDto>>();
|
||
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();
|
||
} |