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}