refactor(v2): migrate get_releases_grid to v2

Path C: legacy command called client.get_releases_grid for the
artist detail view's release-type pagination grid. No existing
v2 equivalent, so add v2_get_releases_grid via QbzCore ->
QobuzClient::get_releases_grid directly.

cc
This commit is contained in:
vicrodh committed 2026-04-26 11:51:33 -06:00
1 parent 7d89ae77ef
commit eb17cc6d22
5 files changed
+74 -7

No files matched your search

+34 -1
View File
@@ -4,7 +4,7 @@ use qbz_models::{
Album, Artist, ArtistAlbums, AwardPageData, DiscoverAlbum, DiscoverData,
DiscoverPlaylistsResponse, DiscoverResponse, GenreInfo, LabelExploreResponse,
LabelGetListResponse, LabelListPage, LabelPageData, LabelStoryResponse, PageArtistResponse,
Playlist, PlaylistTag, SearchResultsPage, Track, TracksContainer,
Playlist, PlaylistTag, ReleasesGridResponse, SearchResultsPage, Track, TracksContainer,
};
use crate::artist_blacklist::BlacklistState;
@@ -487,6 +487,39 @@ pub async fn v2_get_artist_tracks(
.map_err(RuntimeError::Internal)
}
/// Get an artist's releases grid paginated by release_type (V2 - uses QbzCore).
#[tauri::command]
#[allow(non_snake_case)]
pub async fn v2_get_releases_grid(
artistId: u64,
releaseType: String,
limit: Option<u32>,
offset: Option<u32>,
sort: Option<String>,
bridge: State<'_, CoreBridgeState>,
runtime: State<'_, RuntimeManagerState>,
) -> Result<ReleasesGridResponse, RuntimeError> {
runtime
.manager()
.check_requirements(CommandRequirement::RequiresCoreBridgeAuth)
.await?;
let limit = limit.unwrap_or(25);
let offset = offset.unwrap_or(0);
log::info!(
"[V2] get_releases_grid: {} type={} limit={} offset={}",
artistId,
releaseType,
limit,
offset
);
let bridge = bridge.get().await;
bridge
.get_releases_grid(artistId, &releaseType, limit, offset, sort.as_deref())
.await
.map_err(RuntimeError::Internal)
}
/// Get label page (aggregated: top tracks, releases, playlists, artists)
#[tauri::command]
#[allow(non_snake_case)]
+17 -2
View File
@@ -16,8 +16,8 @@ use qbz_models::{
Album, Artist, ArtistAlbums, DiscoverAlbum, DiscoverData, DiscoverPlaylistsResponse,
DiscoverResponse, GenreInfo, LabelExploreResponse, LabelGetListResponse, LabelListPage,
LabelPageData, LabelStoryResponse, PageArtistResponse, Playlist, PlaylistTag, Quality,
QueueState, QueueTrack, RepeatMode, SearchResultsPage, StreamUrl, Track, TracksContainer,
UserSession,
QueueState, QueueTrack, ReleasesGridResponse, RepeatMode, SearchResultsPage, StreamUrl, Track,
TracksContainer, UserSession,
};
use qbz_player::{PlaybackState, Player};
@@ -595,6 +595,21 @@ impl CoreBridge {
.map_err(|e| e.to_string())
}
/// Get an artist's releases grid (paginated by `release_type`).
pub async fn get_releases_grid(
&self,
artist_id: u64,
release_type: &str,
limit: u32,
offset: u32,
sort: Option<&str>,
) -> Result<ReleasesGridResponse, String> {
self.core
.get_releases_grid(artist_id, release_type, limit, offset, sort)
.await
.map_err(|e| e.to_string())
}
/// Get label page (aggregated: top tracks, releases, playlists, artists)
pub async fn get_label_page(&self, label_id: u64) -> Result<LabelPageData, String> {
self.core
+1
View File
@@ -1706,6 +1706,7 @@ pub fn run() {
commands_v2::v2_get_artist_albums,
commands_v2::v2_get_artist_detail,
commands_v2::v2_get_artist_tracks,
commands_v2::v2_get_releases_grid,
commands_v2::v2_get_label_page,
commands_v2::v2_get_label_explore,
commands_v2::v2_get_label_albums,