diff --git a/src/app/app_tests.rs b/src/app/app_tests.rs index b28b8f7..5b85e37 100644 --- a/src/app/app_tests.rs +++ b/src/app/app_tests.rs @@ -7,12 +7,12 @@ mod tests { use serial_test::serial; use tokio::sync::mpsc; - use crate::app::{interpolate_env_vars, App, AppConfig, Data, ServarrConfig}; + use crate::app::{App, AppConfig, Data, ServarrConfig, interpolate_env_vars}; use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, RadarrData}; use crate::models::servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, SonarrData}; use crate::models::{HorizontallyScrollableText, TabRoute}; - use crate::network::radarr_network::RadarrEvent; use crate::network::NetworkEvent; + use crate::network::radarr_network::RadarrEvent; use tokio_util::sync::CancellationToken; #[test] diff --git a/src/main.rs b/src/main.rs index b8f9b94..b611d22 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,39 +3,37 @@ extern crate assertables; use anyhow::Result; -use clap::{crate_authors, crate_description, crate_name, crate_version, CommandFactory, Parser}; +use clap::{CommandFactory, Parser, crate_authors, crate_description, crate_name, crate_version}; use clap_complete::generate; use crossterm::execute; use crossterm::terminal::{ - disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen, + EnterAlternateScreen, LeaveAlternateScreen, disable_raw_mode, enable_raw_mode, }; use log::{debug, error, warn}; use network::NetworkTrait; -use ratatui::backend::CrosstermBackend; use ratatui::Terminal; +use ratatui::backend::CrosstermBackend; use reqwest::Client; use std::panic::PanicHookInfo; use std::path::PathBuf; -use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::Arc; -use tokio::time::sleep; -use std::time::{Duration, Instant}; +use std::sync::atomic::{AtomicBool, Ordering}; use std::{io, panic, process}; use tokio::select; use tokio::sync::mpsc::Receiver; -use tokio::sync::{mpsc, Mutex}; +use tokio::sync::{Mutex, mpsc}; use tokio_util::sync::CancellationToken; use utils::{ build_network_client, load_config, start_cli_no_spinner, start_cli_with_spinner, tail_logs, }; -use crate::app::{log_and_print_error, App}; +use crate::app::{App, log_and_print_error}; use crate::cli::Command; -use crate::event::input_event::{Events, InputEvent}; use crate::event::Key; +use crate::event::input_event::{Events, InputEvent}; use crate::network::{Network, NetworkEvent}; use crate::ui::theme::{Theme, ThemeDefinitionsWrapper}; -use crate::ui::{ui, THEME}; +use crate::ui::{THEME, ui}; use crate::utils::load_theme_config; mod app; @@ -262,8 +260,6 @@ async fn start_ui( Some(InputEvent::Tick) => app.on_tick().await, _ => {} } - - let _ = sleep(Duration::from_millis(16)).await; } terminal.show_cursor()?; diff --git a/src/ui/mod.rs b/src/ui/mod.rs index ad250fe..d974eee 100644 --- a/src/ui/mod.rs +++ b/src/ui/mod.rs @@ -1,6 +1,7 @@ use std::cell::Cell; use std::sync::atomic::Ordering; +use ratatui::Frame; use ratatui::layout::{Constraint, Flex, Layout, Rect}; use ratatui::style::{Style, Stylize}; use ratatui::text::{Line, Text}; @@ -8,7 +9,6 @@ use ratatui::widgets::Paragraph; use ratatui::widgets::Tabs; use ratatui::widgets::Wrap; use ratatui::widgets::{Clear, Row}; -use ratatui::Frame; use sonarr_ui::SonarrUi; use utils::layout_block; diff --git a/src/ui/radarr_ui/blocklist/mod.rs b/src/ui/radarr_ui/blocklist/mod.rs index 59c6e7e..4301221 100644 --- a/src/ui/radarr_ui/blocklist/mod.rs +++ b/src/ui/radarr_ui/blocklist/mod.rs @@ -1,19 +1,19 @@ use crate::app::App; +use crate::models::Route; use crate::models::radarr_models::BlocklistItem; use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, BLOCKLIST_BLOCKS}; -use crate::models::Route; +use crate::ui::DrawUi; use crate::ui::styles::ManagarrStyle; use crate::ui::utils::{get_width_from_percentage, layout_block_top_border}; use crate::ui::widgets::confirmation_prompt::ConfirmationPrompt; use crate::ui::widgets::managarr_table::ManagarrTable; use crate::ui::widgets::message::Message; use crate::ui::widgets::popup::{Popup, Size}; -use crate::ui::DrawUi; +use ratatui::Frame; use ratatui::layout::{Alignment, Constraint, Rect}; use ratatui::style::{Style, Stylize}; use ratatui::text::{Line, Text}; use ratatui::widgets::{Cell, Row}; -use ratatui::Frame; #[cfg(test)] #[path = "blocklist_ui_tests.rs"] diff --git a/src/ui/radarr_ui/collections/collection_details_ui.rs b/src/ui/radarr_ui/collections/collection_details_ui.rs index 52d476b..9567523 100644 --- a/src/ui/radarr_ui/collections/collection_details_ui.rs +++ b/src/ui/radarr_ui/collections/collection_details_ui.rs @@ -1,15 +1,15 @@ +use ratatui::Frame; use ratatui::layout::{Constraint, Flex, Layout, Rect}; use ratatui::style::Stylize; use ratatui::text::{Line, Text}; use ratatui::widgets::{Cell, Paragraph, Row, Wrap}; -use ratatui::Frame; use crate::app::App; +use crate::models::Route; use crate::models::radarr_models::CollectionMovie; use crate::models::servarr_data::radarr::radarr_data::{ ActiveRadarrBlock, COLLECTION_DETAILS_BLOCKS, }; -use crate::models::Route; use crate::ui::styles::ManagarrStyle; use crate::ui::utils::{ borderless_block, get_width_from_percentage, layout_block_top_border_with_title, title_block, @@ -17,7 +17,7 @@ use crate::ui::utils::{ }; use crate::ui::widgets::managarr_table::ManagarrTable; use crate::ui::widgets::popup::Size; -use crate::ui::{draw_popup, DrawUi}; +use crate::ui::{DrawUi, draw_popup}; use crate::utils::convert_runtime; #[cfg(test)] diff --git a/src/ui/radarr_ui/collections/mod.rs b/src/ui/radarr_ui/collections/mod.rs index 577074b..63ed8a8 100644 --- a/src/ui/radarr_ui/collections/mod.rs +++ b/src/ui/radarr_ui/collections/mod.rs @@ -1,11 +1,12 @@ +use ratatui::Frame; use ratatui::layout::{Constraint, Rect}; use ratatui::widgets::{Cell, Row}; -use ratatui::Frame; use crate::app::App; +use crate::models::Route; use crate::models::radarr_models::Collection; use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, COLLECTIONS_BLOCKS}; -use crate::models::Route; +use crate::ui::DrawUi; use crate::ui::radarr_ui::collections::collection_details_ui::CollectionDetailsUi; use crate::ui::radarr_ui::collections::edit_collection_ui::EditCollectionUi; use crate::ui::styles::ManagarrStyle; @@ -13,7 +14,6 @@ use crate::ui::utils::{get_width_from_percentage, layout_block_top_border}; use crate::ui::widgets::confirmation_prompt::ConfirmationPrompt; use crate::ui::widgets::managarr_table::ManagarrTable; use crate::ui::widgets::popup::{Popup, Size}; -use crate::ui::DrawUi; mod collection_details_ui; #[cfg(test)] diff --git a/src/ui/radarr_ui/downloads/mod.rs b/src/ui/radarr_ui/downloads/mod.rs index 082401a..2e52d7b 100644 --- a/src/ui/radarr_ui/downloads/mod.rs +++ b/src/ui/radarr_ui/downloads/mod.rs @@ -1,17 +1,17 @@ +use ratatui::Frame; use ratatui::layout::{Constraint, Rect}; use ratatui::widgets::{Cell, Row}; -use ratatui::Frame; use crate::app::App; use crate::models::radarr_models::DownloadRecord; use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, DOWNLOADS_BLOCKS}; use crate::models::{HorizontallyScrollableText, Route}; +use crate::ui::DrawUi; use crate::ui::styles::ManagarrStyle; use crate::ui::utils::{get_width_from_percentage, layout_block_top_border}; use crate::ui::widgets::confirmation_prompt::ConfirmationPrompt; use crate::ui::widgets::managarr_table::ManagarrTable; use crate::ui::widgets::popup::{Popup, Size}; -use crate::ui::DrawUi; use crate::utils::convert_to_gb; #[cfg(test)] diff --git a/src/ui/radarr_ui/indexers/test_all_indexers_ui.rs b/src/ui/radarr_ui/indexers/test_all_indexers_ui.rs index c7191b8..734fc15 100644 --- a/src/ui/radarr_ui/indexers/test_all_indexers_ui.rs +++ b/src/ui/radarr_ui/indexers/test_all_indexers_ui.rs @@ -1,15 +1,15 @@ use crate::app::App; +use crate::models::Route; use crate::models::servarr_data::modals::IndexerTestResultModalItem; use crate::models::servarr_data::radarr::radarr_data::ActiveRadarrBlock; -use crate::models::Route; use crate::ui::styles::ManagarrStyle; use crate::ui::utils::{get_width_from_percentage, title_block}; use crate::ui::widgets::managarr_table::ManagarrTable; use crate::ui::widgets::popup::Size; -use crate::ui::{draw_popup, DrawUi}; +use crate::ui::{DrawUi, draw_popup}; +use ratatui::Frame; use ratatui::layout::{Constraint, Rect}; use ratatui::widgets::{Cell, Row}; -use ratatui::Frame; #[cfg(test)] #[path = "test_all_indexers_ui_tests.rs"] diff --git a/src/ui/radarr_ui/library/add_movie_ui.rs b/src/ui/radarr_ui/library/add_movie_ui.rs index 6807fa0..f3ad937 100644 --- a/src/ui/radarr_ui/library/add_movie_ui.rs +++ b/src/ui/radarr_ui/library/add_movie_ui.rs @@ -1,13 +1,13 @@ use std::sync::atomic::Ordering; +use ratatui::Frame; use ratatui::layout::{Constraint, Layout, Rect}; use ratatui::widgets::{Cell, ListItem, Row}; -use ratatui::Frame; +use crate::models::Route; use crate::models::radarr_models::AddMovieSearchResult; use crate::models::servarr_data::radarr::modals::AddMovieModal; -use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, ADD_MOVIE_BLOCKS}; -use crate::models::Route; +use crate::models::servarr_data::radarr::radarr_data::{ADD_MOVIE_BLOCKS, ActiveRadarrBlock}; use crate::ui::radarr_ui::collections::CollectionsUi; use crate::ui::styles::ManagarrStyle; use crate::ui::utils::{ @@ -19,9 +19,9 @@ use crate::ui::widgets::managarr_table::ManagarrTable; use crate::ui::widgets::message::Message; use crate::ui::widgets::popup::{Popup, Size}; use crate::ui::widgets::selectable_list::SelectableList; -use crate::ui::{draw_popup, DrawUi}; +use crate::ui::{DrawUi, draw_popup}; use crate::utils::convert_runtime; -use crate::{render_selectable_input_box, App}; +use crate::{App, render_selectable_input_box}; #[cfg(test)] #[path = "add_movie_ui_tests.rs"] @@ -307,19 +307,27 @@ fn draw_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) { f.render_widget(title_block_centered(&title), area); - let [paragraph_area, root_folder_area, monitor_area, min_availability_area, quality_profile_area, tags_area, _, buttons_area] = - Layout::vertical([ - Constraint::Length(6), - Constraint::Length(3), - Constraint::Length(3), - Constraint::Length(3), - Constraint::Length(3), - Constraint::Length(3), - Constraint::Fill(1), - Constraint::Length(3), - ]) - .margin(1) - .areas(area); + let [ + paragraph_area, + root_folder_area, + monitor_area, + min_availability_area, + quality_profile_area, + tags_area, + _, + buttons_area, + ] = Layout::vertical([ + Constraint::Length(6), + Constraint::Length(3), + Constraint::Length(3), + Constraint::Length(3), + Constraint::Length(3), + Constraint::Length(3), + Constraint::Fill(1), + Constraint::Length(3), + ]) + .margin(1) + .areas(area); let prompt_paragraph = layout_paragraph_borderless(&prompt); f.render_widget(prompt_paragraph, paragraph_area); diff --git a/src/ui/radarr_ui/library/mod.rs b/src/ui/radarr_ui/library/mod.rs index cfed63a..2ba46ae 100644 --- a/src/ui/radarr_ui/library/mod.rs +++ b/src/ui/radarr_ui/library/mod.rs @@ -1,11 +1,12 @@ +use ratatui::Frame; use ratatui::layout::{Constraint, Rect}; use ratatui::widgets::{Cell, Row}; -use ratatui::Frame; use crate::app::App; +use crate::models::Route; use crate::models::radarr_models::Movie; use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, LIBRARY_BLOCKS}; -use crate::models::Route; +use crate::ui::DrawUi; use crate::ui::radarr_ui::decorate_with_row_style; use crate::ui::radarr_ui::library::add_movie_ui::AddMovieUi; use crate::ui::radarr_ui::library::delete_movie_ui::DeleteMovieUi; @@ -15,7 +16,6 @@ use crate::ui::utils::{get_width_from_percentage, layout_block_top_border}; use crate::ui::widgets::confirmation_prompt::ConfirmationPrompt; use crate::ui::widgets::managarr_table::ManagarrTable; use crate::ui::widgets::popup::{Popup, Size}; -use crate::ui::DrawUi; use crate::utils::{convert_runtime, convert_to_gb}; mod add_movie_ui; diff --git a/src/ui/radarr_ui/library/movie_details_ui.rs b/src/ui/radarr_ui/library/movie_details_ui.rs index 06d07f2..7823d2b 100644 --- a/src/ui/radarr_ui/library/movie_details_ui.rs +++ b/src/ui/radarr_ui/library/movie_details_ui.rs @@ -1,17 +1,17 @@ use std::iter; +use ratatui::Frame; use ratatui::layout::{Constraint, Layout, Rect}; use ratatui::style::{Style, Stylize}; use ratatui::text::{Line, Span, Text}; use ratatui::widgets::{Cell, Paragraph, Row, Wrap}; -use ratatui::Frame; use serde_json::Number; use crate::app::App; +use crate::models::Route; use crate::models::radarr_models::{Credit, MovieHistoryItem, RadarrRelease}; use crate::models::servarr_data::radarr::modals::MovieDetailsModal; use crate::models::servarr_data::radarr::radarr_data::{ActiveRadarrBlock, MOVIE_DETAILS_BLOCKS}; -use crate::models::Route; use crate::ui::styles::ManagarrStyle; use crate::ui::utils::{ borderless_block, decorate_peer_style, get_width_from_percentage, layout_block_bottom_border, @@ -21,7 +21,7 @@ use crate::ui::widgets::confirmation_prompt::ConfirmationPrompt; use crate::ui::widgets::loading_block::LoadingBlock; use crate::ui::widgets::managarr_table::ManagarrTable; use crate::ui::widgets::popup::{Popup, Size}; -use crate::ui::{draw_popup, draw_tabs, DrawUi}; +use crate::ui::{DrawUi, draw_popup, draw_tabs}; use crate::utils::convert_to_gb; #[cfg(test)] @@ -116,16 +116,22 @@ fn draw_file_info(f: &mut Frame<'_>, app: &App<'_>, area: Rect) { let file_info = movie_details_modal.file_details.to_owned(); let audio_details = movie_details_modal.audio_details.to_owned(); let video_details = movie_details_modal.video_details.to_owned(); - let [file_details_title_area, file_details_area, audio_details_title_area, audio_details_area, video_details_title_area, video_details_area] = - Layout::vertical([ - Constraint::Length(2), - Constraint::Length(5), - Constraint::Length(1), - Constraint::Length(6), - Constraint::Length(1), - Constraint::Length(7), - ]) - .areas(area); + let [ + file_details_title_area, + file_details_area, + audio_details_title_area, + audio_details_area, + video_details_title_area, + video_details_area, + ] = Layout::vertical([ + Constraint::Length(2), + Constraint::Length(5), + Constraint::Length(1), + Constraint::Length(6), + Constraint::Length(1), + Constraint::Length(7), + ]) + .areas(area); let file_details_title_paragraph = Paragraph::new("File Details".bold()).block(layout_block_top_border()); diff --git a/src/ui/sonarr_ui/downloads/mod.rs b/src/ui/sonarr_ui/downloads/mod.rs index d772e3f..5706bd4 100644 --- a/src/ui/sonarr_ui/downloads/mod.rs +++ b/src/ui/sonarr_ui/downloads/mod.rs @@ -1,17 +1,17 @@ +use ratatui::Frame; use ratatui::layout::{Constraint, Rect}; use ratatui::widgets::{Cell, Row}; -use ratatui::Frame; use crate::app::App; use crate::models::servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, DOWNLOADS_BLOCKS}; use crate::models::sonarr_models::DownloadRecord; use crate::models::{HorizontallyScrollableText, Route}; +use crate::ui::DrawUi; use crate::ui::styles::ManagarrStyle; use crate::ui::utils::{get_width_from_percentage, layout_block_top_border}; use crate::ui::widgets::confirmation_prompt::ConfirmationPrompt; use crate::ui::widgets::managarr_table::ManagarrTable; use crate::ui::widgets::popup::{Popup, Size}; -use crate::ui::DrawUi; use crate::utils::convert_f64_to_gb; #[cfg(test)] diff --git a/src/ui/sonarr_ui/history/mod.rs b/src/ui/sonarr_ui/history/mod.rs index 7b214b9..05c00ef 100644 --- a/src/ui/sonarr_ui/history/mod.rs +++ b/src/ui/sonarr_ui/history/mod.rs @@ -1,19 +1,19 @@ use crate::app::App; +use crate::models::Route; use crate::models::servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, HISTORY_BLOCKS}; use crate::models::servarr_models::Language; use crate::models::sonarr_models::{SonarrHistoryEventType, SonarrHistoryItem}; -use crate::models::Route; +use crate::ui::DrawUi; use crate::ui::styles::ManagarrStyle; use crate::ui::utils::{get_width_from_percentage, layout_block_top_border}; use crate::ui::widgets::managarr_table::ManagarrTable; use crate::ui::widgets::message::Message; use crate::ui::widgets::popup::{Popup, Size}; -use crate::ui::DrawUi; +use ratatui::Frame; use ratatui::layout::{Alignment, Constraint, Rect}; use ratatui::style::Style; use ratatui::text::Text; use ratatui::widgets::{Cell, Row}; -use ratatui::Frame; use super::sonarr_ui_utils::{ create_download_failed_history_event_details, diff --git a/src/ui/sonarr_ui/indexers/test_all_indexers_ui.rs b/src/ui/sonarr_ui/indexers/test_all_indexers_ui.rs index 8f38f34..8b0bf20 100644 --- a/src/ui/sonarr_ui/indexers/test_all_indexers_ui.rs +++ b/src/ui/sonarr_ui/indexers/test_all_indexers_ui.rs @@ -1,15 +1,15 @@ use crate::app::App; +use crate::models::Route; use crate::models::servarr_data::modals::IndexerTestResultModalItem; use crate::models::servarr_data::sonarr::sonarr_data::ActiveSonarrBlock; -use crate::models::Route; use crate::ui::styles::ManagarrStyle; use crate::ui::utils::{get_width_from_percentage, title_block}; use crate::ui::widgets::managarr_table::ManagarrTable; use crate::ui::widgets::popup::Size; -use crate::ui::{draw_popup, DrawUi}; +use crate::ui::{DrawUi, draw_popup}; +use ratatui::Frame; use ratatui::layout::{Constraint, Rect}; use ratatui::widgets::{Cell, Row}; -use ratatui::Frame; #[cfg(test)] #[path = "test_all_indexers_ui_tests.rs"] diff --git a/src/ui/sonarr_ui/library/add_series_ui.rs b/src/ui/sonarr_ui/library/add_series_ui.rs index 914f87a..6d09c02 100644 --- a/src/ui/sonarr_ui/library/add_series_ui.rs +++ b/src/ui/sonarr_ui/library/add_series_ui.rs @@ -1,13 +1,13 @@ use std::sync::atomic::Ordering; +use ratatui::Frame; use ratatui::layout::{Constraint, Layout, Rect}; use ratatui::widgets::{Cell, ListItem, Row}; -use ratatui::Frame; -use crate::models::servarr_data::sonarr::modals::AddSeriesModal; -use crate::models::servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, ADD_SERIES_BLOCKS}; -use crate::models::sonarr_models::AddSeriesSearchResult; use crate::models::Route; +use crate::models::servarr_data::sonarr::modals::AddSeriesModal; +use crate::models::servarr_data::sonarr::sonarr_data::{ADD_SERIES_BLOCKS, ActiveSonarrBlock}; +use crate::models::sonarr_models::AddSeriesSearchResult; use crate::ui::styles::ManagarrStyle; use crate::ui::utils::{ get_width_from_percentage, layout_block, layout_paragraph_borderless, title_block_centered, @@ -19,8 +19,8 @@ use crate::ui::widgets::managarr_table::ManagarrTable; use crate::ui::widgets::message::Message; use crate::ui::widgets::popup::{Popup, Size}; use crate::ui::widgets::selectable_list::SelectableList; -use crate::ui::{draw_popup, DrawUi}; -use crate::{render_selectable_input_box, App}; +use crate::ui::{DrawUi, draw_popup}; +use crate::{App, render_selectable_input_box}; #[cfg(test)] #[path = "add_series_ui_tests.rs"] @@ -276,21 +276,31 @@ fn draw_confirmation_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) { f.render_widget(title_block_centered(&title), area); - let [paragraph_area, root_folder_area, monitor_area, quality_profile_area, language_profile_area, series_type_area, season_folder_area, tags_area, _, buttons_area] = - Layout::vertical([ - Constraint::Length(6), - Constraint::Length(3), - Constraint::Length(3), - Constraint::Length(3), - Constraint::Length(3), - Constraint::Length(3), - Constraint::Length(3), - Constraint::Length(3), - Constraint::Fill(1), - Constraint::Length(3), - ]) - .margin(1) - .areas(area); + let [ + paragraph_area, + root_folder_area, + monitor_area, + quality_profile_area, + language_profile_area, + series_type_area, + season_folder_area, + tags_area, + _, + buttons_area, + ] = Layout::vertical([ + Constraint::Length(6), + Constraint::Length(3), + Constraint::Length(3), + Constraint::Length(3), + Constraint::Length(3), + Constraint::Length(3), + Constraint::Length(3), + Constraint::Length(3), + Constraint::Fill(1), + Constraint::Length(3), + ]) + .margin(1) + .areas(area); let prompt_paragraph = layout_paragraph_borderless(&prompt); f.render_widget(prompt_paragraph, paragraph_area); diff --git a/src/ui/sonarr_ui/library/mod.rs b/src/ui/sonarr_ui/library/mod.rs index a6e0fc4..19569ef 100644 --- a/src/ui/sonarr_ui/library/mod.rs +++ b/src/ui/sonarr_ui/library/mod.rs @@ -2,9 +2,9 @@ use add_series_ui::AddSeriesUi; use delete_series_ui::DeleteSeriesUi; use edit_series_ui::EditSeriesUi; use ratatui::{ + Frame, layout::{Constraint, Rect}, widgets::{Cell, Row}, - Frame, }; use series_details_ui::SeriesDetailsUi; @@ -16,15 +16,15 @@ use crate::utils::convert_to_gb; use crate::{ app::App, models::{ + Route, servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, LIBRARY_BLOCKS}, sonarr_models::{Series, SeriesStatus}, - Route, }, ui::{ + DrawUi, styles::ManagarrStyle, utils::{get_width_from_percentage, layout_block_top_border}, widgets::managarr_table::ManagarrTable, - DrawUi, }, }; diff --git a/src/ui/sonarr_ui/library/series_details_ui.rs b/src/ui/sonarr_ui/library/series_details_ui.rs index 6144735..92364ae 100644 --- a/src/ui/sonarr_ui/library/series_details_ui.rs +++ b/src/ui/sonarr_ui/library/series_details_ui.rs @@ -1,18 +1,18 @@ use chrono::Utc; use deunicode::deunicode; +use ratatui::Frame; use ratatui::layout::{Alignment, Constraint, Layout, Rect}; use ratatui::style::{Style, Stylize}; use ratatui::text::{Line, Text}; use ratatui::widgets::{Cell, Paragraph, Row, Wrap}; -use ratatui::Frame; use regex::Regex; use crate::app::App; +use crate::models::Route; use crate::models::servarr_data::sonarr::sonarr_data::{ActiveSonarrBlock, SERIES_DETAILS_BLOCKS}; use crate::models::sonarr_models::{ Season, SeasonStatistics, SonarrHistoryEventType, SonarrHistoryItem, }; -use crate::models::Route; use crate::ui::sonarr_ui::library::episode_details_ui::EpisodeDetailsUi; use crate::ui::sonarr_ui::library::season_details_ui::SeasonDetailsUi; use crate::ui::sonarr_ui::sonarr_ui_utils::{ @@ -31,7 +31,7 @@ use crate::ui::widgets::loading_block::LoadingBlock; use crate::ui::widgets::managarr_table::ManagarrTable; use crate::ui::widgets::message::Message; use crate::ui::widgets::popup::{Popup, Size}; -use crate::ui::{draw_popup, draw_tabs, DrawUi}; +use crate::ui::{DrawUi, draw_popup, draw_tabs}; use crate::utils::convert_to_gb; #[cfg(test)]