From 64fad3b9bc549556f72e31656ff2757a098cb966 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Thu, 22 Jan 2026 13:12:51 -0700 Subject: [PATCH] refactor: Removed the filtering of monitored_storage_paths from the networking module and migrated all of it to the UI --- src/cli/lidarr/list_command_handler.rs | 6 +- src/cli/radarr/list_command_handler.rs | 6 +- src/cli/sonarr/list_command_handler.rs | 6 +- .../system/lidarr_system_network_tests.rs | 70 +------------------ src/network/lidarr_network/system/mod.rs | 23 +----- src/network/radarr_network/system/mod.rs | 23 +----- .../system/radarr_system_network_tests.rs | 67 ------------------ src/network/sonarr_network/system/mod.rs | 23 +----- .../system/sonarr_system_network_tests.rs | 68 ------------------ 9 files changed, 7 insertions(+), 285 deletions(-) diff --git a/src/cli/lidarr/list_command_handler.rs b/src/cli/lidarr/list_command_handler.rs index 710dcbe..e09658f 100644 --- a/src/cli/lidarr/list_command_handler.rs +++ b/src/cli/lidarr/list_command_handler.rs @@ -2,7 +2,6 @@ use std::sync::Arc; use anyhow::Result; use clap::{Subcommand, arg}; -use indoc::formatdoc; use serde_json::json; use tokio::sync::Mutex; @@ -60,10 +59,7 @@ pub enum LidarrListCommand { Artists, #[command(about = "List all items in the Lidarr blocklist")] Blocklist, - #[command(about = formatdoc!( - "List disk space details for all provisioned root folders in Lidarr - (returns unfiltered response; i.e. ignores 'monitored_storage_paths' config field)") - )] + #[command(about = "List disk space details for all provisioned root folders in Lidarr")] DiskSpace, #[command(about = "List all active downloads in Lidarr")] Downloads { diff --git a/src/cli/radarr/list_command_handler.rs b/src/cli/radarr/list_command_handler.rs index fefb0cb..15dd974 100644 --- a/src/cli/radarr/list_command_handler.rs +++ b/src/cli/radarr/list_command_handler.rs @@ -2,7 +2,6 @@ use std::sync::Arc; use anyhow::Result; use clap::{Subcommand, command}; -use indoc::formatdoc; use tokio::sync::Mutex; use crate::{ @@ -28,10 +27,7 @@ pub enum RadarrListCommand { #[arg(long, help = "How many downloads to fetch", default_value_t = 500)] count: u64, }, - #[command(about = formatdoc!( - "List disk space details for all provisioned root folders in Radarr - (returns unfiltered response; i.e. ignores 'monitored_storage_paths' config field)") - )] + #[command(about = "List disk space details for all provisioned root folders in Radarr")] DiskSpace, #[command(about = "Fetch all Radarr history events")] History { diff --git a/src/cli/sonarr/list_command_handler.rs b/src/cli/sonarr/list_command_handler.rs index 8245b83..7bafcff 100644 --- a/src/cli/sonarr/list_command_handler.rs +++ b/src/cli/sonarr/list_command_handler.rs @@ -2,7 +2,6 @@ use std::sync::Arc; use anyhow::Result; use clap::Subcommand; -use indoc::formatdoc; use tokio::sync::Mutex; use crate::{ @@ -26,10 +25,7 @@ pub enum SonarrListCommand { #[arg(long, help = "How many downloads to fetch", default_value_t = 500)] count: u64, }, - #[command(about = formatdoc!( - "List disk space details for all provisioned root folders in Sonarr - (returns unfiltered response; i.e. ignores 'monitored_storage_paths' config field)") - )] + #[command(about = "List disk space details for all provisioned root folders in Sonarr")] DiskSpace, #[command(about = "List the episodes for the series with the given ID")] Episodes { diff --git a/src/network/lidarr_network/system/lidarr_system_network_tests.rs b/src/network/lidarr_network/system/lidarr_system_network_tests.rs index 4eb47b6..596df7b 100644 --- a/src/network/lidarr_network/system/lidarr_system_network_tests.rs +++ b/src/network/lidarr_network/system/lidarr_system_network_tests.rs @@ -1,6 +1,5 @@ #[cfg(test)] mod tests { - use crate::app::{App, ServarrConfig}; use crate::models::HorizontallyScrollableText; use crate::models::lidarr_models::{LidarrSerdeable, LidarrTask, LidarrTaskName, SystemStatus}; use crate::models::servarr_models::{ @@ -12,8 +11,6 @@ mod tests { use chrono::DateTime; use pretty_assertions::assert_eq; use serde_json::json; - use std::sync::Arc; - use tokio::sync::Mutex; #[tokio::test] async fn test_handle_get_diskspace_event() { @@ -35,11 +32,6 @@ mod tests { .await; app.lock().await.server_tabs.set_index(2); let mut network = test_network(&app); - let filtered_disk_space_vec = vec![DiskSpace { - path: Some("/path1".to_owned()), - free_space: 1111, - total_space: 2222, - }]; let disk_space_vec = vec![ DiskSpace { path: Some("/path1".to_owned()), @@ -63,69 +55,9 @@ mod tests { assert_eq!( app.lock().await.data.lidarr_data.disk_space_vec, - filtered_disk_space_vec - ); - assert_eq!(disk_spaces, disk_space_vec); - } - - #[tokio::test] - async fn test_handle_get_lidarr_diskspace_event_populates_data_with_all_storage_when_monitored_storage_paths_is_empty() - { - let (mock, base_app, _server) = MockServarrApi::get() - .returns(json!([ - { - "path": "/path1", - "freeSpace": 1111, - "totalSpace": 2222, - }, - { - "path": "/path2", - "freeSpace": 3333, - "totalSpace": 4444 - } - ])) - .build_for(LidarrEvent::GetDiskSpace) - .await; - let mut app = App::test_default(); - let servarr_config = ServarrConfig { - monitored_storage_paths: Some(vec![]), - ..base_app.lock().await.server_tabs.tabs[2] - .config - .as_ref() - .unwrap() - .clone() - }; - app.server_tabs.tabs[2].config = Some(servarr_config); - app.server_tabs.set_index(2); - let app_arc = Arc::new(Mutex::new(app)); - - let mut network = test_network(&app_arc); - let disk_space_vec = vec![ - DiskSpace { - path: Some("/path1".to_owned()), - free_space: 1111, - total_space: 2222, - }, - DiskSpace { - path: Some("/path2".to_owned()), - free_space: 3333, - total_space: 4444, - }, - ]; - - let LidarrSerdeable::DiskSpaces(disk_space) = network - .handle_lidarr_event(LidarrEvent::GetDiskSpace) - .await - .unwrap() - else { - panic!("Expected DiskSpaces") - }; - mock.assert_async().await; - assert_eq!( - app_arc.lock().await.data.lidarr_data.disk_space_vec, disk_space_vec ); - assert_eq!(disk_space, disk_space_vec); + assert_eq!(disk_spaces, disk_space_vec); } #[tokio::test] diff --git a/src/network/lidarr_network/system/mod.rs b/src/network/lidarr_network/system/mod.rs index 0ca3fcc..fb1b1cf 100644 --- a/src/network/lidarr_network/system/mod.rs +++ b/src/network/lidarr_network/system/mod.rs @@ -101,28 +101,7 @@ impl Network<'_, '_> { self .handle_request::<(), Vec>(request_props, |disk_space_vec, mut app| { - if let Some(paths) = app - .server_tabs - .get_active_config() - .as_ref() - .expect("Servarr config is undefined") - .monitored_storage_paths - .as_ref() - && !paths.is_empty() - { - app.data.lidarr_data.disk_space_vec = disk_space_vec - .into_iter() - .filter(|it| { - if let Some(path) = it.path.as_ref() { - paths.contains(path) - } else { - true - } - }) - .collect(); - } else { - app.data.lidarr_data.disk_space_vec = disk_space_vec; - } + app.data.lidarr_data.disk_space_vec = disk_space_vec; }) .await } diff --git a/src/network/radarr_network/system/mod.rs b/src/network/radarr_network/system/mod.rs index fce837e..6091a55 100644 --- a/src/network/radarr_network/system/mod.rs +++ b/src/network/radarr_network/system/mod.rs @@ -27,28 +27,7 @@ impl Network<'_, '_> { self .handle_request::<(), Vec>(request_props, |disk_space_vec, mut app| { - if let Some(paths) = app - .server_tabs - .get_active_config() - .as_ref() - .expect("Servarr config is undefined") - .monitored_storage_paths - .as_ref() - && !paths.is_empty() - { - app.data.radarr_data.disk_space_vec = disk_space_vec - .into_iter() - .filter(|it| { - if let Some(path) = it.path.as_ref() { - paths.contains(path) - } else { - true - } - }) - .collect(); - } else { - app.data.radarr_data.disk_space_vec = disk_space_vec; - } + app.data.radarr_data.disk_space_vec = disk_space_vec; }) .await } diff --git a/src/network/radarr_network/system/radarr_system_network_tests.rs b/src/network/radarr_network/system/radarr_system_network_tests.rs index a163821..19f15b9 100644 --- a/src/network/radarr_network/system/radarr_system_network_tests.rs +++ b/src/network/radarr_network/system/radarr_system_network_tests.rs @@ -1,6 +1,5 @@ #[cfg(test)] mod tests { - use crate::app::{App, ServarrConfig}; use crate::models::HorizontallyScrollableText; use crate::models::radarr_models::{RadarrSerdeable, RadarrTask, RadarrTaskName, SystemStatus}; use crate::models::servarr_models::{ @@ -12,8 +11,6 @@ mod tests { use chrono::DateTime; use pretty_assertions::{assert_eq, assert_str_eq}; use serde_json::json; - use std::sync::Arc; - use tokio::sync::Mutex; #[tokio::test] async fn test_handle_get_radarr_diskspace_event() { @@ -33,11 +30,6 @@ mod tests { .build_for(RadarrEvent::GetDiskSpace) .await; let mut network = test_network(&app); - let filtered_disk_space_vec = vec![DiskSpace { - path: Some("/path1".to_owned()), - free_space: 1111, - total_space: 2222, - }]; let disk_space_vec = vec![ DiskSpace { path: Some("/path1".to_owned()), @@ -61,65 +53,6 @@ mod tests { mock.assert_async().await; assert_eq!( app.lock().await.data.radarr_data.disk_space_vec, - filtered_disk_space_vec - ); - assert_eq!(disk_space, disk_space_vec); - } - - #[tokio::test] - async fn test_handle_get_radarr_diskspace_event_populates_data_with_all_storage_when_monitored_storage_paths_is_empty() - { - let (mock, base_app, _server) = MockServarrApi::get() - .returns(json!([ - { - "path": "/path1", - "freeSpace": 1111, - "totalSpace": 2222, - }, - { - "path": "/path2", - "freeSpace": 3333, - "totalSpace": 4444 - } - ])) - .build_for(RadarrEvent::GetDiskSpace) - .await; - let mut app = App::test_default(); - let servarr_config = ServarrConfig { - monitored_storage_paths: Some(vec![]), - ..base_app.lock().await.server_tabs.tabs[0] - .config - .as_ref() - .unwrap() - .clone() - }; - app.server_tabs.tabs[0].config = Some(servarr_config); - let app_arc = Arc::new(Mutex::new(app)); - - let mut network = test_network(&app_arc); - let disk_space_vec = vec![ - DiskSpace { - path: Some("/path1".to_owned()), - free_space: 1111, - total_space: 2222, - }, - DiskSpace { - path: Some("/path2".to_owned()), - free_space: 3333, - total_space: 4444, - }, - ]; - - let RadarrSerdeable::DiskSpaces(disk_space) = network - .handle_radarr_event(RadarrEvent::GetDiskSpace) - .await - .unwrap() - else { - panic!("Expected DiskSpaces") - }; - mock.assert_async().await; - assert_eq!( - app_arc.lock().await.data.radarr_data.disk_space_vec, disk_space_vec ); assert_eq!(disk_space, disk_space_vec); diff --git a/src/network/sonarr_network/system/mod.rs b/src/network/sonarr_network/system/mod.rs index f31be6d..d2c1ed6 100644 --- a/src/network/sonarr_network/system/mod.rs +++ b/src/network/sonarr_network/system/mod.rs @@ -101,28 +101,7 @@ impl Network<'_, '_> { self .handle_request::<(), Vec>(request_props, |disk_space_vec, mut app| { - if let Some(paths) = app - .server_tabs - .get_active_config() - .as_ref() - .expect("Servarr config is undefined") - .monitored_storage_paths - .as_ref() - && !paths.is_empty() - { - app.data.sonarr_data.disk_space_vec = disk_space_vec - .into_iter() - .filter(|it| { - if let Some(path) = it.path.as_ref() { - paths.contains(path) - } else { - true - } - }) - .collect(); - } else { - app.data.sonarr_data.disk_space_vec = disk_space_vec; - } + app.data.sonarr_data.disk_space_vec = disk_space_vec; }) .await } diff --git a/src/network/sonarr_network/system/sonarr_system_network_tests.rs b/src/network/sonarr_network/system/sonarr_system_network_tests.rs index 1ba5e3e..5742f22 100644 --- a/src/network/sonarr_network/system/sonarr_system_network_tests.rs +++ b/src/network/sonarr_network/system/sonarr_system_network_tests.rs @@ -1,6 +1,5 @@ #[cfg(test)] mod tests { - use crate::app::{App, ServarrConfig}; use crate::models::HorizontallyScrollableText; use crate::models::servarr_models::{ DiskSpace, HostConfig, LogResponse, QueueEvent, SecurityConfig, Update, @@ -12,8 +11,6 @@ mod tests { use chrono::DateTime; use pretty_assertions::{assert_eq, assert_str_eq}; use serde_json::json; - use std::sync::Arc; - use tokio::sync::Mutex; #[tokio::test] async fn test_handle_get_sonarr_host_config_event() { @@ -130,11 +127,6 @@ mod tests { .await; app.lock().await.server_tabs.next(); let mut network = test_network(&app); - let filtered_disk_space_vec = vec![DiskSpace { - path: Some("/path1".to_owned()), - free_space: 1111, - total_space: 2222, - }]; let disk_space_vec = vec![ DiskSpace { path: Some("/path1".to_owned()), @@ -158,66 +150,6 @@ mod tests { mock.assert_async().await; assert_eq!( app.lock().await.data.sonarr_data.disk_space_vec, - filtered_disk_space_vec - ); - assert_eq!(disk_space, disk_space_vec); - } - - #[tokio::test] - async fn test_handle_get_sonarr_diskspace_event_populates_data_with_all_storage_when_monitored_storage_paths_is_empty() - { - let (mock, base_app, _server) = MockServarrApi::get() - .returns(json!([ - { - "path": "/path1", - "freeSpace": 1111, - "totalSpace": 2222, - }, - { - "path": "/path2", - "freeSpace": 3333, - "totalSpace": 4444 - } - ])) - .build_for(SonarrEvent::GetDiskSpace) - .await; - let mut app = App::test_default(); - let servarr_config = ServarrConfig { - monitored_storage_paths: Some(vec![]), - ..base_app.lock().await.server_tabs.tabs[1] - .config - .as_ref() - .unwrap() - .clone() - }; - app.server_tabs.tabs[1].config = Some(servarr_config); - app.server_tabs.next(); - let app_arc = Arc::new(Mutex::new(app)); - - let mut network = test_network(&app_arc); - let disk_space_vec = vec![ - DiskSpace { - path: Some("/path1".to_owned()), - free_space: 1111, - total_space: 2222, - }, - DiskSpace { - path: Some("/path2".to_owned()), - free_space: 3333, - total_space: 4444, - }, - ]; - - let SonarrSerdeable::DiskSpaces(disk_space) = network - .handle_sonarr_event(SonarrEvent::GetDiskSpace) - .await - .unwrap() - else { - panic!("Expected DiskSpaces") - }; - mock.assert_async().await; - assert_eq!( - app_arc.lock().await.data.sonarr_data.disk_space_vec, disk_space_vec ); assert_eq!(disk_space, disk_space_vec);