Added the Root Folders tab

This commit is contained in:
2023-08-08 10:50:06 -06:00
parent d8a93efd5a
commit 9142d5ab3e
5 changed files with 175 additions and 36 deletions
+46 -6
View File
@@ -13,7 +13,7 @@ use crate::models::{
use crate::network::radarr_network::RadarrEvent;
pub struct RadarrData {
pub root_folders: Vec<RootFolder>,
pub root_folders: StatefulTable<RootFolder>,
pub disk_space_vec: Vec<DiskSpace>,
pub version: String,
pub start_time: DateTime<Utc>,
@@ -217,7 +217,7 @@ impl RadarrData {
impl Default for RadarrData {
fn default() -> RadarrData {
RadarrData {
root_folders: Vec::new(),
root_folders: StatefulTable::default(),
disk_space_vec: Vec::new(),
version: String::default(),
start_time: DateTime::default(),
@@ -259,7 +259,7 @@ impl Default for RadarrData {
title: "Library".to_owned(),
route: ActiveRadarrBlock::Movies.into(),
help: String::default(),
contextual_help: Some("<a> add | <e> edit | <s> search | <f> filter | <r> refresh | <u> update all | <enter> details | <esc> cancel filter | <del> delete"
contextual_help: Some("<a> add | <e> edit | <del> delete | <s> search | <f> filter | <r> refresh | <u> update all | <enter> details | <esc> cancel filter"
.to_owned()),
},
TabRoute {
@@ -275,6 +275,12 @@ impl Default for RadarrData {
contextual_help: Some("<s> search | <e> edit | <f> filter | <r> refresh | <u> update all | <enter> details | <esc> cancel filter"
.to_owned()),
},
TabRoute {
title: "Root Folders".to_owned(),
route: ActiveRadarrBlock::RootFolders.into(),
help: String::default(),
contextual_help: Some("<a> add | <del> delete | <r> refresh".to_owned()),
},
]),
movie_info_tabs: TabState::new(vec![
TabRoute {
@@ -361,6 +367,7 @@ pub enum ActiveRadarrBlock {
MovieDetails,
MovieHistory,
Movies,
RootFolders,
UpdateAndScanPrompt,
UpdateAllCollectionsPrompt,
UpdateAllMoviesPrompt,
@@ -561,6 +568,11 @@ impl App {
.dispatch_network_event(RadarrEvent::GetDownloads.into())
.await;
}
ActiveRadarrBlock::RootFolders => {
self
.dispatch_network_event(RadarrEvent::GetRootFolders.into())
.await;
}
ActiveRadarrBlock::Movies => {
self
.dispatch_network_event(RadarrEvent::GetMovies.into())
@@ -1046,7 +1058,7 @@ mod tests {
fn test_radarr_data_defaults() {
let radarr_data = RadarrData::default();
assert_eq!(radarr_data.root_folders, Vec::new());
assert!(radarr_data.root_folders.items.is_empty());
assert_eq!(radarr_data.disk_space_vec, Vec::new());
assert!(radarr_data.version.is_empty());
assert_eq!(radarr_data.start_time, <DateTime<Utc>>::default());
@@ -1087,7 +1099,7 @@ mod tests {
assert!(!radarr_data.is_filtering);
assert!(!radarr_data.prompt_confirm);
assert_eq!(radarr_data.main_tabs.tabs.len(), 3);
assert_eq!(radarr_data.main_tabs.tabs.len(), 4);
assert_str_eq!(radarr_data.main_tabs.tabs[0].title, "Library");
assert_eq!(
@@ -1096,7 +1108,7 @@ mod tests {
);
assert!(radarr_data.main_tabs.tabs[0].help.is_empty());
assert_eq!(radarr_data.main_tabs.tabs[0].contextual_help,
Some("<a> add | <e> edit | <s> search | <f> filter | <r> refresh | <u> update all | <enter> details | <esc> cancel filter | <del> delete".to_owned()));
Some("<a> add | <e> edit | <del> delete | <s> search | <f> filter | <r> refresh | <u> update all | <enter> details | <esc> cancel filter".to_owned()));
assert_str_eq!(radarr_data.main_tabs.tabs[1].title, "Downloads");
assert_eq!(
@@ -1118,6 +1130,17 @@ mod tests {
assert_eq!(radarr_data.main_tabs.tabs[2].contextual_help,
Some("<s> search | <e> edit | <f> filter | <r> refresh | <u> update all | <enter> details | <esc> cancel filter".to_owned()));
assert_str_eq!(radarr_data.main_tabs.tabs[3].title, "Root Folders");
assert_eq!(
radarr_data.main_tabs.tabs[3].route,
ActiveRadarrBlock::RootFolders.into()
);
assert!(radarr_data.main_tabs.tabs[3].help.is_empty());
assert_eq!(
radarr_data.main_tabs.tabs[3].contextual_help,
Some("<a> add | <del> delete | <r> refresh".to_owned())
);
assert_eq!(radarr_data.movie_info_tabs.tabs.len(), 6);
assert_str_eq!(radarr_data.movie_info_tabs.tabs[0].title, "Details");
@@ -1506,6 +1529,23 @@ mod tests {
assert_eq!(app.tick_count, 0);
}
#[tokio::test]
async fn test_dispatch_by_root_folders_block() {
let (mut app, mut sync_network_rx) = construct_app_unit();
app
.dispatch_by_radarr_block(&ActiveRadarrBlock::RootFolders)
.await;
assert!(app.is_loading);
assert_eq!(
sync_network_rx.recv().await.unwrap(),
RadarrEvent::GetRootFolders.into()
);
assert!(!app.data.radarr_data.prompt_confirm);
assert_eq!(app.tick_count, 0);
}
#[tokio::test]
async fn test_dispatch_by_movies_block() {
let (mut app, mut sync_network_rx) = construct_app_unit();