feat: persist diff file review checkmarks
This commit is contained in:
+29
-5
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user