diff --git a/noxis-rs/src/utils/files.rs b/noxis-rs/src/utils/files.rs index da87b0f..2cfa44f 100644 --- a/noxis-rs/src/utils/files.rs +++ b/noxis-rs/src/utils/files.rs @@ -102,14 +102,16 @@ } match &mut self.watcher { Some(notify) => { - let mut buffer = [0; 1024]; - if let Ok(mut notif_events) = notify.read_events(&mut buffer) { - // notif_events.into_iter().for_each(|mask| {dbg!(&mask.mask);}); - // todo!(); - if let (recreate_watcher, true) = ( - notif_events.any(|mask| mask.mask == EventMask::DELETE_SELF), - notif_events.any(|mask| mask.mask == EventMask::MODIFY) - ) { + let mut buffer = [0; 128]; + if let Ok(notif_events) = notify.read_events(&mut buffer) { + let (need_to_recreate, was_modifired) = notif_events.fold((false, false), |(a, b), mask| { + ( + a || mask.mask == EventMask::DELETE_SELF, + b || mask.mask == EventMask::MODIFY, + ) + }); + + if let (recreate_watcher, true) = (need_to_recreate, was_modifired) { warn!("File {} ({}) was changed", self.name, &self.path); if recreate_watcher { self.watcher = match create_watcher(&self.name, &self.path) {