feat(ui): Support for modifying the indexer priority in Radarr
This commit is contained in:
@@ -36,6 +36,7 @@ impl From<&RadarrData<'_>> for EditIndexerModal {
|
||||
enable_interactive_search,
|
||||
tags,
|
||||
fields,
|
||||
priority,
|
||||
..
|
||||
} = radarr_data.indexers.current_selection();
|
||||
let seed_ratio_field_option = fields
|
||||
@@ -53,6 +54,7 @@ impl From<&RadarrData<'_>> for EditIndexerModal {
|
||||
edit_indexer_modal.enable_rss = Some(*enable_rss);
|
||||
edit_indexer_modal.enable_automatic_search = Some(*enable_automatic_search);
|
||||
edit_indexer_modal.enable_interactive_search = Some(*enable_interactive_search);
|
||||
edit_indexer_modal.priority = *priority;
|
||||
edit_indexer_modal.url = fields
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
|
||||
@@ -45,6 +45,7 @@ mod test {
|
||||
enable_interactive_search: true,
|
||||
tags: vec![Number::from(1), Number::from(2)],
|
||||
fields: Some(fields),
|
||||
priority: 1,
|
||||
..Indexer::default()
|
||||
};
|
||||
radarr_data.indexers.set_items(vec![indexer]);
|
||||
@@ -55,6 +56,7 @@ mod test {
|
||||
assert_eq!(edit_indexer_modal.enable_rss, Some(true));
|
||||
assert_eq!(edit_indexer_modal.enable_automatic_search, Some(true));
|
||||
assert_eq!(edit_indexer_modal.enable_interactive_search, Some(true));
|
||||
assert_eq!(edit_indexer_modal.priority, 1);
|
||||
assert_str_eq!(edit_indexer_modal.url.text, "https://test.com");
|
||||
assert_str_eq!(edit_indexer_modal.api_key.text, "1234");
|
||||
|
||||
@@ -93,6 +95,7 @@ mod test {
|
||||
enable_interactive_search: true,
|
||||
tags: vec![Number::from(1), Number::from(2)],
|
||||
fields: Some(fields),
|
||||
priority: 1,
|
||||
..Indexer::default()
|
||||
};
|
||||
radarr_data.indexers.set_items(vec![indexer]);
|
||||
@@ -103,6 +106,7 @@ mod test {
|
||||
assert_eq!(edit_indexer_modal.enable_rss, Some(true));
|
||||
assert_eq!(edit_indexer_modal.enable_automatic_search, Some(true));
|
||||
assert_eq!(edit_indexer_modal.enable_interactive_search, Some(true));
|
||||
assert_eq!(edit_indexer_modal.priority, 1);
|
||||
assert_str_eq!(edit_indexer_modal.url.text, "https://test.com");
|
||||
assert_str_eq!(edit_indexer_modal.api_key.text, "1234");
|
||||
assert!(edit_indexer_modal.seed_ratio.text.is_empty());
|
||||
|
||||
@@ -84,6 +84,7 @@ impl From<&SonarrData<'_>> for EditIndexerModal {
|
||||
enable_interactive_search,
|
||||
tags,
|
||||
fields,
|
||||
priority,
|
||||
..
|
||||
} = sonarr_data.indexers.current_selection();
|
||||
let seed_ratio_field_option = fields
|
||||
@@ -101,6 +102,7 @@ impl From<&SonarrData<'_>> for EditIndexerModal {
|
||||
edit_indexer_modal.enable_rss = Some(*enable_rss);
|
||||
edit_indexer_modal.enable_automatic_search = Some(*enable_automatic_search);
|
||||
edit_indexer_modal.enable_interactive_search = Some(*enable_interactive_search);
|
||||
edit_indexer_modal.priority = *priority;
|
||||
edit_indexer_modal.url = fields
|
||||
.as_ref()
|
||||
.unwrap()
|
||||
|
||||
@@ -104,6 +104,7 @@ mod tests {
|
||||
enable_interactive_search: true,
|
||||
tags: vec![Number::from(1), Number::from(2)],
|
||||
fields: Some(fields),
|
||||
priority: 1,
|
||||
..Indexer::default()
|
||||
};
|
||||
sonarr_data.indexers.set_items(vec![indexer]);
|
||||
@@ -114,6 +115,7 @@ mod tests {
|
||||
assert_eq!(edit_indexer_modal.enable_rss, Some(true));
|
||||
assert_eq!(edit_indexer_modal.enable_automatic_search, Some(true));
|
||||
assert_eq!(edit_indexer_modal.enable_interactive_search, Some(true));
|
||||
assert_eq!(edit_indexer_modal.priority, 1);
|
||||
assert_str_eq!(edit_indexer_modal.url.text, "https://test.com");
|
||||
assert_str_eq!(edit_indexer_modal.api_key.text, "1234");
|
||||
|
||||
@@ -152,6 +154,7 @@ mod tests {
|
||||
enable_interactive_search: true,
|
||||
tags: vec![Number::from(1), Number::from(2)],
|
||||
fields: Some(fields),
|
||||
priority: 1,
|
||||
..Indexer::default()
|
||||
};
|
||||
sonarr_data.indexers.set_items(vec![indexer]);
|
||||
@@ -162,6 +165,7 @@ mod tests {
|
||||
assert_eq!(edit_indexer_modal.enable_rss, Some(true));
|
||||
assert_eq!(edit_indexer_modal.enable_automatic_search, Some(true));
|
||||
assert_eq!(edit_indexer_modal.enable_interactive_search, Some(true));
|
||||
assert_eq!(edit_indexer_modal.priority, 1);
|
||||
assert_str_eq!(edit_indexer_modal.url.text, "https://test.com");
|
||||
assert_str_eq!(edit_indexer_modal.api_key.text, "1234");
|
||||
assert!(edit_indexer_modal.seed_ratio.text.is_empty());
|
||||
|
||||
@@ -927,9 +927,6 @@ impl<'a, 'b> Network<'a, 'b> {
|
||||
info!("Constructing edit indexer body");
|
||||
|
||||
let mut detailed_indexer_body: Value = serde_json::from_str(&response).unwrap();
|
||||
let priority = detailed_indexer_body["priority"]
|
||||
.as_i64()
|
||||
.expect("Unable to deserialize 'priority'");
|
||||
|
||||
let (
|
||||
name,
|
||||
@@ -942,6 +939,9 @@ impl<'a, 'b> Network<'a, 'b> {
|
||||
tags,
|
||||
priority,
|
||||
) = if let Some(params) = edit_indexer_params {
|
||||
let priority = detailed_indexer_body["priority"]
|
||||
.as_i64()
|
||||
.expect("Unable to deserialize 'priority'");
|
||||
let seed_ratio_field_option = detailed_indexer_body["fields"]
|
||||
.as_array()
|
||||
.unwrap()
|
||||
|
||||
@@ -858,9 +858,6 @@ impl<'a, 'b> Network<'a, 'b> {
|
||||
info!("Constructing edit indexer body");
|
||||
|
||||
let mut detailed_indexer_body: Value = serde_json::from_str(&response).unwrap();
|
||||
let priority = detailed_indexer_body["priority"]
|
||||
.as_i64()
|
||||
.expect("Unable to deserialize 'priority'");
|
||||
|
||||
let (
|
||||
name,
|
||||
@@ -873,6 +870,9 @@ impl<'a, 'b> Network<'a, 'b> {
|
||||
tags,
|
||||
priority,
|
||||
) = if let Some(params) = edit_indexer_params {
|
||||
let priority = detailed_indexer_body["priority"]
|
||||
.as_i64()
|
||||
.expect("Unable to deserialize 'priority'");
|
||||
let seed_ratio_field_option = detailed_indexer_body["fields"]
|
||||
.as_array()
|
||||
.unwrap()
|
||||
|
||||
@@ -59,8 +59,9 @@ fn draw_edit_indexer_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
if edit_indexer_modal_option.is_some() {
|
||||
let edit_indexer_modal = edit_indexer_modal_option.as_ref().unwrap();
|
||||
|
||||
let [settings_area, _, buttons_area, help_area] = Layout::vertical([
|
||||
Constraint::Length(15),
|
||||
let [_, settings_area, _, buttons_area, help_area] = Layout::vertical([
|
||||
Constraint::Fill(1),
|
||||
Constraint::Length(18),
|
||||
Constraint::Fill(1),
|
||||
Constraint::Length(3),
|
||||
Constraint::Length(1),
|
||||
@@ -71,13 +72,15 @@ fn draw_edit_indexer_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
Layout::horizontal([Constraint::Ratio(1, 2), Constraint::Ratio(1, 2)])
|
||||
.margin(1)
|
||||
.areas(settings_area);
|
||||
let [name_area, rss_area, auto_search_area, interactive_search_area] = Layout::vertical([
|
||||
Constraint::Length(3),
|
||||
Constraint::Length(3),
|
||||
Constraint::Length(3),
|
||||
Constraint::Length(3),
|
||||
])
|
||||
.areas(left_side_area);
|
||||
let [name_area, rss_area, auto_search_area, interactive_search_area, priority_area] =
|
||||
Layout::vertical([
|
||||
Constraint::Length(3),
|
||||
Constraint::Length(3),
|
||||
Constraint::Length(3),
|
||||
Constraint::Length(3),
|
||||
Constraint::Length(3),
|
||||
])
|
||||
.areas(left_side_area);
|
||||
let [url_area, api_key_area, seed_ratio_area, tags_area] = Layout::vertical([
|
||||
Constraint::Length(3),
|
||||
Constraint::Length(3),
|
||||
@@ -87,6 +90,7 @@ fn draw_edit_indexer_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
.areas(right_side_area);
|
||||
|
||||
if let Route::Radarr(active_radarr_block, _) = app.get_current_route() {
|
||||
let priority = edit_indexer_modal.priority.to_string();
|
||||
let name_input_box = InputBox::new(&edit_indexer_modal.name.text)
|
||||
.offset(edit_indexer_modal.name.offset.load(Ordering::SeqCst))
|
||||
.label("Name")
|
||||
@@ -107,6 +111,11 @@ fn draw_edit_indexer_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
.label("Tags")
|
||||
.highlighted(selected_block == ActiveRadarrBlock::EditIndexerTagsInput)
|
||||
.selected(active_radarr_block == ActiveRadarrBlock::EditIndexerTagsInput);
|
||||
let priority_input_box = InputBox::new(&priority)
|
||||
.cursor_after_string(false)
|
||||
.label("Indexer Priority ▴▾")
|
||||
.highlighted(selected_block == ActiveRadarrBlock::EditIndexerPriorityInput)
|
||||
.selected(active_radarr_block == ActiveRadarrBlock::EditIndexerPriorityInput);
|
||||
|
||||
render_selectable_input_box!(name_input_box, f, name_area);
|
||||
render_selectable_input_box!(url_input_box, f, url_area);
|
||||
@@ -126,8 +135,10 @@ fn draw_edit_indexer_prompt(f: &mut Frame<'_>, app: &mut App<'_>, area: Rect) {
|
||||
|
||||
render_selectable_input_box!(seed_ratio_input_box, f, seed_ratio_area);
|
||||
render_selectable_input_box!(tags_input_box, f, tags_area);
|
||||
render_selectable_input_box!(priority_input_box, f, priority_area);
|
||||
} else {
|
||||
render_selectable_input_box!(tags_input_box, f, seed_ratio_area);
|
||||
render_selectable_input_box!(priority_input_box, f, tags_area);
|
||||
}
|
||||
|
||||
let rss_checkbox = Checkbox::new("Enable RSS")
|
||||
|
||||
@@ -29,7 +29,7 @@ impl Size {
|
||||
match self {
|
||||
Size::SmallPrompt => (20, 20),
|
||||
Size::Prompt => (37, 37),
|
||||
Size::LargePrompt => (70, 45),
|
||||
Size::LargePrompt => (70, 50),
|
||||
Size::Message => (25, 8),
|
||||
Size::NarrowMessage => (50, 20),
|
||||
Size::LargeMessage => (25, 25),
|
||||
|
||||
@@ -8,7 +8,7 @@ mod tests {
|
||||
fn test_dimensions_to_percent() {
|
||||
assert_eq!(Size::SmallPrompt.to_percent(), (20, 20));
|
||||
assert_eq!(Size::Prompt.to_percent(), (37, 37));
|
||||
assert_eq!(Size::LargePrompt.to_percent(), (70, 45));
|
||||
assert_eq!(Size::LargePrompt.to_percent(), (70, 50));
|
||||
assert_eq!(Size::Message.to_percent(), (25, 8));
|
||||
assert_eq!(Size::NarrowMessage.to_percent(), (50, 20));
|
||||
assert_eq!(Size::LargeMessage.to_percent(), (25, 25));
|
||||
|
||||
Reference in New Issue
Block a user