improvements to the sleep timer
This commit is contained in:
@@ -65,6 +65,9 @@ pub struct VideoSettings {
|
||||
pub auto_play_next_episode: bool,
|
||||
/// Countdown duration in seconds before auto-play (5-30 seconds)
|
||||
pub auto_play_countdown_seconds: u32,
|
||||
/// Maximum number of episodes to auto-play consecutively (0 = unlimited)
|
||||
#[serde(default)]
|
||||
pub auto_play_max_episodes: u32,
|
||||
}
|
||||
|
||||
impl Default for VideoSettings {
|
||||
@@ -72,6 +75,7 @@ impl Default for VideoSettings {
|
||||
Self {
|
||||
auto_play_next_episode: true,
|
||||
auto_play_countdown_seconds: 10,
|
||||
auto_play_max_episodes: 0,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -146,6 +150,7 @@ mod tests {
|
||||
let settings = VideoSettings::default();
|
||||
assert!(settings.auto_play_next_episode);
|
||||
assert_eq!(settings.auto_play_countdown_seconds, 10);
|
||||
assert_eq!(settings.auto_play_max_episodes, 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -170,14 +175,27 @@ mod tests {
|
||||
let settings = VideoSettings {
|
||||
auto_play_next_episode: false,
|
||||
auto_play_countdown_seconds: 15,
|
||||
auto_play_max_episodes: 5,
|
||||
};
|
||||
|
||||
let json = serde_json::to_string(&settings).unwrap();
|
||||
assert!(json.contains("\"autoPlayNextEpisode\":false"));
|
||||
assert!(json.contains("\"autoPlayCountdownSeconds\":15"));
|
||||
assert!(json.contains("\"autoPlayMaxEpisodes\":5"));
|
||||
|
||||
let parsed: VideoSettings = serde_json::from_str(&json).unwrap();
|
||||
assert!(!parsed.auto_play_next_episode);
|
||||
assert_eq!(parsed.auto_play_countdown_seconds, 15);
|
||||
assert_eq!(parsed.auto_play_max_episodes, 5);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_video_settings_backward_compat() {
|
||||
// Old JSON without auto_play_max_episodes field
|
||||
let json = r#"{"autoPlayNextEpisode":true,"autoPlayCountdownSeconds":10}"#;
|
||||
let parsed: VideoSettings = serde_json::from_str(json).unwrap();
|
||||
assert!(parsed.auto_play_next_episode);
|
||||
assert_eq!(parsed.auto_play_countdown_seconds, 10);
|
||||
assert_eq!(parsed.auto_play_max_episodes, 0);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user