Optimized copy-able types

This commit is contained in:
2023-08-08 10:50:05 -06:00
parent 110da1c0ee
commit d358935386
13 changed files with 42 additions and 68 deletions
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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();
+12 -24
View File
@@ -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
View File
@@ -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,
+4 -4
View File
@@ -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
View File
@@ -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
+1 -1
View File
@@ -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,
+3 -3
View File
@@ -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(
+1 -1
View File
@@ -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 => {
+1 -1
View File
@@ -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,