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
+60 -41
View File
@@ -15,7 +15,7 @@ use crate::models::radarr_models::{
QueueEvent, Release, ReleaseDownloadBody, RootFolder, SystemStatus, Tag, Task, Update,
};
use crate::models::servarr_data::radarr::modals::{
AddMovieModal, EditCollectionModal, EditMovieModal,
AddMovieModal, EditCollectionModal, EditMovieModal, MovieDetailsModal,
};
use crate::models::servarr_data::radarr::radarr_data::ActiveRadarrBlock;
use crate::models::{HorizontallyScrollableText, Route, Scrollable, ScrollableText};
@@ -451,7 +451,14 @@ impl<'a, 'b> Network<'a, 'b> {
title,
indexer_id,
..
} = app.data.radarr_data.movie_releases.current_selection();
} = app
.data
.radarr_data
.movie_details_modal
.as_ref()
.unwrap()
.movie_releases
.current_selection();
(guid.clone(), title.clone(), indexer_id.as_u64().unwrap())
};
@@ -693,8 +700,10 @@ impl<'a, 'b> Network<'a, 'b> {
.filter(|credit| credit.credit_type == CreditType::Crew)
.collect();
app.data.radarr_data.movie_cast.set_items(cast_vec);
app.data.radarr_data.movie_crew.set_items(crew_vec);
debug!("Assuming the movie_details_modal is already a Some and was created by the get_movie_details request");
app.data.radarr_data.movie_details_modal.as_mut().unwrap().movie_cast.set_items(cast_vec);
app.data.radarr_data.movie_details_modal.as_mut().unwrap().movie_crew.set_items(crew_vec);
})
.await;
}
@@ -913,42 +922,45 @@ impl<'a, 'b> Network<'a, 'b> {
let status = get_movie_status(has_file, &app.data.radarr_data.downloads.items, id);
let collection = collection.unwrap_or_default();
app.data.radarr_data.movie_details = ScrollableText::with_string(formatdoc!(
"Title: {}
Year: {}
Runtime: {}h {}m
Rating: {}
Collection: {}
Status: {}
Description: {}
TMDB: {}
IMDB: {}
Rotten Tomatoes: {}
Quality Profile: {}
Size: {:.2} GB
Path: {}
Studio: {}
Genres: {}",
title,
year,
hours,
minutes,
certification.unwrap_or_default(),
collection.title,
status,
overview,
tmdb_rating,
imdb_rating,
rotten_tomatoes_rating,
quality_profile,
size,
path,
studio,
genres.join(", ")
));
let mut movie_details_modal = MovieDetailsModal {
movie_details: ScrollableText::with_string(formatdoc!(
"Title: {}
Year: {}
Runtime: {}h {}m
Rating: {}
Collection: {}
Status: {}
Description: {}
TMDB: {}
IMDB: {}
Rotten Tomatoes: {}
Quality Profile: {}
Size: {:.2} GB
Path: {}
Studio: {}
Genres: {}",
title,
year,
hours,
minutes,
certification.unwrap_or_default(),
collection.title,
status,
overview,
tmdb_rating,
imdb_rating,
rotten_tomatoes_rating,
quality_profile,
size,
path,
studio,
genres.join(", ")
)),
..MovieDetailsModal::default()
};
if let Some(file) = movie_file {
app.data.radarr_data.file_details = formatdoc!(
movie_details_modal.file_details = formatdoc!(
"Relative Path: {}
Absolute Path: {}
Size: {:.2} GB
@@ -960,7 +972,7 @@ impl<'a, 'b> Network<'a, 'b> {
);
if let Some(media_info) = file.media_info {
app.data.radarr_data.audio_details = formatdoc!(
movie_details_modal.audio_details = formatdoc!(
"Bitrate: {}
Channels: {:.1}
Codec: {}
@@ -973,7 +985,7 @@ impl<'a, 'b> Network<'a, 'b> {
media_info.audio_stream_count.as_u64().unwrap()
);
app.data.radarr_data.video_details = formatdoc!(
movie_details_modal.video_details = formatdoc!(
"Bit Depth: {}
Bitrate: {}
Codec: {}
@@ -991,6 +1003,8 @@ impl<'a, 'b> Network<'a, 'b> {
);
}
}
app.data.radarr_data.movie_details_modal = Some(movie_details_modal);
})
.await;
}
@@ -1007,11 +1021,15 @@ impl<'a, 'b> Network<'a, 'b> {
self
.handle_request::<(), Vec<MovieHistoryItem>>(request_props, |movie_history_vec, mut app| {
debug!("Assuming the movie_details_modal is already a Some and was created by the get_movie_details request");
let mut reversed_movie_history_vec = movie_history_vec.to_vec();
reversed_movie_history_vec.reverse();
app
.data
.radarr_data
.movie_details_modal
.as_mut()
.unwrap()
.movie_history
.set_items(reversed_movie_history_vec)
})
@@ -1101,7 +1119,8 @@ impl<'a, 'b> Network<'a, 'b> {
self
.handle_request::<(), Vec<Release>>(request_props, |release_vec, mut app| {
app.data.radarr_data.movie_releases.set_items(release_vec)
debug!("Assuming the movie_details_modal is already a Some and was created by the get_movie_details request");
app.data.radarr_data.movie_details_modal.as_mut().unwrap().movie_releases.set_items(release_vec);
})
.await;
}
+59 -55
View File
@@ -312,13 +312,23 @@ mod test {
.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());
network.handle_radarr_event(RadarrEvent::GetReleases).await;
async_server.assert_async().await;
assert_eq!(
app_arc.lock().await.data.radarr_data.movie_releases.items,
app_arc
.lock()
.await
.data
.radarr_data
.movie_details_modal
.as_ref()
.unwrap()
.movie_releases
.items,
vec![release()]
);
}
@@ -666,14 +676,18 @@ mod test {
.await;
async_server.assert_async().await;
assert!(app_arc
.lock()
.await
.data
.radarr_data
.movie_details_modal
.is_some());
let app = app_arc.lock().await;
let movie_details_modal = app.data.radarr_data.movie_details_modal.as_ref().unwrap();
assert_str_eq!(
app_arc
.lock()
.await
.data
.radarr_data
.movie_details
.get_text(),
movie_details_modal.movie_details.get_text(),
formatdoc!(
"Title: Test
Year: 2023
@@ -693,7 +707,7 @@ mod test {
)
);
assert_str_eq!(
app_arc.lock().await.data.radarr_data.file_details,
movie_details_modal.file_details,
formatdoc!(
"Relative Path: Test.mkv
Absolute Path: /nfs/movies/Test.mkv
@@ -702,7 +716,7 @@ mod test {
)
);
assert_str_eq!(
app_arc.lock().await.data.radarr_data.audio_details,
movie_details_modal.audio_details,
formatdoc!(
"Bitrate: 0
Channels: 7.1
@@ -712,7 +726,7 @@ mod test {
)
);
assert_str_eq!(
app_arc.lock().await.data.radarr_data.video_details,
movie_details_modal.video_details,
formatdoc!(
"Bit Depth: 10
Bitrate: 0
@@ -773,14 +787,18 @@ mod test {
.await;
async_server.assert_async().await;
assert!(app_arc
.lock()
.await
.data
.radarr_data
.movie_details_modal
.is_some());
let app = app_arc.lock().await;
let movie_details_modal = app.data.radarr_data.movie_details_modal.as_ref().unwrap();
assert_str_eq!(
app_arc
.lock()
.await
.data
.radarr_data
.movie_details
.get_text(),
movie_details_modal.movie_details.get_text(),
formatdoc!(
"Title: Test
Year: 2023
@@ -799,27 +817,9 @@ mod test {
Genres: cool, family, fun"
)
);
assert!(app_arc
.lock()
.await
.data
.radarr_data
.file_details
.is_empty());
assert!(app_arc
.lock()
.await
.data
.radarr_data
.audio_details
.is_empty());
assert!(app_arc
.lock()
.await
.data
.radarr_data
.video_details
.is_empty());
assert!(movie_details_modal.file_details.is_empty());
assert!(movie_details_modal.audio_details.is_empty());
assert!(movie_details_modal.video_details.is_empty());
}
#[tokio::test]
@@ -846,6 +846,7 @@ mod test {
.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());
network
@@ -854,7 +855,16 @@ mod test {
async_server.assert_async().await;
assert_eq!(
app_arc.lock().await.data.radarr_data.movie_history.items,
app_arc
.lock()
.await
.data
.radarr_data
.movie_details_modal
.as_ref()
.unwrap()
.movie_history
.items,
vec![movie_history_item()]
);
}
@@ -1420,21 +1430,19 @@ mod test {
.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());
network
.handle_radarr_event(RadarrEvent::GetMovieCredits)
.await;
let app = app_arc.lock().await;
let movie_details_modal = app.data.radarr_data.movie_details_modal.as_ref().unwrap();
async_server.assert_async().await;
assert_eq!(
app_arc.lock().await.data.radarr_data.movie_cast.items,
vec![cast_credit()]
);
assert_eq!(
app_arc.lock().await.data.radarr_data.movie_crew.items,
vec![crew_credit()]
);
assert_eq!(movie_details_modal.movie_cast.items, vec![cast_credit()]);
assert_eq!(movie_details_modal.movie_crew.items, vec![crew_credit()]);
}
#[tokio::test]
@@ -1701,7 +1709,6 @@ mod test {
let app = app_arc.lock().await;
assert!(app.data.radarr_data.edit_movie_modal.is_none());
assert!(app.data.radarr_data.movie_details.items.is_empty());
}
#[tokio::test]
@@ -1796,7 +1803,6 @@ mod test {
let app = app_arc.lock().await;
assert!(app.data.radarr_data.edit_collection_modal.is_none());
assert!(app.data.radarr_data.movie_details.items.is_empty());
}
#[tokio::test]
@@ -1812,13 +1818,11 @@ mod test {
RadarrEvent::DownloadRelease.resource(),
)
.await;
app_arc
.lock()
.await
.data
.radarr_data
let mut movie_details_modal = MovieDetailsModal::default();
movie_details_modal
.movie_releases
.set_items(vec![release()]);
app_arc.lock().await.data.radarr_data.movie_details_modal = Some(movie_details_modal);
app_arc
.lock()
.await