Refactored the movie_details_popup data into the MovieDetailsModal so things are neater and to follow the same format I've already established for other modals

This commit is contained in:
2023-08-11 16:37:21 -06:00
parent f7cb832095
commit ec9d23ede7
14 changed files with 1207 additions and 529 deletions
+19 -2
View File
@@ -1,12 +1,29 @@
use crate::models::radarr_models::{Collection, MinimumAvailability, Monitor, Movie, RootFolder};
use crate::models::radarr_models::{
Collection, Credit, MinimumAvailability, Monitor, Movie, MovieHistoryItem, Release, ReleaseField,
RootFolder,
};
use crate::models::servarr_data::radarr::radarr_data::RadarrData;
use crate::models::{HorizontallyScrollableText, StatefulList};
use crate::models::{HorizontallyScrollableText, ScrollableText, StatefulList, StatefulTable};
use strum::IntoEnumIterator;
#[cfg(test)]
#[path = "modals_tests.rs"]
mod modals_tests;
#[derive(Default)]
pub struct MovieDetailsModal {
pub movie_details: ScrollableText,
pub file_details: String,
pub audio_details: String,
pub video_details: String,
pub movie_history: StatefulTable<MovieHistoryItem>,
pub movie_cast: StatefulTable<Credit>,
pub movie_crew: StatefulTable<Credit>,
pub movie_releases: StatefulTable<Release>,
pub movie_releases_sort: StatefulList<ReleaseField>,
pub sort_ascending: Option<bool>,
}
#[derive(Default)]
pub struct EditMovieModal {
pub minimum_availability_list: StatefulList<MinimumAvailability>,
+6 -33
View File
@@ -6,11 +6,11 @@ use crate::app::radarr::radarr_context_clues::{
SYSTEM_CONTEXT_CLUES,
};
use crate::models::radarr_models::{
AddMovieSearchResult, Collection, CollectionMovie, Credit, DiskSpace, DownloadRecord, Indexer,
IndexerSettings, Movie, MovieHistoryItem, QueueEvent, Release, ReleaseField, RootFolder, Task,
AddMovieSearchResult, Collection, CollectionMovie, DiskSpace, DownloadRecord, Indexer,
IndexerSettings, Movie, QueueEvent, RootFolder, Task,
};
use crate::models::servarr_data::radarr::modals::{
AddMovieModal, EditCollectionModal, EditMovieModal,
AddMovieModal, EditCollectionModal, EditMovieModal, MovieDetailsModal,
};
use crate::models::{
BlockSelectionState, HorizontallyScrollableText, Route, ScrollableText, StatefulList,
@@ -43,15 +43,6 @@ pub struct RadarrData<'a> {
pub indexer_settings: Option<IndexerSettings>,
pub quality_profile_map: BiMap<u64, String>,
pub tags_map: BiMap<u64, String>,
pub movie_details: ScrollableText,
pub file_details: String,
pub audio_details: String,
pub video_details: String,
pub movie_history: StatefulTable<MovieHistoryItem>,
pub movie_cast: StatefulTable<Credit>,
pub movie_crew: StatefulTable<Credit>,
pub movie_releases: StatefulTable<Release>,
pub movie_releases_sort: StatefulList<ReleaseField>,
pub collections: StatefulTable<Collection>,
pub filtered_collections: StatefulTable<Collection>,
pub collection_movies: StatefulTable<CollectionMovie>,
@@ -69,7 +60,7 @@ pub struct RadarrData<'a> {
pub edit_movie_modal: Option<EditMovieModal>,
pub edit_collection_modal: Option<EditCollectionModal>,
pub edit_root_folder: Option<HorizontallyScrollableText>,
pub sort_ascending: Option<bool>,
pub movie_details_modal: Option<MovieDetailsModal>,
pub prompt_confirm: bool,
pub delete_movie_files: bool,
pub add_list_exclusion: bool,
@@ -100,16 +91,7 @@ impl<'a> RadarrData<'a> {
}
pub fn reset_movie_info_tabs(&mut self) {
self.file_details = String::default();
self.audio_details = String::default();
self.video_details = String::default();
self.movie_details = ScrollableText::default();
self.movie_history = StatefulTable::default();
self.movie_cast = StatefulTable::default();
self.movie_crew = StatefulTable::default();
self.movie_releases = StatefulTable::default();
self.movie_releases_sort = StatefulList::default();
self.sort_ascending = None;
self.movie_details_modal = None;
self.movie_info_tabs.index = 0;
}
}
@@ -130,15 +112,6 @@ impl<'a> Default for RadarrData<'a> {
indexer_settings: None,
quality_profile_map: BiMap::default(),
tags_map: BiMap::default(),
file_details: String::default(),
audio_details: String::default(),
video_details: String::default(),
movie_details: ScrollableText::default(),
movie_history: StatefulTable::default(),
movie_cast: StatefulTable::default(),
movie_crew: StatefulTable::default(),
movie_releases: StatefulTable::default(),
movie_releases_sort: StatefulList::default(),
collections: StatefulTable::default(),
filtered_collections: StatefulTable::default(),
collection_movies: StatefulTable::default(),
@@ -154,7 +127,7 @@ impl<'a> Default for RadarrData<'a> {
edit_movie_modal: None,
edit_collection_modal: None,
edit_root_folder: None,
sort_ascending: None,
movie_details_modal: None,
is_searching: false,
is_filtering: false,
prompt_confirm: false,
@@ -87,15 +87,6 @@ mod tests {
assert!(radarr_data.indexer_settings.is_none());
assert!(radarr_data.quality_profile_map.is_empty());
assert!(radarr_data.tags_map.is_empty());
assert!(radarr_data.file_details.is_empty());
assert!(radarr_data.audio_details.is_empty());
assert!(radarr_data.video_details.is_empty());
assert!(radarr_data.movie_details.get_text().is_empty());
assert!(radarr_data.movie_history.items.is_empty());
assert!(radarr_data.movie_cast.items.is_empty());
assert!(radarr_data.movie_crew.items.is_empty());
assert!(radarr_data.movie_releases.items.is_empty());
assert!(radarr_data.movie_releases_sort.items.is_empty());
assert!(radarr_data.collections.items.is_empty());
assert!(radarr_data.filtered_collections.items.is_empty());
assert!(radarr_data.collection_movies.items.is_empty());
@@ -111,7 +102,7 @@ mod tests {
assert!(radarr_data.edit_movie_modal.is_none());
assert!(radarr_data.edit_collection_modal.is_none());
assert!(radarr_data.edit_root_folder.is_none());
assert!(radarr_data.sort_ascending.is_none());
assert!(radarr_data.movie_details_modal.is_none());
assert!(!radarr_data.is_searching);
assert!(!radarr_data.is_filtering);
assert!(!radarr_data.prompt_confirm);
@@ -4,10 +4,32 @@ pub mod utils {
AddMovieSearchResult, Collection, CollectionMovie, Credit, Movie, MovieHistoryItem, Release,
ReleaseField,
};
use crate::models::servarr_data::radarr::modals::MovieDetailsModal;
use crate::models::servarr_data::radarr::radarr_data::RadarrData;
use crate::models::{HorizontallyScrollableText, ScrollableText};
pub fn create_test_radarr_data<'a>() -> RadarrData<'a> {
let mut movie_details_modal = MovieDetailsModal {
movie_details: ScrollableText::with_string("test movie details".to_owned()),
..MovieDetailsModal::default()
};
movie_details_modal
.movie_history
.set_items(vec![MovieHistoryItem::default()]);
movie_details_modal
.movie_cast
.set_items(vec![Credit::default()]);
movie_details_modal
.movie_crew
.set_items(vec![Credit::default()]);
movie_details_modal
.movie_releases
.set_items(vec![Release::default()]);
movie_details_modal
.movie_releases_sort
.set_items(vec![ReleaseField::default()]);
movie_details_modal.sort_ascending = Some(true);
let mut radarr_data = RadarrData {
is_searching: true,
is_filtering: true,
@@ -16,25 +38,10 @@ pub mod utils {
search: Some("test search".into()),
filter: Some("test filter".into()),
edit_root_folder: Some("test path".into()),
file_details: "test file details".to_owned(),
audio_details: "test audio details".to_owned(),
video_details: "test video details".to_owned(),
movie_details: ScrollableText::with_string("test movie details".to_owned()),
movie_details_modal: Some(movie_details_modal),
..RadarrData::default()
};
radarr_data
.movie_history
.set_items(vec![MovieHistoryItem::default()]);
radarr_data.movie_cast.set_items(vec![Credit::default()]);
radarr_data.movie_crew.set_items(vec![Credit::default()]);
radarr_data
.movie_releases
.set_items(vec![Release::default()]);
radarr_data.movie_info_tabs.index = 1;
radarr_data
.movie_releases_sort
.set_items(vec![ReleaseField::default()]);
radarr_data.sort_ascending = Some(true);
radarr_data
.filtered_movies
.set_items(vec![Movie::default()]);
@@ -79,16 +86,7 @@ pub mod utils {
#[macro_export]
macro_rules! assert_movie_info_tabs_reset {
($radarr_data:expr) => {
assert!($radarr_data.file_details.is_empty());
assert!($radarr_data.audio_details.is_empty());
assert!($radarr_data.video_details.is_empty());
assert!($radarr_data.movie_details.get_text().is_empty());
assert!($radarr_data.movie_history.items.is_empty());
assert!($radarr_data.movie_cast.items.is_empty());
assert!($radarr_data.movie_crew.items.is_empty());
assert!($radarr_data.movie_releases.items.is_empty());
assert!($radarr_data.movie_releases_sort.items.is_empty());
assert!($radarr_data.sort_ascending.is_none());
assert!($radarr_data.movie_details_modal.is_none());
assert_eq!($radarr_data.movie_info_tabs.index, 0);
};
}