Optimized copy-able types
This commit is contained in:
+1
-1
@@ -74,7 +74,7 @@ impl App {
|
||||
if self.tick_count % self.tick_until_poll == 0 || self.is_routing || self.should_refresh {
|
||||
if let Route::Radarr(active_radarr_block) = self.get_current_route() {
|
||||
self
|
||||
.radarr_on_tick(active_radarr_block.clone(), is_first_render)
|
||||
.radarr_on_tick(*active_radarr_block, is_first_render)
|
||||
.await;
|
||||
}
|
||||
|
||||
|
||||
+2
-4
@@ -174,7 +174,7 @@ impl Default for RadarrData {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, PartialEq, Eq, Debug)]
|
||||
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
|
||||
pub enum ActiveRadarrBlock {
|
||||
AddMovieSearchInput,
|
||||
AddMovieSearchResults,
|
||||
@@ -327,9 +327,7 @@ impl App {
|
||||
if self.data.radarr_data.prompt_confirm {
|
||||
self.data.radarr_data.prompt_confirm = false;
|
||||
if let Some(radarr_event) = &self.data.radarr_data.prompt_confirm_action {
|
||||
self
|
||||
.dispatch_network_event(radarr_event.clone().into())
|
||||
.await;
|
||||
self.dispatch_network_event((*radarr_event).into()).await;
|
||||
self.should_refresh = true;
|
||||
self.data.radarr_data.prompt_confirm_action = None;
|
||||
}
|
||||
|
||||
+2
-2
@@ -43,7 +43,7 @@ pub trait KeyEventHandler<'a, T: Into<Route>> {
|
||||
}
|
||||
|
||||
pub fn handle_events(key: Key, app: &mut App) {
|
||||
if let Route::Radarr(active_radarr_block) = app.get_current_route().clone() {
|
||||
if let Route::Radarr(active_radarr_block) = *app.get_current_route() {
|
||||
RadarrHandler::with(&key, app, &active_radarr_block).handle()
|
||||
}
|
||||
}
|
||||
@@ -57,7 +57,7 @@ fn handle_clear_errors(app: &mut App) {
|
||||
fn handle_prompt_toggle(app: &mut App, key: &Key) {
|
||||
match key {
|
||||
_ if *key == DEFAULT_KEYBINDINGS.left.key || *key == DEFAULT_KEYBINDINGS.right.key => {
|
||||
if let Route::Radarr(_) = app.get_current_route().clone() {
|
||||
if let Route::Radarr(_) = *app.get_current_route() {
|
||||
app.data.radarr_data.prompt_confirm = !app.data.radarr_data.prompt_confirm;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -517,7 +517,7 @@ mod tests {
|
||||
) {
|
||||
let mut app = App::default();
|
||||
app.push_navigation_stack(ActiveRadarrBlock::AddMoviePrompt.into());
|
||||
app.data.radarr_data.selected_block = selected_block.clone();
|
||||
app.data.radarr_data.selected_block = selected_block;
|
||||
|
||||
AddMovieHandler::with(&SUBMIT_KEY, &mut app, &ActiveRadarrBlock::AddMoviePrompt).handle();
|
||||
|
||||
@@ -536,7 +536,7 @@ mod tests {
|
||||
) {
|
||||
let mut app = App::default();
|
||||
app.push_navigation_stack(ActiveRadarrBlock::AddMoviePrompt.into());
|
||||
app.push_navigation_stack(active_radarr_block.clone().into());
|
||||
app.push_navigation_stack(active_radarr_block.into());
|
||||
|
||||
AddMovieHandler::with(&SUBMIT_KEY, &mut app, &active_radarr_block).handle();
|
||||
|
||||
|
||||
@@ -205,25 +205,13 @@ impl<'a> KeyEventHandler<'a, ActiveRadarrBlock> for RadarrHandler<'a> {
|
||||
_ if *self.key == DEFAULT_KEYBINDINGS.left.key => {
|
||||
self.app.data.radarr_data.main_tabs.previous();
|
||||
self.app.pop_and_push_navigation_stack(
|
||||
self
|
||||
.app
|
||||
.data
|
||||
.radarr_data
|
||||
.main_tabs
|
||||
.get_active_route()
|
||||
.clone(),
|
||||
*self.app.data.radarr_data.main_tabs.get_active_route(),
|
||||
);
|
||||
}
|
||||
_ if *self.key == DEFAULT_KEYBINDINGS.right.key => {
|
||||
self.app.data.radarr_data.main_tabs.next();
|
||||
self.app.pop_and_push_navigation_stack(
|
||||
self
|
||||
.app
|
||||
.data
|
||||
.radarr_data
|
||||
.main_tabs
|
||||
.get_active_route()
|
||||
.clone(),
|
||||
*self.app.data.radarr_data.main_tabs.get_active_route(),
|
||||
);
|
||||
}
|
||||
_ => (),
|
||||
@@ -673,7 +661,7 @@ mod tests {
|
||||
|
||||
assert_eq!(
|
||||
app.data.radarr_data.main_tabs.get_active_route(),
|
||||
&expected_radarr_block.clone().into()
|
||||
&expected_radarr_block.into()
|
||||
);
|
||||
assert_eq!(app.get_current_route(), &expected_radarr_block.into());
|
||||
}
|
||||
@@ -699,7 +687,7 @@ mod tests {
|
||||
|
||||
assert_eq!(
|
||||
app.data.radarr_data.main_tabs.get_active_route(),
|
||||
&expected_radarr_block.clone().into()
|
||||
&expected_radarr_block.into()
|
||||
);
|
||||
assert_eq!(app.get_current_route(), &expected_radarr_block.into());
|
||||
}
|
||||
@@ -869,8 +857,8 @@ mod tests {
|
||||
) {
|
||||
let mut app = App::default();
|
||||
app.data.radarr_data.prompt_confirm = true;
|
||||
app.push_navigation_stack(base_route.clone().into());
|
||||
app.push_navigation_stack(prompt_block.clone().into());
|
||||
app.push_navigation_stack(base_route.into());
|
||||
app.push_navigation_stack(prompt_block.into());
|
||||
|
||||
RadarrHandler::with(&SUBMIT_KEY, &mut app, &prompt_block).handle();
|
||||
|
||||
@@ -899,8 +887,8 @@ mod tests {
|
||||
#[case] prompt_block: ActiveRadarrBlock,
|
||||
) {
|
||||
let mut app = App::default();
|
||||
app.push_navigation_stack(base_route.clone().into());
|
||||
app.push_navigation_stack(prompt_block.clone().into());
|
||||
app.push_navigation_stack(base_route.into());
|
||||
app.push_navigation_stack(prompt_block.into());
|
||||
|
||||
RadarrHandler::with(&SUBMIT_KEY, &mut app, &prompt_block).handle();
|
||||
|
||||
@@ -932,8 +920,8 @@ mod tests {
|
||||
) {
|
||||
let mut app = App::default();
|
||||
app.should_ignore_quit_key = true;
|
||||
app.push_navigation_stack(base_block.clone().into());
|
||||
app.push_navigation_stack(search_block.clone().into());
|
||||
app.push_navigation_stack(base_block.into());
|
||||
app.push_navigation_stack(search_block.into());
|
||||
app.data.radarr_data = create_test_radarr_data();
|
||||
|
||||
RadarrHandler::with(&ESC_KEY, &mut app, &search_block).handle();
|
||||
@@ -960,8 +948,8 @@ mod tests {
|
||||
#[case] prompt_block: ActiveRadarrBlock,
|
||||
) {
|
||||
let mut app = App::default();
|
||||
app.push_navigation_stack(base_block.clone().into());
|
||||
app.push_navigation_stack(prompt_block.clone().into());
|
||||
app.push_navigation_stack(base_block.into());
|
||||
app.push_navigation_stack(prompt_block.into());
|
||||
app.data.radarr_data.prompt_confirm = true;
|
||||
|
||||
RadarrHandler::with(&ESC_KEY, &mut app, &prompt_block).handle();
|
||||
|
||||
@@ -88,25 +88,13 @@ impl<'a> KeyEventHandler<'a, ActiveRadarrBlock> for MovieDetailsHandler<'a> {
|
||||
_ if *self.key == DEFAULT_KEYBINDINGS.left.key => {
|
||||
self.app.data.radarr_data.movie_info_tabs.previous();
|
||||
self.app.pop_and_push_navigation_stack(
|
||||
self
|
||||
.app
|
||||
.data
|
||||
.radarr_data
|
||||
.movie_info_tabs
|
||||
.get_active_route()
|
||||
.clone(),
|
||||
*self.app.data.radarr_data.movie_info_tabs.get_active_route(),
|
||||
);
|
||||
}
|
||||
_ if *self.key == DEFAULT_KEYBINDINGS.right.key => {
|
||||
self.app.data.radarr_data.movie_info_tabs.next();
|
||||
self.app.pop_and_push_navigation_stack(
|
||||
self
|
||||
.app
|
||||
.data
|
||||
.radarr_data
|
||||
.movie_info_tabs
|
||||
.get_active_route()
|
||||
.clone(),
|
||||
*self.app.data.radarr_data.movie_info_tabs.get_active_route(),
|
||||
);
|
||||
}
|
||||
_ => (),
|
||||
@@ -393,14 +381,14 @@ mod tests {
|
||||
#[case] right_block: ActiveRadarrBlock,
|
||||
) {
|
||||
let mut app = App::default();
|
||||
app.push_navigation_stack(right_block.clone().into());
|
||||
app.push_navigation_stack(right_block.into());
|
||||
app.data.radarr_data.movie_info_tabs.index = app
|
||||
.data
|
||||
.radarr_data
|
||||
.movie_info_tabs
|
||||
.tabs
|
||||
.iter()
|
||||
.position(|tab_route| tab_route.route == right_block.clone().into())
|
||||
.position(|tab_route| tab_route.route == right_block.into())
|
||||
.unwrap_or_default();
|
||||
|
||||
MovieDetailsHandler::with(&DEFAULT_KEYBINDINGS.left.key, &mut app, &right_block).handle();
|
||||
@@ -409,7 +397,7 @@ mod tests {
|
||||
app.get_current_route(),
|
||||
app.data.radarr_data.movie_info_tabs.get_active_route()
|
||||
);
|
||||
assert_eq!(app.get_current_route(), &left_block.clone().into());
|
||||
assert_eq!(app.get_current_route(), &left_block.into());
|
||||
|
||||
MovieDetailsHandler::with(&DEFAULT_KEYBINDINGS.right.key, &mut app, &left_block).handle();
|
||||
|
||||
@@ -461,7 +449,7 @@ mod tests {
|
||||
let mut app = App::default();
|
||||
app.data.radarr_data.prompt_confirm = true;
|
||||
app.push_navigation_stack(ActiveRadarrBlock::MovieDetails.into());
|
||||
app.push_navigation_stack(prompt_block.clone().into());
|
||||
app.push_navigation_stack(prompt_block.into());
|
||||
|
||||
MovieDetailsHandler::with(&SUBMIT_KEY, &mut app, &prompt_block).handle();
|
||||
|
||||
@@ -487,7 +475,7 @@ mod tests {
|
||||
) {
|
||||
let mut app = App::default();
|
||||
app.push_navigation_stack(ActiveRadarrBlock::MovieDetails.into());
|
||||
app.push_navigation_stack(prompt_block.clone().into());
|
||||
app.push_navigation_stack(prompt_block.into());
|
||||
|
||||
MovieDetailsHandler::with(&SUBMIT_KEY, &mut app, &prompt_block).handle();
|
||||
|
||||
@@ -526,7 +514,7 @@ mod tests {
|
||||
let mut app = App::default();
|
||||
app.data.radarr_data = create_test_radarr_data();
|
||||
app.push_navigation_stack(ActiveRadarrBlock::Movies.into());
|
||||
app.push_navigation_stack(active_radarr_block.clone().into());
|
||||
app.push_navigation_stack(active_radarr_block.into());
|
||||
|
||||
MovieDetailsHandler::with(&ESC_KEY, &mut app, &active_radarr_block).handle();
|
||||
|
||||
@@ -546,7 +534,7 @@ mod tests {
|
||||
let mut app = App::default();
|
||||
app.data.radarr_data.prompt_confirm = true;
|
||||
app.push_navigation_stack(ActiveRadarrBlock::Movies.into());
|
||||
app.push_navigation_stack(prompt_block.clone().into());
|
||||
app.push_navigation_stack(prompt_block.into());
|
||||
|
||||
MovieDetailsHandler::with(&ESC_KEY, &mut app, &prompt_block).handle();
|
||||
|
||||
|
||||
+1
-1
@@ -8,7 +8,7 @@ use crate::app::radarr::ActiveRadarrBlock;
|
||||
|
||||
pub mod radarr_models;
|
||||
|
||||
#[derive(Clone, PartialEq, Eq, Debug)]
|
||||
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
|
||||
pub enum Route {
|
||||
Radarr(ActiveRadarrBlock),
|
||||
Sonarr,
|
||||
|
||||
@@ -292,7 +292,7 @@ pub struct CommandBody {
|
||||
pub name: String,
|
||||
}
|
||||
|
||||
#[derive(Default, PartialEq, Eq, Clone, Debug, EnumIter)]
|
||||
#[derive(Default, PartialEq, Eq, Clone, Copy, Debug, EnumIter)]
|
||||
pub enum MinimumAvailability {
|
||||
#[default]
|
||||
Announced,
|
||||
@@ -314,7 +314,7 @@ impl Display for MinimumAvailability {
|
||||
}
|
||||
|
||||
impl MinimumAvailability {
|
||||
pub fn to_display_str(&self) -> &str {
|
||||
pub fn to_display_str<'a>(self) -> &'a str {
|
||||
match self {
|
||||
MinimumAvailability::Tba => "TBA",
|
||||
MinimumAvailability::Announced => "Announced",
|
||||
@@ -324,7 +324,7 @@ impl MinimumAvailability {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Default, PartialEq, Eq, Clone, Debug, EnumIter)]
|
||||
#[derive(Default, PartialEq, Eq, Clone, Copy, Debug, EnumIter)]
|
||||
pub enum Monitor {
|
||||
#[default]
|
||||
MovieOnly,
|
||||
@@ -344,7 +344,7 @@ impl Display for Monitor {
|
||||
}
|
||||
|
||||
impl Monitor {
|
||||
pub fn to_display_str(&self) -> &str {
|
||||
pub fn to_display_str<'a>(self) -> &'a str {
|
||||
match self {
|
||||
Monitor::MovieOnly => "Movie only",
|
||||
Monitor::MovieAndCollection => "Movie and Collection",
|
||||
|
||||
+3
-3
@@ -48,7 +48,7 @@ impl<'a> Network<'a> {
|
||||
T: Serialize + Default + Debug,
|
||||
R: DeserializeOwned,
|
||||
{
|
||||
let method = request_props.method.clone();
|
||||
let method = request_props.method;
|
||||
match self.call_api(request_props).await.send().await {
|
||||
Ok(response) => {
|
||||
if response.status().is_success() {
|
||||
@@ -120,7 +120,7 @@ impl<'a> Network<'a> {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Display, PartialEq, Eq)]
|
||||
#[derive(Clone, Copy, Debug, Display, PartialEq, Eq)]
|
||||
pub enum RequestMethod {
|
||||
Get,
|
||||
Post,
|
||||
@@ -303,7 +303,7 @@ mod tests {
|
||||
#[values(RequestMethod::Get, RequestMethod::Post, RequestMethod::Delete)]
|
||||
request_method: RequestMethod,
|
||||
) {
|
||||
let (async_server, app_arc, url) = mock_api(request_method.clone(), 404, true).await;
|
||||
let (async_server, app_arc, url) = mock_api(request_method, 404, true).await;
|
||||
let network = Network::new(reqwest::Client::new(), &app_arc);
|
||||
|
||||
network
|
||||
|
||||
@@ -16,7 +16,7 @@ use crate::models::ScrollableText;
|
||||
use crate::network::{Network, NetworkEvent, RequestMethod, RequestProps};
|
||||
use crate::utils::{convert_runtime, convert_to_gb};
|
||||
|
||||
#[derive(Debug, Eq, PartialEq, Clone)]
|
||||
#[derive(Debug, Eq, PartialEq, Clone, Copy)]
|
||||
pub enum RadarrEvent {
|
||||
AddMovie,
|
||||
DeleteDownload,
|
||||
|
||||
@@ -24,7 +24,7 @@ pub(super) fn draw_add_movie_search_popup<B: Backend>(
|
||||
app: &mut App,
|
||||
area: Rect,
|
||||
) {
|
||||
if let Route::Radarr(active_radarr_block) = app.get_current_route().clone() {
|
||||
if let Route::Radarr(active_radarr_block) = *app.get_current_route() {
|
||||
match active_radarr_block {
|
||||
ActiveRadarrBlock::AddMovieSearchInput | ActiveRadarrBlock::AddMovieSearchResults => {
|
||||
draw_add_movie_search(f, app, area);
|
||||
@@ -66,7 +66,7 @@ fn draw_add_movie_search<B: Backend>(f: &mut Frame<'_, B>, app: &mut App, area:
|
||||
.style(style_default())
|
||||
.block(title_block_centered("Add Movie"));
|
||||
|
||||
if let Route::Radarr(active_radarr_block) = app.get_current_route().clone() {
|
||||
if let Route::Radarr(active_radarr_block) = *app.get_current_route() {
|
||||
match active_radarr_block {
|
||||
ActiveRadarrBlock::AddMovieSearchInput => {
|
||||
show_cursor(f, chunks[0], block_content);
|
||||
@@ -169,7 +169,7 @@ fn draw_add_movie_search<B: Backend>(f: &mut Frame<'_, B>, app: &mut App, area:
|
||||
}
|
||||
|
||||
fn draw_confirmation_popup<B: Backend>(f: &mut Frame<'_, B>, app: &mut App, prompt_area: Rect) {
|
||||
if let Route::Radarr(active_radarr_block) = app.get_current_route().clone() {
|
||||
if let Route::Radarr(active_radarr_block) = *app.get_current_route() {
|
||||
match active_radarr_block {
|
||||
ActiveRadarrBlock::AddMovieSelectMonitor => {
|
||||
draw_drop_down_popup(
|
||||
|
||||
@@ -36,7 +36,7 @@ mod movie_details_ui;
|
||||
pub(super) fn draw_radarr_ui<B: Backend>(f: &mut Frame<'_, B>, app: &mut App, area: Rect) {
|
||||
let (content_rect, _) = draw_tabs(f, area, "Movies", &app.data.radarr_data.main_tabs);
|
||||
|
||||
if let Route::Radarr(active_radarr_block) = app.get_current_route().clone() {
|
||||
if let Route::Radarr(active_radarr_block) = *app.get_current_route() {
|
||||
match active_radarr_block {
|
||||
ActiveRadarrBlock::Movies => draw_library(f, app, content_rect),
|
||||
ActiveRadarrBlock::SearchMovie | ActiveRadarrBlock::FilterMovies => {
|
||||
|
||||
@@ -349,7 +349,7 @@ fn draw_movie_releases<B: Backend>(f: &mut Frame<'_, B>, app: &mut App, content_
|
||||
.movie_releases
|
||||
.current_selection_clone()
|
||||
};
|
||||
let current_route = app.get_current_route().clone();
|
||||
let current_route = *app.get_current_route();
|
||||
|
||||
draw_table(
|
||||
f,
|
||||
|
||||
Reference in New Issue
Block a user