feat: Initial Lidarr support for searching for new artists

This commit is contained in:
2026-01-07 15:53:18 -07:00
parent d3947d9e15
commit 243de47cae
37 changed files with 1646 additions and 72 deletions
+21 -3
View File
@@ -3,8 +3,8 @@ use serde_json::Number;
use super::modals::EditArtistModal;
use crate::app::lidarr::lidarr_context_clues::ARTISTS_CONTEXT_CLUES;
use crate::models::{
BlockSelectionState, Route, TabRoute, TabState,
lidarr_models::{Artist, DownloadRecord},
BlockSelectionState, HorizontallyScrollableText, Route, TabRoute, TabState,
lidarr_models::{AddArtistSearchResult, Artist, DownloadRecord},
servarr_models::{DiskSpace, RootFolder},
stateful_table::StatefulTable,
};
@@ -18,7 +18,8 @@ use {
crate::models::stateful_table::SortOption,
crate::network::lidarr_network::lidarr_network_test_utils::test_utils::quality_profile_map,
crate::network::lidarr_network::lidarr_network_test_utils::test_utils::{
download_record, metadata_profile, metadata_profile_map, quality_profile, root_folder, tags_map,
add_artist_search_result, download_record, metadata_profile, metadata_profile_map,
quality_profile, root_folder, tags_map,
},
crate::network::servarr_test_utils::diskspace,
strum::{Display, EnumString, IntoEnumIterator},
@@ -29,7 +30,9 @@ use {
mod lidarr_data_tests;
pub struct LidarrData<'a> {
pub add_artist_search: Option<HorizontallyScrollableText>,
pub add_import_list_exclusion: bool,
pub add_searched_artists: Option<StatefulTable<AddArtistSearchResult>>,
pub artists: StatefulTable<Artist>,
pub delete_artist_files: bool,
pub disk_space_vec: Vec<DiskSpace>,
@@ -82,7 +85,9 @@ impl LidarrData<'_> {
impl<'a> Default for LidarrData<'a> {
fn default() -> LidarrData<'a> {
LidarrData {
add_artist_search: None,
add_import_list_exclusion: false,
add_searched_artists: None,
artists: StatefulTable::default(),
delete_artist_files: false,
disk_space_vec: Vec::new(),
@@ -145,6 +150,10 @@ impl LidarrData<'_> {
lidarr_data.downloads.set_items(vec![download_record()]);
lidarr_data.root_folders.set_items(vec![root_folder()]);
lidarr_data.version = "1.0.0".to_owned();
lidarr_data.add_artist_search = Some("Test Artist".into());
let mut add_searched_artists = StatefulTable::default();
add_searched_artists.set_items(vec![add_artist_search_result()]);
lidarr_data.add_searched_artists = Some(add_searched_artists);
lidarr_data
}
@@ -156,6 +165,9 @@ pub enum ActiveLidarrBlock {
#[default]
Artists,
ArtistsSortPrompt,
AddArtistEmptySearchResults,
AddArtistSearchInput,
AddArtistSearchResults,
DeleteArtistPrompt,
DeleteArtistConfirmPrompt,
DeleteArtistToggleDeleteFile,
@@ -185,6 +197,12 @@ pub static LIBRARY_BLOCKS: [ActiveLidarrBlock; 7] = [
ActiveLidarrBlock::UpdateAllArtistsPrompt,
];
pub static ADD_ARTIST_BLOCKS: [ActiveLidarrBlock; 3] = [
ActiveLidarrBlock::AddArtistEmptySearchResults,
ActiveLidarrBlock::AddArtistSearchInput,
ActiveLidarrBlock::AddArtistSearchResults,
];
pub static DELETE_ARTIST_BLOCKS: [ActiveLidarrBlock; 4] = [
ActiveLidarrBlock::DeleteArtistPrompt,
ActiveLidarrBlock::DeleteArtistConfirmPrompt,