Добален поиск по трекам

This commit is contained in:
FrigaT
2026-04-14 17:34:01 +03:00
parent b012fe37cc
commit 0369f0af07
8 changed files with 443 additions and 31 deletions

View File

@@ -0,0 +1,113 @@
@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();
}