refactor(keys): Created a auto search key instead of reusing the existing search key to make things easier
This commit is contained in:
@@ -19,6 +19,7 @@ generate_keybindings! {
|
|||||||
previous_servarr,
|
previous_servarr,
|
||||||
clear,
|
clear,
|
||||||
search,
|
search,
|
||||||
|
auto_search,
|
||||||
settings,
|
settings,
|
||||||
filter,
|
filter,
|
||||||
sort,
|
sort,
|
||||||
@@ -82,6 +83,10 @@ pub const DEFAULT_KEYBINDINGS: KeyBindings = KeyBindings {
|
|||||||
key: Key::Char('c'),
|
key: Key::Char('c'),
|
||||||
desc: "clear",
|
desc: "clear",
|
||||||
},
|
},
|
||||||
|
auto_search: KeyBinding {
|
||||||
|
key: Key::Char('S'),
|
||||||
|
desc: "auto search",
|
||||||
|
},
|
||||||
search: KeyBinding {
|
search: KeyBinding {
|
||||||
key: Key::Char('s'),
|
key: Key::Char('s'),
|
||||||
desc: "search",
|
desc: "search",
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ mod test {
|
|||||||
#[case(DEFAULT_KEYBINDINGS.next_servarr, Key::Tab, "next servarr")]
|
#[case(DEFAULT_KEYBINDINGS.next_servarr, Key::Tab, "next servarr")]
|
||||||
#[case(DEFAULT_KEYBINDINGS.previous_servarr, Key::BackTab, "previous servarr")]
|
#[case(DEFAULT_KEYBINDINGS.previous_servarr, Key::BackTab, "previous servarr")]
|
||||||
#[case(DEFAULT_KEYBINDINGS.clear, Key::Char('c'), "clear")]
|
#[case(DEFAULT_KEYBINDINGS.clear, Key::Char('c'), "clear")]
|
||||||
|
#[case(DEFAULT_KEYBINDINGS.auto_search, Key::Char('S'), "auto search")]
|
||||||
#[case(DEFAULT_KEYBINDINGS.search, Key::Char('s'), "search")]
|
#[case(DEFAULT_KEYBINDINGS.search, Key::Char('s'), "search")]
|
||||||
#[case(DEFAULT_KEYBINDINGS.settings, Key::Char('s'), "settings")]
|
#[case(DEFAULT_KEYBINDINGS.settings, Key::Char('s'), "settings")]
|
||||||
#[case(DEFAULT_KEYBINDINGS.filter, Key::Char('f'), "filter")]
|
#[case(DEFAULT_KEYBINDINGS.filter, Key::Char('f'), "filter")]
|
||||||
|
|||||||
@@ -42,7 +42,10 @@ pub static MOVIE_DETAILS_CONTEXT_CLUES: [ContextClue; 5] = [
|
|||||||
),
|
),
|
||||||
(DEFAULT_KEYBINDINGS.update, DEFAULT_KEYBINDINGS.update.desc),
|
(DEFAULT_KEYBINDINGS.update, DEFAULT_KEYBINDINGS.update.desc),
|
||||||
(DEFAULT_KEYBINDINGS.edit, DEFAULT_KEYBINDINGS.edit.desc),
|
(DEFAULT_KEYBINDINGS.edit, DEFAULT_KEYBINDINGS.edit.desc),
|
||||||
(DEFAULT_KEYBINDINGS.search, "auto search"),
|
(
|
||||||
|
DEFAULT_KEYBINDINGS.auto_search,
|
||||||
|
DEFAULT_KEYBINDINGS.auto_search.desc,
|
||||||
|
),
|
||||||
(DEFAULT_KEYBINDINGS.esc, DEFAULT_KEYBINDINGS.esc.desc),
|
(DEFAULT_KEYBINDINGS.esc, DEFAULT_KEYBINDINGS.esc.desc),
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -54,7 +57,10 @@ pub static MANUAL_MOVIE_SEARCH_CONTEXT_CLUES: [ContextClue; 6] = [
|
|||||||
(DEFAULT_KEYBINDINGS.update, DEFAULT_KEYBINDINGS.update.desc),
|
(DEFAULT_KEYBINDINGS.update, DEFAULT_KEYBINDINGS.update.desc),
|
||||||
(DEFAULT_KEYBINDINGS.edit, DEFAULT_KEYBINDINGS.edit.desc),
|
(DEFAULT_KEYBINDINGS.edit, DEFAULT_KEYBINDINGS.edit.desc),
|
||||||
(DEFAULT_KEYBINDINGS.sort, DEFAULT_KEYBINDINGS.sort.desc),
|
(DEFAULT_KEYBINDINGS.sort, DEFAULT_KEYBINDINGS.sort.desc),
|
||||||
(DEFAULT_KEYBINDINGS.search, "auto search"),
|
(
|
||||||
|
DEFAULT_KEYBINDINGS.auto_search,
|
||||||
|
DEFAULT_KEYBINDINGS.auto_search.desc,
|
||||||
|
),
|
||||||
(DEFAULT_KEYBINDINGS.esc, DEFAULT_KEYBINDINGS.esc.desc),
|
(DEFAULT_KEYBINDINGS.esc, DEFAULT_KEYBINDINGS.esc.desc),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -133,8 +133,8 @@ mod tests {
|
|||||||
|
|
||||||
let (key_binding, description) = movie_details_context_clues_iter.next().unwrap();
|
let (key_binding, description) = movie_details_context_clues_iter.next().unwrap();
|
||||||
|
|
||||||
assert_eq!(*key_binding, DEFAULT_KEYBINDINGS.search);
|
assert_eq!(*key_binding, DEFAULT_KEYBINDINGS.auto_search);
|
||||||
assert_str_eq!(*description, "auto search");
|
assert_str_eq!(*description, DEFAULT_KEYBINDINGS.auto_search.desc);
|
||||||
|
|
||||||
let (key_binding, description) = movie_details_context_clues_iter.next().unwrap();
|
let (key_binding, description) = movie_details_context_clues_iter.next().unwrap();
|
||||||
|
|
||||||
@@ -169,8 +169,8 @@ mod tests {
|
|||||||
|
|
||||||
let (key_binding, description) = manual_movie_search_context_clues_iter.next().unwrap();
|
let (key_binding, description) = manual_movie_search_context_clues_iter.next().unwrap();
|
||||||
|
|
||||||
assert_eq!(*key_binding, DEFAULT_KEYBINDINGS.search);
|
assert_eq!(*key_binding, DEFAULT_KEYBINDINGS.auto_search);
|
||||||
assert_str_eq!(*description, "auto search");
|
assert_str_eq!(*description, DEFAULT_KEYBINDINGS.auto_search.desc);
|
||||||
|
|
||||||
let (key_binding, description) = manual_movie_search_context_clues_iter.next().unwrap();
|
let (key_binding, description) = manual_movie_search_context_clues_iter.next().unwrap();
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,21 @@ pub static SERIES_CONTEXT_CLUES: [ContextClue; 10] = [
|
|||||||
(DEFAULT_KEYBINDINGS.esc, "cancel filter"),
|
(DEFAULT_KEYBINDINGS.esc, "cancel filter"),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
pub static SERIES_DETAILS_CONTEXT_CLUES: [ContextClue; 6] = [
|
||||||
|
(
|
||||||
|
DEFAULT_KEYBINDINGS.refresh,
|
||||||
|
DEFAULT_KEYBINDINGS.refresh.desc,
|
||||||
|
),
|
||||||
|
(DEFAULT_KEYBINDINGS.submit, "season details"),
|
||||||
|
(DEFAULT_KEYBINDINGS.search, DEFAULT_KEYBINDINGS.search.desc),
|
||||||
|
(DEFAULT_KEYBINDINGS.update, DEFAULT_KEYBINDINGS.update.desc),
|
||||||
|
(
|
||||||
|
DEFAULT_KEYBINDINGS.auto_search,
|
||||||
|
DEFAULT_KEYBINDINGS.auto_search.desc,
|
||||||
|
),
|
||||||
|
(DEFAULT_KEYBINDINGS.esc, DEFAULT_KEYBINDINGS.esc.desc),
|
||||||
|
];
|
||||||
|
|
||||||
pub static HISTORY_CONTEXT_CLUES: [ContextClue; 5] = [
|
pub static HISTORY_CONTEXT_CLUES: [ContextClue; 5] = [
|
||||||
(DEFAULT_KEYBINDINGS.sort, DEFAULT_KEYBINDINGS.sort.desc),
|
(DEFAULT_KEYBINDINGS.sort, DEFAULT_KEYBINDINGS.sort.desc),
|
||||||
(DEFAULT_KEYBINDINGS.search, DEFAULT_KEYBINDINGS.search.desc),
|
(DEFAULT_KEYBINDINGS.search, DEFAULT_KEYBINDINGS.search.desc),
|
||||||
@@ -36,17 +51,6 @@ pub static HISTORY_CONTEXT_CLUES: [ContextClue; 5] = [
|
|||||||
(DEFAULT_KEYBINDINGS.esc, "cancel filter"),
|
(DEFAULT_KEYBINDINGS.esc, "cancel filter"),
|
||||||
];
|
];
|
||||||
|
|
||||||
pub static SERIES_DETAILS_CONTEXT_CLUES: [ContextClue; 5] = [
|
|
||||||
(
|
|
||||||
DEFAULT_KEYBINDINGS.refresh,
|
|
||||||
DEFAULT_KEYBINDINGS.refresh.desc,
|
|
||||||
),
|
|
||||||
(DEFAULT_KEYBINDINGS.update, DEFAULT_KEYBINDINGS.update.desc),
|
|
||||||
(DEFAULT_KEYBINDINGS.submit, "details"),
|
|
||||||
(DEFAULT_KEYBINDINGS.search, "auto search"),
|
|
||||||
(DEFAULT_KEYBINDINGS.esc, DEFAULT_KEYBINDINGS.esc.desc),
|
|
||||||
];
|
|
||||||
|
|
||||||
pub static SEASON_DETAILS_CONTEXT_CLUES: [ContextClue; 5] = [
|
pub static SEASON_DETAILS_CONTEXT_CLUES: [ContextClue; 5] = [
|
||||||
(
|
(
|
||||||
DEFAULT_KEYBINDINGS.refresh,
|
DEFAULT_KEYBINDINGS.refresh,
|
||||||
|
|||||||
@@ -128,18 +128,23 @@ mod tests {
|
|||||||
|
|
||||||
let (key_binding, description) = series_details_context_clues_iter.next().unwrap();
|
let (key_binding, description) = series_details_context_clues_iter.next().unwrap();
|
||||||
|
|
||||||
|
assert_eq!(*key_binding, DEFAULT_KEYBINDINGS.submit);
|
||||||
|
assert_str_eq!(*description, "season details");
|
||||||
|
|
||||||
|
let (key_binding, description) = series_details_context_clues_iter.next().unwrap();
|
||||||
|
|
||||||
|
assert_eq!(*key_binding, DEFAULT_KEYBINDINGS.search);
|
||||||
|
assert_str_eq!(*description, DEFAULT_KEYBINDINGS.search.desc);
|
||||||
|
|
||||||
|
let (key_binding, description) = series_details_context_clues_iter.next().unwrap();
|
||||||
|
|
||||||
assert_eq!(*key_binding, DEFAULT_KEYBINDINGS.update);
|
assert_eq!(*key_binding, DEFAULT_KEYBINDINGS.update);
|
||||||
assert_str_eq!(*description, DEFAULT_KEYBINDINGS.update.desc);
|
assert_str_eq!(*description, DEFAULT_KEYBINDINGS.update.desc);
|
||||||
|
|
||||||
let (key_binding, description) = series_details_context_clues_iter.next().unwrap();
|
let (key_binding, description) = series_details_context_clues_iter.next().unwrap();
|
||||||
|
|
||||||
assert_eq!(*key_binding, DEFAULT_KEYBINDINGS.submit);
|
assert_eq!(*key_binding, DEFAULT_KEYBINDINGS.auto_search);
|
||||||
assert_str_eq!(*description, "details");
|
assert_str_eq!(*description, DEFAULT_KEYBINDINGS.auto_search.desc);
|
||||||
|
|
||||||
let (key_binding, description) = series_details_context_clues_iter.next().unwrap();
|
|
||||||
|
|
||||||
assert_eq!(*key_binding, DEFAULT_KEYBINDINGS.search);
|
|
||||||
assert_str_eq!(*description, "auto search");
|
|
||||||
|
|
||||||
let (key_binding, description) = series_details_context_clues_iter.next().unwrap();
|
let (key_binding, description) = series_details_context_clues_iter.next().unwrap();
|
||||||
|
|
||||||
|
|||||||
@@ -432,7 +432,7 @@ impl<'a, 'b> KeyEventHandler<'a, 'b, ActiveRadarrBlock> for MovieDetailsHandler<
|
|||||||
| ActiveRadarrBlock::Cast
|
| ActiveRadarrBlock::Cast
|
||||||
| ActiveRadarrBlock::Crew
|
| ActiveRadarrBlock::Crew
|
||||||
| ActiveRadarrBlock::ManualSearch => match self.key {
|
| ActiveRadarrBlock::ManualSearch => match self.key {
|
||||||
_ if key == DEFAULT_KEYBINDINGS.search.key => {
|
_ if key == DEFAULT_KEYBINDINGS.auto_search.key => {
|
||||||
self
|
self
|
||||||
.app
|
.app
|
||||||
.push_navigation_stack(ActiveRadarrBlock::AutomaticallySearchMoviePrompt.into());
|
.push_navigation_stack(ActiveRadarrBlock::AutomaticallySearchMoviePrompt.into());
|
||||||
|
|||||||
@@ -1455,6 +1455,7 @@ mod tests {
|
|||||||
use strum::IntoEnumIterator;
|
use strum::IntoEnumIterator;
|
||||||
|
|
||||||
use crate::handlers::radarr_handlers::library::movie_details_handler::releases_sorting_options;
|
use crate::handlers::radarr_handlers::library::movie_details_handler::releases_sorting_options;
|
||||||
|
use crate::models::radarr_models::RadarrRelease;
|
||||||
use crate::models::radarr_models::{MinimumAvailability, Movie};
|
use crate::models::radarr_models::{MinimumAvailability, Movie};
|
||||||
use crate::models::servarr_data::radarr::modals::MovieDetailsModal;
|
use crate::models::servarr_data::radarr::modals::MovieDetailsModal;
|
||||||
use crate::models::servarr_data::radarr::radarr_data::radarr_test_utils::utils::create_test_radarr_data;
|
use crate::models::servarr_data::radarr::radarr_data::radarr_test_utils::utils::create_test_radarr_data;
|
||||||
@@ -1467,7 +1468,7 @@ mod tests {
|
|||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
#[rstest]
|
#[rstest]
|
||||||
fn test_search_key(
|
fn test_auto_search_key(
|
||||||
#[values(
|
#[values(
|
||||||
ActiveRadarrBlock::MovieDetails,
|
ActiveRadarrBlock::MovieDetails,
|
||||||
ActiveRadarrBlock::MovieHistory,
|
ActiveRadarrBlock::MovieHistory,
|
||||||
@@ -1478,8 +1479,6 @@ mod tests {
|
|||||||
)]
|
)]
|
||||||
active_radarr_block: ActiveRadarrBlock,
|
active_radarr_block: ActiveRadarrBlock,
|
||||||
) {
|
) {
|
||||||
use crate::models::radarr_models::RadarrRelease;
|
|
||||||
|
|
||||||
let mut app = App::default();
|
let mut app = App::default();
|
||||||
let mut modal = MovieDetailsModal {
|
let mut modal = MovieDetailsModal {
|
||||||
movie_details: ScrollableText::with_string("Test".to_owned()),
|
movie_details: ScrollableText::with_string("Test".to_owned()),
|
||||||
@@ -1496,7 +1495,7 @@ mod tests {
|
|||||||
app.data.radarr_data.movie_details_modal = Some(modal);
|
app.data.radarr_data.movie_details_modal = Some(modal);
|
||||||
|
|
||||||
MovieDetailsHandler::with(
|
MovieDetailsHandler::with(
|
||||||
DEFAULT_KEYBINDINGS.search.key,
|
DEFAULT_KEYBINDINGS.auto_search.key,
|
||||||
&mut app,
|
&mut app,
|
||||||
active_radarr_block,
|
active_radarr_block,
|
||||||
None,
|
None,
|
||||||
@@ -1510,7 +1509,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[rstest]
|
#[rstest]
|
||||||
fn test_search_key_no_op_when_not_ready(
|
fn test_auto_search_key_no_op_when_not_ready(
|
||||||
#[values(
|
#[values(
|
||||||
ActiveRadarrBlock::MovieDetails,
|
ActiveRadarrBlock::MovieDetails,
|
||||||
ActiveRadarrBlock::MovieHistory,
|
ActiveRadarrBlock::MovieHistory,
|
||||||
@@ -1530,7 +1529,7 @@ mod tests {
|
|||||||
});
|
});
|
||||||
|
|
||||||
MovieDetailsHandler::with(
|
MovieDetailsHandler::with(
|
||||||
DEFAULT_KEYBINDINGS.search.key,
|
DEFAULT_KEYBINDINGS.auto_search.key,
|
||||||
&mut app,
|
&mut app,
|
||||||
active_radarr_block,
|
active_radarr_block,
|
||||||
None,
|
None,
|
||||||
|
|||||||
Reference in New Issue
Block a user