From bd2d2875a5337442967aa42d818eee1db7ba2bb1 Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Wed, 20 Nov 2024 13:24:44 -0700 Subject: [PATCH] feat(models): Added an additional History tab to the mocked tabs for viewing all Sonarr history at once --- src/models/servarr_data/sonarr/sonarr_data.rs | 123 ++++++++++-------- .../servarr_data/sonarr/sonarr_data_tests.rs | 2 + src/models/sonarr_models.rs | 2 +- 3 files changed, 71 insertions(+), 56 deletions(-) diff --git a/src/models/servarr_data/sonarr/sonarr_data.rs b/src/models/servarr_data/sonarr/sonarr_data.rs index d9a8419..99ee413 100644 --- a/src/models/servarr_data/sonarr/sonarr_data.rs +++ b/src/models/servarr_data/sonarr/sonarr_data.rs @@ -4,7 +4,10 @@ use strum::EnumIter; use crate::models::{ servarr_models::{Indexer, QueueEvent}, - sonarr_models::{BlocklistItem, DownloadRecord, IndexerSettings, Season, Series}, + sonarr_models::{ + BlocklistItem, DownloadRecord, IndexerSettings, Season, Series, SonarrHistoryItem, + SonarrHistoryWrapper, + }, stateful_list::StatefulList, stateful_table::StatefulTable, HorizontallyScrollableText, Route, @@ -19,6 +22,7 @@ mod sonarr_data_tests; pub struct SonarrData { pub blocklist: StatefulTable, pub downloads: StatefulTable, + pub history: StatefulTable, pub indexers: StatefulTable, pub indexer_settings: Option, pub logs: StatefulList, @@ -27,6 +31,7 @@ pub struct SonarrData { pub seasons: StatefulTable, pub season_details_modal: Option, pub series: StatefulTable, + pub series_history: Option>, pub start_time: DateTime, pub version: String, } @@ -36,14 +41,16 @@ impl Default for SonarrData { SonarrData { blocklist: StatefulTable::default(), downloads: StatefulTable::default(), + history: StatefulTable::default(), indexers: StatefulTable::default(), indexer_settings: None, logs: StatefulList::default(), quality_profile_map: BiMap::new(), queued_events: StatefulTable::default(), seasons: StatefulTable::default(), - series: StatefulTable::default(), season_details_modal: None, + series: StatefulTable::default(), + series_history: None, start_time: DateTime::default(), version: String::new(), } @@ -53,73 +60,79 @@ impl Default for SonarrData { #[derive(Clone, Copy, PartialEq, Eq, Debug, Default, EnumIter)] pub enum ActiveSonarrBlock { #[default] - Series, - UpdateAndScanSeriesPrompt, - EditSeriesPrompt, - SeriesSortPrompt, - SearchSeries, - SearchSeriesError, - FilterSeries, - FilterSeriesError, - DeleteSeriesPrompt, - DeleteSeriesConfirmPrompt, - AutomaticallySearchSeriesPrompt, - UpdateAllSeriesPrompt, - SeriesDetails, - SeriesHistory, - HistoryDetails, - MarkHistoryItemAsFailurePrompt, - MarkHistoryItemAsFailureConfirmPrompt, - SearchSeason, - SearchSeasonError, - AutomaticallySearchSeasonPrompt, - SeasonDetails, - SeasonHistory, - ManualSeasonSearch, - ManualSeasonSearchSortPrompt, - ManualSeasonSearchConfirmPrompt, - DeleteEpisodeFilePrompt, - EpisodeDetails, - EpisodesSortPrompt, - SearchEpisodes, - SearchEpisodesError, - FilterEpisodes, - FilterEpisodesError, - AutomaticallySearchEpisodePrompt, - EditEpisodePrompt, - EpisodeHistory, - EpisodeFile, - ManualEpisodeSearch, - ManualEpisodeSearchSortPrompt, - ManualEpisodeSearchConfirmPrompt, + AddRootFolderPrompt, + AddSeriesAlreadyInLibrary, + AddSeriesConfirmPrompt, + AddSeriesEmptySearchResults, AddSeriesPrompt, AddSeriesSearchInput, AddSeriesSearchResults, - AddSeriesAlreadyInLibrary, - AddSeriesEmptySearchResults, - AddSeriesConfirmPrompt, - Downloads, - DeleteDownloadPrompt, + AllIndexerSettingsPrompt, + AutomaticallySearchEpisodePrompt, + AutomaticallySearchSeasonPrompt, + AutomaticallySearchSeriesPrompt, Blocklist, BlocklistClearAllItemsPrompt, BlocklistItemDetails, BlocklistSortPrompt, DeleteBlocklistItemPrompt, - RootFolders, - AddRootFolderPrompt, - DeleteRootFolderPrompt, - Indexers, + DeleteDownloadPrompt, + DeleteEpisodeFilePrompt, DeleteIndexerPrompt, + DeleteRootFolderPrompt, + DeleteSeriesConfirmPrompt, + DeleteSeriesPrompt, + Downloads, + EditEpisodePrompt, EditIndexerPrompt, - AllIndexerSettingsPrompt, - TestIndexer, - TestAllIndexers, + EditSeriesPrompt, + EpisodeDetails, + EpisodeFile, + EpisodeHistory, + EpisodesSortPrompt, + FilterEpisodes, + FilterEpisodesError, + FilterHistory, + FilterHistoryError, + FilterSeries, + FilterSeriesError, + History, + HistoryDetails, + HistorySortPrompt, + Indexers, + ManualEpisodeSearch, + ManualEpisodeSearchConfirmPrompt, + ManualEpisodeSearchSortPrompt, + ManualSeasonSearch, + ManualSeasonSearchConfirmPrompt, + ManualSeasonSearchSortPrompt, + MarkHistoryItemAsFailureConfirmPrompt, + MarkHistoryItemAsFailurePrompt, + RootFolders, + SearchEpisodes, + SearchEpisodesError, + SearchHistory, + SearchHistoryError, + SearchSeason, + SearchSeasonError, + SearchSeries, + SearchSeriesError, + SeasonDetails, + SeasonHistory, + Series, + SeriesDetails, + SeriesHistory, + SeriesSortPrompt, System, - SystemTasks, - SystemTaskStartConfirmPrompt, SystemLogs, SystemQueuedEvents, + SystemTasks, + SystemTaskStartConfirmPrompt, SystemUpdates, + TestAllIndexers, + TestIndexer, + UpdateAllSeriesPrompt, + UpdateAndScanSeriesPrompt, } impl From for Route { diff --git a/src/models/servarr_data/sonarr/sonarr_data_tests.rs b/src/models/servarr_data/sonarr/sonarr_data_tests.rs index c4dd645..0ad5ce2 100644 --- a/src/models/servarr_data/sonarr/sonarr_data_tests.rs +++ b/src/models/servarr_data/sonarr/sonarr_data_tests.rs @@ -36,6 +36,7 @@ mod tests { assert!(sonarr_data.blocklist.is_empty()); assert!(sonarr_data.downloads.is_empty()); + assert!(sonarr_data.history.is_empty()); assert!(sonarr_data.indexers.is_empty()); assert!(sonarr_data.indexer_settings.is_none()); assert!(sonarr_data.logs.is_empty()); @@ -44,6 +45,7 @@ mod tests { assert!(sonarr_data.seasons.is_empty()); assert!(sonarr_data.season_details_modal.is_none()); assert!(sonarr_data.series.is_empty()); + assert!(sonarr_data.series_history.is_empty()); assert_eq!(sonarr_data.start_time, >::default()); assert!(sonarr_data.version.is_empty()); } diff --git a/src/models/sonarr_models.rs b/src/models/sonarr_models.rs index 01e381a..07ebf9d 100644 --- a/src/models/sonarr_models.rs +++ b/src/models/sonarr_models.rs @@ -306,7 +306,7 @@ impl SeriesStatus { #[derive(Serialize, Deserialize, Default, Debug, Clone, PartialEq, Eq)] #[serde(rename_all = "camelCase")] -pub struct SonarrEpisodeHistoryResponse { +pub struct SonarrHistoryWrapper { pub records: Vec, }