refactored managarr table initializer so a mutable app reference can be passed

This commit is contained in:
2026-01-05 09:49:03 -07:00
parent 50d4ddfa28
commit c8a06f3601
35 changed files with 955 additions and 775 deletions
+19 -14
View File
@@ -80,13 +80,14 @@ fn draw_add_movie_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
Layout::vertical([Constraint::Length(3), Constraint::Fill(0)])
.margin(1)
.areas(area);
let block_content = &app
let block_content = app
.data
.radarr_data
.add_movie_search
.as_ref()
.expect("add_movie_search must be populated")
.text;
.text
.clone();
let offset = app
.data
.radarr_data
@@ -95,6 +96,16 @@ fn draw_add_movie_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
.expect("add_movie_search must be populated")
.offset
.load(Ordering::SeqCst);
let ui_scroll_tick_count = app.ui_scroll_tick_count;
let library_tmdb_ids: Vec<i64> = app
.data
.radarr_data
.movies
.items
.iter()
.map(|m| m.tmdb_id)
.collect();
let search_results_row_mapping = |movie: &AddMovieSearchResult| {
let (hours, minutes) = convert_runtime(movie.runtime);
let imdb_rating = movie
@@ -123,14 +134,7 @@ fn draw_add_movie_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
} else {
format!("{rotten_tomatoes_rating}%")
};
let in_library = if app
.data
.radarr_data
.movies
.items
.iter()
.any(|mov| mov.tmdb_id == movie.tmdb_id)
{
let in_library = if library_tmdb_ids.contains(&movie.tmdb_id) {
""
} else {
""
@@ -139,7 +143,7 @@ fn draw_add_movie_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
movie.title.scroll_left_or_reset(
get_width_from_percentage(area, 27),
*movie == current_selection,
app.ui_scroll_tick_count == 0,
ui_scroll_tick_count == 0,
);
Row::new(vec![
@@ -157,7 +161,7 @@ fn draw_add_movie_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
match active_radarr_block {
ActiveRadarrBlock::AddMovieSearchInput => {
let search_box = InputBox::new(block_content)
let search_box = InputBox::new(&block_content)
.offset(offset)
.block(title_block_centered("Add Movie"));
@@ -181,7 +185,8 @@ fn draw_add_movie_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
| ActiveRadarrBlock::AddMovieAlreadyInLibrary
| ActiveRadarrBlock::AddMovieTagsInput => {
let search_results_table = ManagarrTable::new(
app.data.radarr_data.add_searched_movies.as_mut(),
app,
|app| app.data.radarr_data.add_searched_movies.as_mut(),
search_results_row_mapping,
)
.loading(is_loading)
@@ -212,7 +217,7 @@ fn draw_add_movie_search(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
}
f.render_widget(
InputBox::new(block_content)
InputBox::new(&block_content)
.offset(offset)
.block(title_block_centered("Add Movie")),
search_box_area,