···11pub mod profile;
22pub mod scheduler;
3344-pub use profile::{BreakMode, Profile};
44+pub use profile::{active_profile, BreakMode, Profile};
55pub use scheduler::{LevelBreakStatus, LongBreakStatus, ScheduledBreak, Scheduler};
6677use std::sync::mpsc as std_mpsc;
+10-1
src/timer/profile.rs
···11use std::time::Duration;
2233-use crate::config::{BreakLevelConfig, BreakModeConfig, LongBreakConfig, ProfileConfig};
33+use crate::config::{AppConfig, BreakLevelConfig, BreakModeConfig, LongBreakConfig, ProfileConfig};
44+55+pub fn active_profile(cfg: &AppConfig) -> Profile {
66+ let prof_cfg = cfg
77+ .profiles
88+ .get(&cfg.app.active_profile)
99+ .or_else(|| cfg.profiles.values().next())
1010+ .expect("config must have at least one profile");
1111+ Profile::from_config(prof_cfg)
1212+}
413514#[derive(Debug, Clone, PartialEq)]
615pub enum BreakMode {