fix добавление трека
This commit is contained in:
@@ -37,10 +37,10 @@
|
|||||||
Breakpoint="Breakpoint.Sm"
|
Breakpoint="Breakpoint.Sm"
|
||||||
Loading="@_isSearching">
|
Loading="@_isSearching">
|
||||||
<RowTemplate>
|
<RowTemplate>
|
||||||
<MudTd Style="width: 100%;">
|
<MudTd Class="pa-1" Style="width: 100%;">
|
||||||
<TrackItem Track="@context" PlaylistShareToken="@ShareToken" />
|
<TrackItem Track="@context" PlaylistShareToken="@ShareToken" />
|
||||||
</MudTd>
|
</MudTd>
|
||||||
<MudTd>
|
<MudTd Class="pa-1">
|
||||||
<MudToggleIconButton Toggled="@ExistingTrackIds.Contains(context.TrackId)"
|
<MudToggleIconButton Toggled="@ExistingTrackIds.Contains(context.TrackId)"
|
||||||
Icon="@Icons.Material.Filled.AddCircle"
|
Icon="@Icons.Material.Filled.AddCircle"
|
||||||
Color="@Color.Primary"
|
Color="@Color.Primary"
|
||||||
@@ -145,11 +145,11 @@
|
|||||||
{
|
{
|
||||||
await RemoveTrackById(track.TrackId);
|
await RemoveTrackById(track.TrackId);
|
||||||
await OnTrackRemoved.InvokeAsync();
|
await OnTrackRemoved.InvokeAsync();
|
||||||
Snackbar.Add($"Трек \"{track.Title}\" удален", Severity.Success);
|
Snackbar.Add($"Трек \"{track.Title}\" удален", Severity.Success, c => c.SnackbarVariant = Variant.Outlined);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Snackbar.Add($"Ошибка добавления: {ex.Message}", Severity.Error);
|
Snackbar.Add($"{ex.Message}", Severity.Error);
|
||||||
ExistingTrackIds.Add(track.TrackId);
|
ExistingTrackIds.Add(track.TrackId);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
@@ -158,6 +158,21 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task RemoveTrackById(string trackId)
|
||||||
|
{
|
||||||
|
var request = new UpdateTrackListRequest { TrackIds = new List<string> { trackId } };
|
||||||
|
var response = await Http.PostAsJsonAsync($"/api/sharedplaylist/{ShareToken}/remove-tracks", request);
|
||||||
|
if (response.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
await OnTrackAdded.InvokeAsync(); // уведомляем родителя, что список треков изменился
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var error = await response.Content.ReadFromJsonAsync<ApiResponse<object>>();
|
||||||
|
throw new Exception(error?.Error?.Message ?? "Ошибка удаления трека");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private async Task AddTrack(YandexTrack track)
|
private async Task AddTrack(YandexTrack track)
|
||||||
{
|
{
|
||||||
if (ExistingTrackIds.Contains(track.TrackId)) return;
|
if (ExistingTrackIds.Contains(track.TrackId)) return;
|
||||||
@@ -167,11 +182,11 @@
|
|||||||
{
|
{
|
||||||
await AddTrackById(track.TrackId);
|
await AddTrackById(track.TrackId);
|
||||||
await OnTrackAdded.InvokeAsync();
|
await OnTrackAdded.InvokeAsync();
|
||||||
Snackbar.Add($"Трек \"{track.Title}\" добавлен", Severity.Success);
|
Snackbar.Add($"Трек \"{track.Title}\" добавлен", Severity.Success, c => c.SnackbarVariant = Variant.Outlined);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Snackbar.Add($"Ошибка добавления: {ex.Message}", Severity.Error);
|
Snackbar.Add($"{ex.Message}", Severity.Error);
|
||||||
ExistingTrackIds.Remove(track.TrackId);
|
ExistingTrackIds.Remove(track.TrackId);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
@@ -181,8 +196,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async Task AddTrackById(string trackId)
|
private async Task AddTrackById(string trackId)
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
var request = new UpdateTrackListRequest { TrackIds = new List<string> { trackId } };
|
var request = new UpdateTrackListRequest { TrackIds = new List<string> { trackId } };
|
||||||
var response = await Http.PostAsJsonAsync($"/api/sharedplaylist/{ShareToken}/add-tracks", request);
|
var response = await Http.PostAsJsonAsync($"/api/sharedplaylist/{ShareToken}/add-tracks", request);
|
||||||
@@ -193,42 +206,7 @@
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
var error = await response.Content.ReadFromJsonAsync<ApiResponse<object>>();
|
var error = await response.Content.ReadFromJsonAsync<ApiResponse<object>>();
|
||||||
Snackbar.Add(error?.Error?.Message ?? "Ошибка добавления трека", Severity.Error);
|
throw new Exception(error?.Error?.Message ?? "Ошибка добавления трека");
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Snackbar.Add($"Ошибка: {ex.Message}", Severity.Error);
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
StateHasChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task RemoveTrackById(string trackId)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var request = new UpdateTrackListRequest { TrackIds = new List<string> { trackId } };
|
|
||||||
var response = await Http.PostAsJsonAsync($"/api/sharedplaylist/{ShareToken}/remove-tracks", request);
|
|
||||||
if (response.IsSuccessStatusCode)
|
|
||||||
{
|
|
||||||
await OnTrackAdded.InvokeAsync(); // уведомляем родителя, что список треков изменился
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var error = await response.Content.ReadFromJsonAsync<ApiResponse<object>>();
|
|
||||||
Snackbar.Add(error?.Error?.Message ?? "Ошибка удаления трека", Severity.Error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Snackbar.Add($"Ошибка: {ex.Message}", Severity.Error);
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
StateHasChanged();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -45,12 +45,12 @@
|
|||||||
Breakpoint="Breakpoint.Sm"
|
Breakpoint="Breakpoint.Sm"
|
||||||
Loading="@_tracksLoading">
|
Loading="@_tracksLoading">
|
||||||
<RowTemplate>
|
<RowTemplate>
|
||||||
<MudTd Style="width: 100%;">
|
<MudTd Class="pa-1" Style="width: 100%;">
|
||||||
<TrackItem Track="@context" PlaylistShareToken="Token" CanPlay="@_canPlay" />
|
<TrackItem Track="@context" PlaylistShareToken="@Token" CanPlay="@_canPlay" />
|
||||||
</MudTd>
|
</MudTd>
|
||||||
@if (_canRemove)
|
@if (_canRemove)
|
||||||
{
|
{
|
||||||
<MudTd>
|
<MudTd Class="pa-1">
|
||||||
<MudIconButton Icon="@Icons.Material.Filled.Delete" Color="Color.Error" OnClick="() => RemoveTrack(context)" />
|
<MudIconButton Icon="@Icons.Material.Filled.Delete" Color="Color.Error" OnClick="() => RemoveTrack(context)" />
|
||||||
</MudTd>
|
</MudTd>
|
||||||
}
|
}
|
||||||
@@ -70,7 +70,7 @@
|
|||||||
</MudCardHeader>
|
</MudCardHeader>
|
||||||
|
|
||||||
<MudCardContent Class="flex-grow-1 d-flex flex-column" Style="overflow: hidden;">
|
<MudCardContent Class="flex-grow-1 d-flex flex-column" Style="overflow: hidden;">
|
||||||
<AddTrackSection ShareToken="Token" OnTrackAdded="LoadTracks" OnTrackRemoved="LoadTracks" ExistingTrackIds="_existingTrackIds" />
|
<AddTrackSection ShareToken="@Token" OnTrackAdded="LoadTracks" OnTrackRemoved="LoadTracks" ExistingTrackIds="_existingTrackIds" />
|
||||||
</MudCardContent>
|
</MudCardContent>
|
||||||
</MudCard>
|
</MudCard>
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user