From ba38dcdc15763259318c42c9bf6778457f858b63 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Tue, 17 Dec 2024 20:52:31 -0700 Subject: [PATCH] fix(radarr): Pass in the movie ID alongside the GetReleases event when publishing to the networking channel --- src/app/radarr/mod.rs | 2 +- src/app/radarr/radarr_tests.rs | 3 ++- src/cli/radarr/mod.rs | 2 +- src/cli/radarr/radarr_command_tests.rs | 2 +- src/network/radarr_network.rs | 11 +++++------ src/network/radarr_network_tests.rs | 24 +++++------------------- 6 files changed, 15 insertions(+), 29 deletions(-) diff --git a/src/app/radarr/mod.rs b/src/app/radarr/mod.rs index 44de97b..850210b 100644 --- a/src/app/radarr/mod.rs +++ b/src/app/radarr/mod.rs @@ -132,7 +132,7 @@ impl<'a> App<'a> { ActiveRadarrBlock::ManualSearch => match self.data.radarr_data.movie_details_modal.as_ref() { Some(movie_details_modal) if movie_details_modal.movie_releases.items.is_empty() => { self - .dispatch_network_event(RadarrEvent::GetReleases(None).into()) + .dispatch_network_event(RadarrEvent::GetReleases(self.extract_movie_id().await).into()) .await; } _ => (), diff --git a/src/app/radarr/radarr_tests.rs b/src/app/radarr/radarr_tests.rs index e0dd627..87e2b34 100644 --- a/src/app/radarr/radarr_tests.rs +++ b/src/app/radarr/radarr_tests.rs @@ -465,6 +465,7 @@ mod tests { #[tokio::test] async fn test_dispatch_by_manual_search_block() { let (mut app, mut sync_network_rx) = construct_app_unit(); + app.data.radarr_data.movies.set_items(vec![Movie { id: 1, ..Movie::default() }]); app.data.radarr_data.movie_details_modal = Some(MovieDetailsModal::default()); app @@ -474,7 +475,7 @@ mod tests { assert!(app.is_loading); assert_eq!( sync_network_rx.recv().await.unwrap(), - RadarrEvent::GetReleases(None).into() + RadarrEvent::GetReleases(1).into() ); assert!(!app.data.radarr_data.prompt_confirm); assert_eq!(app.tick_count, 0); diff --git a/src/cli/radarr/mod.rs b/src/cli/radarr/mod.rs index 2c26ed6..bb12aba 100644 --- a/src/cli/radarr/mod.rs +++ b/src/cli/radarr/mod.rs @@ -217,7 +217,7 @@ impl<'a, 'b> CliCommandHandler<'a, 'b, RadarrCommand> for RadarrCliHandler<'a, ' println!("Searching for releases. This may take a minute..."); let resp = self .network - .handle_network_event(RadarrEvent::GetReleases(Some(movie_id)).into()) + .handle_network_event(RadarrEvent::GetReleases(movie_id).into()) .await?; serde_json::to_string_pretty(&resp)? } diff --git a/src/cli/radarr/radarr_command_tests.rs b/src/cli/radarr/radarr_command_tests.rs index 03c7d61..6bb2ab0 100644 --- a/src/cli/radarr/radarr_command_tests.rs +++ b/src/cli/radarr/radarr_command_tests.rs @@ -342,7 +342,7 @@ mod tests { mock_network .expect_handle_network_event() .with(eq::( - RadarrEvent::GetReleases(Some(expected_movie_id)).into(), + RadarrEvent::GetReleases(expected_movie_id).into(), )) .times(1) .returning(|_| { diff --git a/src/network/radarr_network.rs b/src/network/radarr_network.rs index 349397f..167b07a 100644 --- a/src/network/radarr_network.rs +++ b/src/network/radarr_network.rs @@ -62,7 +62,7 @@ pub enum RadarrEvent { GetDiskSpace, GetQualityProfiles, GetQueuedEvents, - GetReleases(Option), + GetReleases(i64), GetRootFolders, GetSecurityConfig, GetStatus, @@ -1413,10 +1413,9 @@ impl<'a, 'b> Network<'a, 'b> { .await } - async fn get_movie_releases(&mut self, movie_id: Option) -> Result> { - let (id, movie_id_param) = self.extract_movie_id(movie_id).await; - info!("Fetching releases for movie with ID: {id}"); - let event = RadarrEvent::GetReleases(None); + async fn get_movie_releases(&mut self, movie_id: i64) -> Result> { + info!("Fetching releases for movie with ID: {movie_id}"); + let event = RadarrEvent::GetReleases(movie_id); let request_props = self .request_props_from( @@ -1424,7 +1423,7 @@ impl<'a, 'b> Network<'a, 'b> { RequestMethod::Get, None::<()>, None, - Some(movie_id_param), + Some(format!("movieId={movie_id}")), ) .await; diff --git a/src/network/radarr_network_tests.rs b/src/network/radarr_network_tests.rs index 885b44a..57e33b6 100644 --- a/src/network/radarr_network_tests.rs +++ b/src/network/radarr_network_tests.rs @@ -179,7 +179,7 @@ mod test { #[rstest] fn test_resource_release( - #[values(RadarrEvent::GetReleases(None), RadarrEvent::DownloadRelease(RadarrReleaseDownloadBody::default()))] + #[values(RadarrEvent::GetReleases(0), RadarrEvent::DownloadRelease(RadarrReleaseDownloadBody::default()))] event: RadarrEvent, ) { assert_str_eq!(event.resource(), "/release"); @@ -507,23 +507,16 @@ mod test { None, Some(release_json), None, - RadarrEvent::GetReleases(None), + RadarrEvent::GetReleases(1), None, Some("movieId=1"), ) .await; - app_arc - .lock() - .await - .data - .radarr_data - .movies - .set_items(vec![movie()]); app_arc.lock().await.data.radarr_data.movie_details_modal = Some(MovieDetailsModal::default()); let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new()); if let RadarrSerdeable::Releases(releases_vec) = network - .handle_radarr_event(RadarrEvent::GetReleases(None)) + .handle_radarr_event(RadarrEvent::GetReleases(1)) .await .unwrap() { @@ -567,22 +560,15 @@ mod test { None, Some(release_json), None, - RadarrEvent::GetReleases(None), + RadarrEvent::GetReleases(1), None, Some("movieId=1"), ) .await; - app_arc - .lock() - .await - .data - .radarr_data - .movies - .set_items(vec![movie()]); let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new()); assert!(network - .handle_radarr_event(RadarrEvent::GetReleases(None)) + .handle_radarr_event(RadarrEvent::GetReleases(1)) .await .is_ok());