feat: persist diff file review checkmarks

This commit is contained in:
2026-10-19 18:48:44 +02:00
parent fe039e75c8
commit ea04e30072
11 changed files with 655 additions and 61 deletions
+29 -5
View File
@@ -4579,6 +4579,13 @@ impl Editor {
}
let refresh = diff.refresh_pending();
let previous_comparison = diff.comparison_id;
let restore_reviewed = matches!(
&result,
Ok(Outcome::Comparison(_)
| Outcome::File { .. }
| Outcome::CheckoutRefresh(Some(_))
| Outcome::BookmarkRefresh(_))
);
if !diff.apply_result(id, result) {
return false;
}
@@ -4601,6 +4608,12 @@ impl Editor {
view.clamp(&self.active.lines);
self.active.view = view;
}
if let Err(error) = self.initialize_local_review() {
self.set_message(format!("Local review: {error}"));
}
if restore_reviewed && let Some(diff) = &mut self.diff {
diff.restore_reviewed_files();
}
let reviewed = self.diff.as_mut().and_then(|diff| {
(refresh
&& diff
@@ -4657,9 +4670,6 @@ impl Editor {
}
}
self.finish_review_navigation();
if let Err(error) = self.initialize_local_review() {
self.set_message(format!("Local review: {error}"));
}
true
}
@@ -5177,6 +5187,9 @@ impl Editor {
diff.follow_caret = true;
}
}
if let Err(error) = self.autosave_local_review() {
self.set_message(format!("Review not saved: {error}"));
}
let Some(focus) = self.diff_buffer_focus() else {
return;
};
@@ -10027,8 +10040,19 @@ impl Editor {
};
if entry.action == Action::DiffReviewToggle {
match diff.toggle_reviewed() {
Ok(true) => self.set_message("File marked reviewed"),
Ok(false) => self.set_message("File marked unreviewed"),
Ok(reviewed) => {
if self.resolver().is_none()
&& let Err(error) = self.autosave_local_review()
{
self.set_message(format!("Review not saved: {error}"));
return None;
}
self.set_message(if reviewed {
"File marked reviewed"
} else {
"File marked unreviewed"
});
}
Err(error) => self.set_message(error),
}
return None;