From 1232b76fff0a28c57e810beb6270661ac8d72821 Mon Sep 17 00:00:00 2001 From: Alexander Date: Sat, 9 May 2026 23:23:43 +0200 Subject: [PATCH] fix: match 'completed' download state and prefer format over quality The API returns download.state='completed' but convert_album only matched 'downloaded', causing monitored+downloaded albums to display as Wanted with 0 tracks. Also prefer download.format ('FLAC') over download.quality (empty) for the quality display. --- src/domain/conversions.rs | 17 +++++++++-------- src/proto/music_agregator.v1.rs | 4 ++++ 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/domain/conversions.rs b/src/domain/conversions.rs index 60f3f71..7255f95 100644 --- a/src/domain/conversions.rs +++ b/src/domain/conversions.rs @@ -22,13 +22,12 @@ pub fn convert_album(detail: AlbumDetail) -> Album { let monitored = monitor_state.is_monitored(); let (have, status, quality) = if let Some(download) = detail.download { - let have = if download.state == "downloaded" { - detail.total_tracks as u16 - } else { - 0 + let have = match download.state.as_str() { + "completed" | "downloaded" => detail.total_tracks as u16, + _ => 0, }; let status = match download.state.as_str() { - "downloaded" => AlbumStatus::Complete, + "completed" | "downloaded" => AlbumStatus::Complete, "downloading" => AlbumStatus::Partial, _ => { if monitored { @@ -38,10 +37,12 @@ pub fn convert_album(detail: AlbumDetail) -> Album { } } }; - let quality = if download.quality.is_empty() { - "—".to_string() - } else { + let quality = if !download.format.is_empty() { + download.format + } else if !download.quality.is_empty() { download.quality + } else { + "—".to_string() }; (have, status, quality) } else { diff --git a/src/proto/music_agregator.v1.rs b/src/proto/music_agregator.v1.rs index ad9edbc..b164079 100644 --- a/src/proto/music_agregator.v1.rs +++ b/src/proto/music_agregator.v1.rs @@ -16,6 +16,10 @@ pub struct IndexerOptions { #[derive(Clone, PartialEq, ::prost::Message)] pub struct MonitorAlbumResponse { #[prost(message, optional, tag = "1")] + pub album: ::core::option::Option, + #[prost(message, optional, tag = "2")] + pub artist: ::core::option::Option, + #[prost(message, optional, tag = "3")] pub release: ::core::option::Option, } #[derive(Clone, Copy, PartialEq, ::prost::Message)]