ratatui_toolkit/widgets/code_diff/widget/methods/refresh_if_changed.rs
1//! Refresh diff when repository changes are detected.
2
3use super::super::CodeDiff;
4use crate::services::repo_watcher::RepoWatcher;
5
6impl CodeDiff {
7 /// Refresh the diff if the repository watcher detected changes.
8 ///
9 /// Returns `true` when a refresh occurred.
10 ///
11 /// # Example
12 ///
13 /// ```rust,no_run
14 /// use ratatui_toolkit::code_diff::CodeDiff;
15 /// use ratatui_toolkit::services::repo_watcher::RepoWatcher;
16 /// use std::path::Path;
17 ///
18 /// let mut diff = CodeDiff::from_git();
19 /// let mut watcher = RepoWatcher::new().unwrap();
20 /// watcher.watch(Path::new("."))?;
21 ///
22 /// if diff.refresh_if_changed(&mut watcher) {
23 /// println!("Diff updated");
24 /// }
25 /// # Ok::<(), notify::Error>(())
26 /// ```
27 pub fn refresh_if_changed(&mut self, watcher: &mut RepoWatcher) -> bool {
28 if watcher.check_for_changes() {
29 self.refresh();
30 true
31 } else {
32 false
33 }
34 }
35}