Refactored unnecessary data fields into Options to make the code cleaner, and to reduce the memory usage of the application
This commit is contained in:
@@ -43,10 +43,10 @@ impl From<&RadarrData<'_>> for EditMovieModal {
|
||||
minimum_availability,
|
||||
quality_profile_id,
|
||||
..
|
||||
} = if radarr_data.filtered_movies.items.is_empty() {
|
||||
radarr_data.movies.current_selection()
|
||||
} = if let Some(filtered_movies) = radarr_data.filtered_movies.as_ref() {
|
||||
filtered_movies.current_selection()
|
||||
} else {
|
||||
radarr_data.filtered_movies.current_selection()
|
||||
radarr_data.movies.current_selection()
|
||||
};
|
||||
|
||||
edit_movie_modal
|
||||
@@ -159,10 +159,10 @@ impl From<&RadarrData<'_>> for EditCollectionModal {
|
||||
minimum_availability,
|
||||
quality_profile_id,
|
||||
..
|
||||
} = if radarr_data.filtered_collections.items.is_empty() {
|
||||
radarr_data.collections.current_selection()
|
||||
} = if let Some(filtered_collections) = radarr_data.filtered_collections.as_ref() {
|
||||
filtered_collections.current_selection()
|
||||
} else {
|
||||
radarr_data.filtered_collections.current_selection()
|
||||
radarr_data.collections.current_selection()
|
||||
};
|
||||
|
||||
edit_collection_modal.path = root_folder_path.clone().unwrap_or_default().into();
|
||||
|
||||
@@ -21,7 +21,7 @@ mod test {
|
||||
(1111, "Any".to_owned()),
|
||||
]),
|
||||
tags_map: BiMap::from_iter([(1, "usenet".to_owned()), (2, "test".to_owned())]),
|
||||
filtered_movies: StatefulTable::default(),
|
||||
filtered_movies: None,
|
||||
..create_test_radarr_data()
|
||||
};
|
||||
let movie = Movie {
|
||||
@@ -34,7 +34,9 @@ mod test {
|
||||
};
|
||||
|
||||
if test_filtered_movies {
|
||||
radarr_data.filtered_movies.set_items(vec![movie]);
|
||||
let mut filtered_movies = StatefulTable::default();
|
||||
filtered_movies.set_items(vec![movie]);
|
||||
radarr_data.filtered_movies = Some(filtered_movies);
|
||||
} else {
|
||||
radarr_data.movies.set_items(vec![movie]);
|
||||
}
|
||||
@@ -111,7 +113,7 @@ mod test {
|
||||
(2222, "HD - 1080p".to_owned()),
|
||||
(1111, "Any".to_owned()),
|
||||
]),
|
||||
filtered_collections: StatefulTable::default(),
|
||||
filtered_collections: None,
|
||||
..create_test_radarr_data()
|
||||
};
|
||||
let collection = Collection {
|
||||
@@ -124,7 +126,9 @@ mod test {
|
||||
};
|
||||
|
||||
if test_filtered_collections {
|
||||
radarr_data.filtered_collections.set_items(vec![collection]);
|
||||
let mut filtered_collections = StatefulTable::default();
|
||||
filtered_collections.set_items(vec![collection]);
|
||||
radarr_data.filtered_collections = Some(filtered_collections);
|
||||
} else {
|
||||
radarr_data.collections.set_items(vec![collection]);
|
||||
}
|
||||
|
||||
@@ -35,33 +35,33 @@ pub struct RadarrData<'a> {
|
||||
pub version: String,
|
||||
pub start_time: DateTime<Utc>,
|
||||
pub movies: StatefulTable<Movie>,
|
||||
pub filtered_movies: StatefulTable<Movie>,
|
||||
pub add_searched_movies: StatefulTable<AddMovieSearchResult>,
|
||||
pub selected_block: BlockSelectionState<'a, ActiveRadarrBlock>,
|
||||
pub downloads: StatefulTable<DownloadRecord>,
|
||||
pub indexers: StatefulTable<Indexer>,
|
||||
pub indexer_settings: Option<IndexerSettings>,
|
||||
pub quality_profile_map: BiMap<u64, String>,
|
||||
pub tags_map: BiMap<u64, String>,
|
||||
pub collections: StatefulTable<Collection>,
|
||||
pub filtered_collections: StatefulTable<Collection>,
|
||||
pub collection_movies: StatefulTable<CollectionMovie>,
|
||||
pub logs: StatefulList<HorizontallyScrollableText>,
|
||||
pub log_details: StatefulList<HorizontallyScrollableText>,
|
||||
pub tasks: StatefulTable<Task>,
|
||||
pub queued_events: StatefulTable<QueueEvent>,
|
||||
pub updates: ScrollableText,
|
||||
pub prompt_confirm_action: Option<RadarrEvent>,
|
||||
pub main_tabs: TabState,
|
||||
pub movie_info_tabs: TabState,
|
||||
pub search: Option<HorizontallyScrollableText>,
|
||||
pub filter: Option<HorizontallyScrollableText>,
|
||||
pub add_movie_modal: Option<AddMovieModal>,
|
||||
pub add_searched_movies: Option<StatefulTable<AddMovieSearchResult>>,
|
||||
pub edit_movie_modal: Option<EditMovieModal>,
|
||||
pub edit_collection_modal: Option<EditCollectionModal>,
|
||||
pub edit_root_folder: Option<HorizontallyScrollableText>,
|
||||
pub filtered_collections: Option<StatefulTable<Collection>>,
|
||||
pub filtered_movies: Option<StatefulTable<Movie>>,
|
||||
pub indexer_settings: Option<IndexerSettings>,
|
||||
pub movie_details_modal: Option<MovieDetailsModal>,
|
||||
pub prompt_confirm: bool,
|
||||
pub prompt_confirm_action: Option<RadarrEvent>,
|
||||
pub delete_movie_files: bool,
|
||||
pub add_list_exclusion: bool,
|
||||
pub is_searching: bool,
|
||||
@@ -78,16 +78,16 @@ impl<'a> RadarrData<'a> {
|
||||
self.is_searching = false;
|
||||
self.search = None;
|
||||
self.filter = None;
|
||||
self.filtered_movies = StatefulTable::default();
|
||||
self.filtered_collections = StatefulTable::default();
|
||||
self.add_searched_movies = StatefulTable::default();
|
||||
self.filtered_movies = None;
|
||||
self.filtered_collections = None;
|
||||
self.add_searched_movies = None;
|
||||
}
|
||||
|
||||
pub fn reset_filter(&mut self) {
|
||||
self.is_filtering = false;
|
||||
self.filter = None;
|
||||
self.filtered_movies = StatefulTable::default();
|
||||
self.filtered_collections = StatefulTable::default();
|
||||
self.filtered_movies = None;
|
||||
self.filtered_collections = None;
|
||||
}
|
||||
|
||||
pub fn reset_movie_info_tabs(&mut self) {
|
||||
@@ -104,33 +104,33 @@ impl<'a> Default for RadarrData<'a> {
|
||||
version: String::default(),
|
||||
start_time: DateTime::default(),
|
||||
movies: StatefulTable::default(),
|
||||
add_searched_movies: StatefulTable::default(),
|
||||
selected_block: BlockSelectionState::default(),
|
||||
filtered_movies: StatefulTable::default(),
|
||||
downloads: StatefulTable::default(),
|
||||
indexers: StatefulTable::default(),
|
||||
indexer_settings: None,
|
||||
quality_profile_map: BiMap::default(),
|
||||
tags_map: BiMap::default(),
|
||||
collections: StatefulTable::default(),
|
||||
filtered_collections: StatefulTable::default(),
|
||||
collection_movies: StatefulTable::default(),
|
||||
logs: StatefulList::default(),
|
||||
log_details: StatefulList::default(),
|
||||
tasks: StatefulTable::default(),
|
||||
queued_events: StatefulTable::default(),
|
||||
updates: ScrollableText::default(),
|
||||
prompt_confirm_action: None,
|
||||
search: None,
|
||||
filter: None,
|
||||
add_movie_modal: None,
|
||||
add_searched_movies: None,
|
||||
edit_movie_modal: None,
|
||||
edit_collection_modal: None,
|
||||
edit_root_folder: None,
|
||||
filtered_collections: None,
|
||||
filtered_movies: None,
|
||||
indexer_settings: None,
|
||||
movie_details_modal: None,
|
||||
is_searching: false,
|
||||
is_filtering: false,
|
||||
prompt_confirm: false,
|
||||
prompt_confirm_action: None,
|
||||
delete_movie_files: false,
|
||||
add_list_exclusion: false,
|
||||
main_tabs: TabState::new(vec![
|
||||
|
||||
@@ -79,32 +79,32 @@ mod tests {
|
||||
assert!(radarr_data.version.is_empty());
|
||||
assert_eq!(radarr_data.start_time, <DateTime<Utc>>::default());
|
||||
assert!(radarr_data.movies.items.is_empty());
|
||||
assert!(radarr_data.add_searched_movies.items.is_empty());
|
||||
assert_eq!(radarr_data.selected_block, BlockSelectionState::default());
|
||||
assert!(radarr_data.filtered_movies.items.is_empty());
|
||||
assert!(radarr_data.downloads.items.is_empty());
|
||||
assert!(radarr_data.indexers.items.is_empty());
|
||||
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.collections.items.is_empty());
|
||||
assert!(radarr_data.filtered_collections.items.is_empty());
|
||||
assert!(radarr_data.collection_movies.items.is_empty());
|
||||
assert!(radarr_data.logs.items.is_empty());
|
||||
assert!(radarr_data.log_details.items.is_empty());
|
||||
assert!(radarr_data.tasks.items.is_empty());
|
||||
assert!(radarr_data.queued_events.items.is_empty());
|
||||
assert!(radarr_data.updates.get_text().is_empty());
|
||||
assert!(radarr_data.prompt_confirm_action.is_none());
|
||||
assert!(radarr_data.search.is_none());
|
||||
assert!(radarr_data.filter.is_none());
|
||||
assert!(radarr_data.add_movie_modal.is_none());
|
||||
assert!(radarr_data.add_searched_movies.is_none());
|
||||
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.filtered_collections.is_none());
|
||||
assert!(radarr_data.filtered_movies.is_none());
|
||||
assert!(radarr_data.indexer_settings.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_action.is_none());
|
||||
assert!(!radarr_data.prompt_confirm);
|
||||
assert!(!radarr_data.delete_movie_files);
|
||||
assert!(!radarr_data.add_list_exclusion);
|
||||
|
||||
@@ -6,7 +6,7 @@ pub mod utils {
|
||||
};
|
||||
use crate::models::servarr_data::radarr::modals::MovieDetailsModal;
|
||||
use crate::models::servarr_data::radarr::radarr_data::RadarrData;
|
||||
use crate::models::{HorizontallyScrollableText, ScrollableText};
|
||||
use crate::models::{HorizontallyScrollableText, ScrollableText, StatefulTable};
|
||||
|
||||
pub fn create_test_radarr_data<'a>() -> RadarrData<'a> {
|
||||
let mut movie_details_modal = MovieDetailsModal {
|
||||
@@ -39,17 +39,26 @@ pub mod utils {
|
||||
filter: Some("test filter".into()),
|
||||
edit_root_folder: Some("test path".into()),
|
||||
movie_details_modal: Some(movie_details_modal),
|
||||
filtered_movies: Some(StatefulTable::default()),
|
||||
filtered_collections: Some(StatefulTable::default()),
|
||||
add_searched_movies: Some(StatefulTable::default()),
|
||||
..RadarrData::default()
|
||||
};
|
||||
radarr_data.movie_info_tabs.index = 1;
|
||||
radarr_data
|
||||
.filtered_movies
|
||||
.as_mut()
|
||||
.unwrap()
|
||||
.set_items(vec![Movie::default()]);
|
||||
radarr_data
|
||||
.filtered_collections
|
||||
.as_mut()
|
||||
.unwrap()
|
||||
.set_items(vec![Collection::default()]);
|
||||
radarr_data
|
||||
.add_searched_movies
|
||||
.as_mut()
|
||||
.unwrap()
|
||||
.set_items(vec![AddMovieSearchResult::default()]);
|
||||
radarr_data
|
||||
.collection_movies
|
||||
@@ -67,9 +76,9 @@ pub mod utils {
|
||||
assert!(!$radarr_data.is_searching);
|
||||
assert!($radarr_data.search.is_none());
|
||||
assert!($radarr_data.filter.is_none());
|
||||
assert!($radarr_data.filtered_movies.items.is_empty());
|
||||
assert!($radarr_data.filtered_collections.items.is_empty());
|
||||
assert!($radarr_data.add_searched_movies.items.is_empty());
|
||||
assert!($radarr_data.filtered_movies.is_none());
|
||||
assert!($radarr_data.filtered_collections.is_none());
|
||||
assert!($radarr_data.add_searched_movies.is_none());
|
||||
};
|
||||
}
|
||||
|
||||
@@ -78,8 +87,8 @@ pub mod utils {
|
||||
($radarr_data:expr) => {
|
||||
assert!(!$radarr_data.is_filtering);
|
||||
assert!($radarr_data.filter.is_none());
|
||||
assert!($radarr_data.filtered_movies.items.is_empty());
|
||||
assert!($radarr_data.filtered_collections.items.is_empty());
|
||||
assert!($radarr_data.filtered_movies.is_none());
|
||||
assert!($radarr_data.filtered_collections.is_none());
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user