Доработан поиск артиста

This commit is contained in:
FrigaT
2026-04-16 18:53:14 +03:00
parent 5a8ae3d680
commit 280c164626
12 changed files with 203 additions and 119 deletions

View File

@@ -40,14 +40,14 @@
{
<MudExpansionPanels>
@* Секция исполнителей *@
@if (ShouldShowSection(TrackSearchType.Artist))
@if (_searchResult?.Artists != null)
{
<MudExpansionPanel Text="Исполнители" Expanded="true">
<MudGrid>
@foreach (var artist in _searchResult.Artists!)
@foreach (var artist in _searchResult.Artists)
{
<MudItem xs="12" sm="6" md="4" lg="3">
<ArtistCard Item="artist" OnClick="() => SearchTracksByEntity(artist.Id, TrackSearchType.Artist)" />
<MudItem xs="12" sm="6" md="3" lg="2">
<ArtistCard Item="artist" OnClick="() => SearchTracksByEntity(artist.Id, artist.Name, TrackSearchType.Artist)" />
</MudItem>
}
</MudGrid>
@@ -55,14 +55,14 @@
}
@* Секция альбомов *@
@if (ShouldShowSection(TrackSearchType.Album))
@if (_searchResult?.Albums != null)
{
<MudExpansionPanel Text="Альбомы" Expanded="true">
<MudGrid>
@foreach (var album in _searchResult.Albums!)
@foreach (var album in _searchResult.Albums)
{
<MudItem xs="12" sm="6" md="4" lg="3">
<AddTrackSection Item="album" OnClick="() => SearchTracksByEntity(album.Id, TrackSearchType.Album)" />
<MudItem xs="12" sm="6" md="3" lg="2">
<AlbumCard Item="album" OnClick="() => SearchTracksByEntity(album.Id, album.Title, TrackSearchType.Album)" />
</MudItem>
}
</MudGrid>
@@ -70,14 +70,14 @@
}
@* Секция плейлистов *@
@if (ShouldShowSection(TrackSearchType.Playlist))
@if (_searchResult?.Playlists != null)
{
<MudExpansionPanel Text="Плейлисты" Expanded="true">
<MudGrid>
@foreach (var playlist in _searchResult.Playlists!)
@foreach (var playlist in _searchResult.Playlists)
{
<MudItem xs="12" sm="6" md="4" lg="3">
<PlaylistCard Item="playlist" OnClick="() => SearchTracksByEntity(playlist.Kind, TrackSearchType.Playlist)" />
<MudItem xs="12" sm="6" md="3" lg="2">
<PlaylistCard Item="playlist" OnClick="() => SearchTracksByEntity(playlist.Uuid, playlist.Title, TrackSearchType.Playlist)" />
</MudItem>
}
</MudGrid>
@@ -85,7 +85,7 @@
}
@* Секция треков *@
@if (ShouldShowSection(TrackSearchType.Track))
@if (_searchResult?.Tracks != null)
{
<MudExpansionPanel Text="Треки" Expanded="true">
<MudTable Items="@_searchResult.Tracks"
@@ -123,22 +123,9 @@
private string _searchQuery = "";
private bool _isSearching = false;
private bool _isFirstSearch = true;
private TrackSearchType _searchType = TrackSearchType.All;
private YandexSearchResult? _searchResult = null;
private bool ShouldShowSection(TrackSearchType sectionType)
{
return sectionType switch
{
TrackSearchType.Track => _searchResult?.Tracks?.Any() == true,
TrackSearchType.Album => _searchResult?.Albums?.Any() == true,
TrackSearchType.Playlist => _searchResult?.Playlists?.Any() == true,
TrackSearchType.Artist => _searchResult?.Artists?.Any() == true,
_ => false
};
}
private async Task OnSearchQueryChanged()
{
await SearchTracks(byId: false);
@@ -155,7 +142,6 @@
if (string.IsNullOrWhiteSpace(query))
{
_searchResult = null;
_isFirstSearch = true;
return;
}
@@ -176,7 +162,6 @@
}
}
_isFirstSearch = false;
_isSearching = true;
_searchResult = null;
StateHasChanged();
@@ -212,10 +197,11 @@
}
}
private async Task SearchTracksByEntity(string entityId, TrackSearchType entityType)
private async Task SearchTracksByEntity(string entityId, string title, TrackSearchType entityType)
{
// Переключаем тип на треки и ищем по ID
_searchType = TrackSearchType.Track;
// Переключаем тип и ищем по ID
_searchType = entityType;
_searchQuery = title;
await SearchTracks(byId: true, forcedQuery: entityId);
}