feat(ui): Sonarr support for viewing season details

This commit is contained in:
2024-12-10 18:23:09 -07:00
parent 7bf3311102
commit e9a30382a3
14 changed files with 737 additions and 92 deletions
+52 -1
View File
@@ -107,7 +107,7 @@ pub struct DeleteSeriesParams {
#[serde(rename_all = "camelCase")]
pub struct DownloadRecord {
pub title: String,
pub status: String,
pub status: DownloadStatus,
#[serde(deserialize_with = "super::from_i64")]
pub id: i64,
#[serde(deserialize_with = "super::from_i64")]
@@ -124,6 +124,57 @@ pub struct DownloadRecord {
impl Eq for DownloadRecord {}
#[derive(Serialize, Deserialize, Default, PartialEq, Eq, Clone, Copy, Debug, EnumIter)]
#[serde(rename_all = "camelCase")]
pub enum DownloadStatus {
#[default]
Unknown,
Queued,
Paused,
Downloading,
Completed,
Failed,
Warning,
Delay,
DownloadClientUnavailable,
Fallback,
}
impl Display for DownloadStatus {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
let download_status = match self {
DownloadStatus::Unknown => "unknown",
DownloadStatus::Queued => "queued",
DownloadStatus::Paused => "paused",
DownloadStatus::Downloading => "downloading",
DownloadStatus::Completed => "completed",
DownloadStatus::Failed => "failed",
DownloadStatus::Warning => "warning",
DownloadStatus::Delay => "delay",
DownloadStatus::DownloadClientUnavailable => "downloadClientUnavailable",
DownloadStatus::Fallback => "fallback",
};
write!(f, "{download_status}")
}
}
impl<'a> EnumDisplayStyle<'a> for DownloadStatus {
fn to_display_str(self) -> &'a str {
match self {
DownloadStatus::Unknown => "Unknown",
DownloadStatus::Queued => "Queued",
DownloadStatus::Paused => "Paused",
DownloadStatus::Downloading => "Downloading",
DownloadStatus::Completed => "Completed",
DownloadStatus::Failed => "Failed",
DownloadStatus::Warning => "Warning",
DownloadStatus::Delay => "Delay",
DownloadStatus::DownloadClientUnavailable => "Download Client Unavailable",
DownloadStatus::Fallback => "Fallback",
}
}
}
#[derive(Default, Clone, Serialize, Deserialize, Debug, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct DownloadsResponse {
+38 -4
View File
@@ -10,10 +10,10 @@ mod tests {
RootFolder, SecurityConfig, Tag, Update,
},
sonarr_models::{
AddSeriesSearchResult, BlocklistItem, BlocklistResponse, DownloadRecord, DownloadsResponse,
Episode, EpisodeFile, IndexerSettings, Series, SeriesMonitor, SeriesStatus, SeriesType,
SonarrHistoryEventType, SonarrHistoryItem, SonarrRelease, SonarrSerdeable, SonarrTask,
SonarrTaskName, SystemStatus,
AddSeriesSearchResult, BlocklistItem, BlocklistResponse, DownloadRecord, DownloadStatus,
DownloadsResponse, Episode, EpisodeFile, IndexerSettings, Series, SeriesMonitor,
SeriesStatus, SeriesType, SonarrHistoryEventType, SonarrHistoryItem, SonarrRelease,
SonarrSerdeable, SonarrTask, SonarrTaskName, SystemStatus,
},
EnumDisplayStyle, Serdeable,
};
@@ -119,6 +119,40 @@ mod tests {
assert_str_eq!(SeriesType::Anime.to_display_str(), "Anime");
}
#[test]
fn test_download_status_display() {
assert_str_eq!(DownloadStatus::Unknown.to_string(), "unknown");
assert_str_eq!(DownloadStatus::Queued.to_string(), "queued");
assert_str_eq!(DownloadStatus::Paused.to_string(), "paused");
assert_str_eq!(DownloadStatus::Downloading.to_string(), "downloading");
assert_str_eq!(DownloadStatus::Completed.to_string(), "completed");
assert_str_eq!(DownloadStatus::Failed.to_string(), "failed");
assert_str_eq!(DownloadStatus::Warning.to_string(), "warning");
assert_str_eq!(DownloadStatus::Delay.to_string(), "delay");
assert_str_eq!(
DownloadStatus::DownloadClientUnavailable.to_string(),
"downloadClientUnavailable"
);
assert_str_eq!(DownloadStatus::Fallback.to_string(), "fallback");
}
#[test]
fn test_download_status_to_display_str() {
assert_str_eq!(DownloadStatus::Unknown.to_display_str(), "Unknown");
assert_str_eq!(DownloadStatus::Queued.to_display_str(), "Queued");
assert_str_eq!(DownloadStatus::Paused.to_display_str(), "Paused");
assert_str_eq!(DownloadStatus::Downloading.to_display_str(), "Downloading");
assert_str_eq!(DownloadStatus::Completed.to_display_str(), "Completed");
assert_str_eq!(DownloadStatus::Failed.to_display_str(), "Failed");
assert_str_eq!(DownloadStatus::Warning.to_display_str(), "Warning");
assert_str_eq!(DownloadStatus::Delay.to_display_str(), "Delay");
assert_str_eq!(
DownloadStatus::DownloadClientUnavailable.to_display_str(),
"Download Client Unavailable"
);
assert_str_eq!(DownloadStatus::Fallback.to_display_str(), "Fallback");
}
#[test]
fn test_sonarr_history_event_type_display() {
assert_str_eq!(SonarrHistoryEventType::Unknown.to_string(), "unknown",);