From 84fee2495af56cc38ca9d0d46762c8b75bf37f2c Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Sun, 12 Feb 2023 18:32:37 +0100 Subject: [PATCH] Extract method to read click event from input --- src/main.rs | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/main.rs b/src/main.rs index 8f2206b..fa736a5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -59,6 +59,21 @@ async fn run_click_cmd(cmd: String) { }; } +fn read_click_event() -> Result { + let stdin = std::io::stdin(); + let mut input = String::new(); + + if stdin.read_line(&mut input).is_ok() { + // Return click event after removing leading comma + if let Ok(click_event) = + serde_json::from_str::(input.replace(",{", "{").as_str()) + { + return Ok(click_event); + } + } + Err(()) +} + #[tokio::main(flavor = "multi_thread", worker_threads = 2)] async fn main() { println!( @@ -71,22 +86,8 @@ async fn main() { println!("["); let inputs = task::spawn(async { - let stdin = std::io::stdin(); loop { - let mut input = String::new(); - - if stdin.read_line(&mut input).is_err() { - continue; - } - - if input.is_empty() { - continue; - } - - // Remove leading comma - let input = input.replace(",{", "{"); - - if let Ok(click_event) = serde_json::from_str::(input.as_str()) { + if let Ok(click_event) = read_click_event() { // Ignore click event if not left mouse button if click_event.button != 1 { continue;