diff --git a/src/models/servarr_data/sonarr/modals.rs b/src/models/servarr_data/sonarr/modals.rs index e0d367a..4745db9 100644 --- a/src/models/servarr_data/sonarr/modals.rs +++ b/src/models/servarr_data/sonarr/modals.rs @@ -9,8 +9,6 @@ pub struct EpisodeDetailsModal { pub audio_details: String, pub video_details: String, // pub episode_history: StatefulTable, - // pub episode_cast: StatefulTable, - // pub episode_crew: StatefulTable, pub episode_releases: StatefulTable, } diff --git a/src/models/servarr_data/sonarr/sonarr_data.rs b/src/models/servarr_data/sonarr/sonarr_data.rs index 88fb209..d9a8419 100644 --- a/src/models/servarr_data/sonarr/sonarr_data.rs +++ b/src/models/servarr_data/sonarr/sonarr_data.rs @@ -52,15 +52,74 @@ impl Default for SonarrData { #[derive(Clone, Copy, PartialEq, Eq, Debug, Default, EnumIter)] pub enum ActiveSonarrBlock { - Blocklist, - BlocklistSortPrompt, - Episodes, - EpisodesSortPrompt, - Seasons, - SeasonsSortPrompt, #[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, + AddSeriesPrompt, + AddSeriesSearchInput, + AddSeriesSearchResults, + AddSeriesAlreadyInLibrary, + AddSeriesEmptySearchResults, + AddSeriesConfirmPrompt, + Downloads, + DeleteDownloadPrompt, + Blocklist, + BlocklistClearAllItemsPrompt, + BlocklistItemDetails, + BlocklistSortPrompt, + DeleteBlocklistItemPrompt, + RootFolders, + AddRootFolderPrompt, + DeleteRootFolderPrompt, + Indexers, + DeleteIndexerPrompt, + EditIndexerPrompt, + AllIndexerSettingsPrompt, + TestIndexer, + TestAllIndexers, + System, + SystemTasks, + SystemTaskStartConfirmPrompt, + SystemLogs, + SystemQueuedEvents, + SystemUpdates, } impl From for Route { diff --git a/src/models/servarr_models.rs b/src/models/servarr_models.rs index 909199f..82392d7 100644 --- a/src/models/servarr_models.rs +++ b/src/models/servarr_models.rs @@ -114,7 +114,7 @@ pub struct IndexerField { pub value: Option, } -#[derive(Serialize, Deserialize, Default, Hash, Debug, Clone, PartialEq, Eq, Ord, PartialOrd)] +#[derive(Serialize, Deserialize, Default, Debug, Clone, PartialEq, Eq, Ord, PartialOrd)] pub struct Language { pub name: String, } diff --git a/src/models/sonarr_models.rs b/src/models/sonarr_models.rs index 673e459..01e381a 100644 --- a/src/models/sonarr_models.rs +++ b/src/models/sonarr_models.rs @@ -68,7 +68,7 @@ pub struct DownloadsResponse { pub records: Vec, } -#[derive(Default, Serialize, Deserialize, Hash, Debug, Clone, PartialEq, Eq)] +#[derive(Default, Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct Episode { #[serde(deserialize_with = "super::from_i64")] @@ -97,7 +97,7 @@ impl Display for Episode { } } -#[derive(Default, Serialize, Deserialize, Hash, Debug, Clone, PartialEq, Eq)] +#[derive(Default, Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] #[serde(rename_all = "camelCase")] pub struct EpisodeFile { pub relative_path: String, @@ -124,7 +124,7 @@ pub struct IndexerSettings { pub rss_sync_interval: i64, } -#[derive(Serialize, Deserialize, Derivative, Hash, Debug, Clone, PartialEq, Eq)] +#[derive(Serialize, Deserialize, Derivative, Debug, Clone, PartialEq, Eq)] #[derivative(Default)] #[serde(rename_all = "camelCase")] pub struct MediaInfo { @@ -304,6 +304,34 @@ impl SeriesStatus { } } +#[derive(Serialize, Deserialize, Default, Debug, Clone, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct SonarrEpisodeHistoryResponse { + pub records: Vec, +} + +#[derive(Serialize, Deserialize, Default, Debug, Clone, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct SonarrHistoryData { + pub dropped_path: String, + pub imported_path: String, +} + +#[derive(Serialize, Deserialize, Default, Debug, Clone, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct SonarrHistoryItem { + #[serde(deserialize_with = "super::from_i64")] + pub id: i64, + pub source_title: HorizontallyScrollableText, + #[serde(deserialize_with = "super::from_i64")] + pub episode_id: i64, + pub quality: QualityWrapper, + pub languages: Vec, + pub date: DateTime, + pub event_type: String, + pub data: SonarrHistoryData, +} + #[derive(Clone, Serialize, Deserialize, Debug, PartialEq, Eq)] #[serde(untagged)] #[allow(clippy::large_enum_variant)] diff --git a/src/network/sonarr_network_tests.rs b/src/network/sonarr_network_tests.rs index 4eb93fb..cfb3033 100644 --- a/src/network/sonarr_network_tests.rs +++ b/src/network/sonarr_network_tests.rs @@ -855,7 +855,7 @@ mod test { app_arc .lock() .await - .push_navigation_stack(ActiveSonarrBlock::Episodes.into()); + .push_navigation_stack(ActiveSonarrBlock::EpisodeDetails.into()); let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new()); if let SonarrSerdeable::Episode(episode) = network @@ -2155,7 +2155,7 @@ mod test { app_arc .lock() .await - .push_navigation_stack(ActiveSonarrBlock::Episodes.into()); + .push_navigation_stack(ActiveSonarrBlock::EpisodeDetails.into()); let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new()); let id = network.extract_episode_id(None).await; @@ -2175,7 +2175,7 @@ mod test { app_arc .lock() .await - .push_navigation_stack(ActiveSonarrBlock::Episodes.into()); + .push_navigation_stack(ActiveSonarrBlock::EpisodeDetails.into()); let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new()); let id = network.extract_episode_id(Some(2)).await; @@ -2199,7 +2199,7 @@ mod test { app_arc .lock() .await - .push_navigation_stack(ActiveSonarrBlock::Episodes.into()); + .push_navigation_stack(ActiveSonarrBlock::EpisodeDetails.into()); let mut network = Network::new(&app_arc, CancellationToken::new(), Client::new()); let id = network.extract_episode_id(None).await;