diff --git a/src/main.rs b/src/main.rs index a080fc2..318a059 100644 --- a/src/main.rs +++ b/src/main.rs @@ -64,22 +64,21 @@ async fn main() { Ok::<_, Infallible>((sse::event("ping"), sse::data("")).into_a()) }), - rx.filter_map(|()| async { - if audio_busy() { - debug!("doorbell still ringing, ignoring press"); - return None; - } - debug!("Playing doorbell chime"); - match process::Command::new("mplayer") - .arg(OUTDOOR_CHIME_FILE) - .stdout(process::Stdio::null()) - .stderr(process::Stdio::null()) - .spawn() { - Ok(child) => { AUDIO_CHILD.with(|cell| cell.replace(Some(child))); }, - Err(err) => error!("Error playing outdoor chime: {}", err) - }; + rx.map(|()| { + if !audio_busy() { + trace!("Playing doorbell chime"); + match process::Command::new("mplayer") + .arg(OUTDOOR_CHIME_FILE) + .stdout(process::Stdio::null()) + .stderr(process::Stdio::null()) + .spawn() { + Ok(child) => { AUDIO_CHILD.with(|cell| cell.replace(Some(child))); }, + Err(err) => error!("Error playing outdoor chime: {}", err) + }; + } else { debug!("doorbell still ringing, not playing new chime"); } + debug!("sending ring sse"); - Some(Ok::<_, Infallible>((sse::event("ring"), sse::data("")).into_b())) + Ok::<_, Infallible>((sse::event("ring"), sse::data("")).into_b()) }) ); sse::reply(stream)