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:
5 files changed
+74
-7
No files matched your search
@@ -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)]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in new issue
Block a user