Fixed race condition bug in loading movie history when user has not yet fetched the movie details
This commit is contained in:
@@ -979,9 +979,13 @@ impl<'a, 'b> Network<'a, 'b> {
|
|||||||
|
|
||||||
self
|
self
|
||||||
.handle_request::<(), Vec<MovieHistoryItem>>(request_props, |movie_history_vec, mut app| {
|
.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();
|
let mut reversed_movie_history_vec = movie_history_vec.to_vec();
|
||||||
reversed_movie_history_vec.reverse();
|
reversed_movie_history_vec.reverse();
|
||||||
|
|
||||||
|
if app.data.radarr_data.movie_details_modal.is_none() {
|
||||||
|
app.data.radarr_data.movie_details_modal = Some(MovieDetailsModal::default())
|
||||||
|
}
|
||||||
|
|
||||||
app
|
app
|
||||||
.data
|
.data
|
||||||
.radarr_data
|
.radarr_data
|
||||||
|
|||||||
@@ -876,6 +876,52 @@ mod test {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[tokio::test]
|
||||||
|
async fn test_handle_get_movie_history_event_empty_movie_details_modal() {
|
||||||
|
let movie_history_item_json = json!([{
|
||||||
|
"sourceTitle": "Test",
|
||||||
|
"quality": { "quality": { "name": "HD - 1080p" }},
|
||||||
|
"languages": [ { "name": "English" } ],
|
||||||
|
"date": "2022-12-30T07:37:56Z",
|
||||||
|
"eventType": "grabbed"
|
||||||
|
}]);
|
||||||
|
let resource = format!("{}?movieId=1", RadarrEvent::GetMovieHistory.resource());
|
||||||
|
let (async_server, app_arc, _server) = mock_radarr_api(
|
||||||
|
RequestMethod::Get,
|
||||||
|
None,
|
||||||
|
Some(movie_history_item_json),
|
||||||
|
&resource,
|
||||||
|
)
|
||||||
|
.await;
|
||||||
|
app_arc
|
||||||
|
.lock()
|
||||||
|
.await
|
||||||
|
.data
|
||||||
|
.radarr_data
|
||||||
|
.movies
|
||||||
|
.set_items(vec![movie()]);
|
||||||
|
let mut network = Network::new(&app_arc, CancellationToken::new());
|
||||||
|
|
||||||
|
network
|
||||||
|
.handle_radarr_event(RadarrEvent::GetMovieHistory)
|
||||||
|
.await;
|
||||||
|
|
||||||
|
async_server.assert_async().await;
|
||||||
|
assert_eq!(
|
||||||
|
app_arc
|
||||||
|
.lock()
|
||||||
|
.await
|
||||||
|
.data
|
||||||
|
.radarr_data
|
||||||
|
.movie_details_modal
|
||||||
|
.as_ref()
|
||||||
|
.unwrap()
|
||||||
|
.movie_history
|
||||||
|
.items,
|
||||||
|
vec![movie_history_item()]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
async fn test_handle_get_collections_event() {
|
async fn test_handle_get_collections_event() {
|
||||||
let collection_json = json!([{
|
let collection_json = json!([{
|
||||||
|
|||||||
Reference in New Issue
Block a user