zeta: Fixes to completion-rating modal (#21852)

Release Notes:

- N/A

Co-authored-by: Antonio <antonio@zed.dev>
This commit is contained in:
Thorsten Ball 2024-12-11 15:00:27 +01:00 committed by GitHub
parent 664468d468
commit ae351298b4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 22 additions and 31 deletions

View file

@ -795,10 +795,9 @@
"use_key_equivalents": true, "use_key_equivalents": true,
"bindings": { "bindings": {
"cmd-enter": "zeta::ThumbsUp", "cmd-enter": "zeta::ThumbsUp",
"cmd-delete": "zeta::ThumbsDown",
"shift-down": "zeta::NextEdit", "shift-down": "zeta::NextEdit",
"shift-up": "zeta::PreviousEdit", "shift-up": "zeta::PreviousEdit",
"space": "zeta::PreviewCompletion" "right": "zeta::PreviewCompletion"
} }
}, },
{ {

View file

@ -8,7 +8,7 @@ use language::{language_settings, OffsetRangeExt};
use settings::Settings; use settings::Settings;
use theme::ThemeSettings; use theme::ThemeSettings;
use ui::{prelude::*, List, ListItem, ListItemSpacing, TintColor}; use ui::{prelude::*, List, ListItem, ListItemSpacing, TintColor, Tooltip};
use workspace::{ModalView, Workspace}; use workspace::{ModalView, Workspace};
actions!( actions!(
@ -154,27 +154,6 @@ impl RateCompletionModal {
cx.notify(); cx.notify();
} }
fn thumbs_down(&mut self, _: &ThumbsDown, cx: &mut ViewContext<Self>) {
self.zeta.update(cx, |zeta, cx| {
let completion = zeta
.recent_completions()
.skip(self.selected_index)
.next()
.cloned();
if let Some(completion) = completion {
zeta.rate_completion(
&completion,
InlineCompletionRating::Negative,
"".to_string(),
cx,
);
}
});
self.select_next_edit(&Default::default(), cx);
cx.notify();
}
fn thumbs_up_active(&mut self, _: &ThumbsUpActiveCompletion, cx: &mut ViewContext<Self>) { fn thumbs_up_active(&mut self, _: &ThumbsUpActiveCompletion, cx: &mut ViewContext<Self>) {
self.zeta.update(cx, |zeta, cx| { self.zeta.update(cx, |zeta, cx| {
if let Some(active) = &self.active_completion { if let Some(active) = &self.active_completion {
@ -199,16 +178,20 @@ impl RateCompletionModal {
} }
fn thumbs_down_active(&mut self, _: &ThumbsDownActiveCompletion, cx: &mut ViewContext<Self>) { fn thumbs_down_active(&mut self, _: &ThumbsDownActiveCompletion, cx: &mut ViewContext<Self>) {
self.zeta.update(cx, |zeta, cx| {
if let Some(active) = &self.active_completion { if let Some(active) = &self.active_completion {
if active.feedback_editor.read(cx).text(cx).is_empty() {
return;
}
self.zeta.update(cx, |zeta, cx| {
zeta.rate_completion( zeta.rate_completion(
&active.completion, &active.completion,
InlineCompletionRating::Negative, InlineCompletionRating::Negative,
active.feedback_editor.read(cx).text(cx), active.feedback_editor.read(cx).text(cx),
cx, cx,
); );
}
}); });
}
let current_completion = self let current_completion = self
.active_completion .active_completion
@ -292,7 +275,7 @@ impl RateCompletionModal {
editor.set_show_wrap_guides(false, cx); editor.set_show_wrap_guides(false, cx);
editor.set_show_indent_guides(false, cx); editor.set_show_indent_guides(false, cx);
editor.set_show_inline_completions(Some(false), cx); editor.set_show_inline_completions(Some(false), cx);
editor.set_placeholder_text("Add your feedback about this completion…", cx); editor.set_placeholder_text("Add your feedback about this completion… (Negative feedback requires an explanation for why it was bad, and what you expected instead.)", cx);
if focus { if focus {
cx.focus_self(); cx.focus_self();
} }
@ -361,6 +344,11 @@ impl RateCompletionModal {
}; };
let rated = self.zeta.read(cx).is_completion_rated(completion_id); let rated = self.zeta.read(cx).is_completion_rated(completion_id);
let feedback_empty = active_completion
.feedback_editor
.read(cx)
.text(cx)
.is_empty();
let border_color = cx.theme().colors().border; let border_color = cx.theme().colors().border;
let bg_color = cx.theme().colors().editor_background; let bg_color = cx.theme().colors().editor_background;
@ -430,7 +418,12 @@ impl RateCompletionModal {
.icon_size(IconSize::Small) .icon_size(IconSize::Small)
.icon_position(IconPosition::Start) .icon_position(IconPosition::Start)
.icon_color(Color::Error) .icon_color(Color::Error)
.disabled(rated) .disabled(rated || feedback_empty)
.when(feedback_empty, |this| {
this.tooltip(|cx| {
Tooltip::text("Explain why this completion is bad before reporting it", cx)
})
})
.on_click(cx.listener(move |this, _, cx| { .on_click(cx.listener(move |this, _, cx| {
this.thumbs_down_active( this.thumbs_down_active(
&ThumbsDownActiveCompletion, &ThumbsDownActiveCompletion,
@ -475,7 +468,6 @@ impl Render for RateCompletionModal {
.on_action(cx.listener(Self::select_first)) .on_action(cx.listener(Self::select_first))
.on_action(cx.listener(Self::select_last)) .on_action(cx.listener(Self::select_last))
.on_action(cx.listener(Self::thumbs_up)) .on_action(cx.listener(Self::thumbs_up))
.on_action(cx.listener(Self::thumbs_down))
.on_action(cx.listener(Self::thumbs_up_active)) .on_action(cx.listener(Self::thumbs_up_active))
.on_action(cx.listener(Self::thumbs_down_active)) .on_action(cx.listener(Self::thumbs_down_active))
.on_action(cx.listener(Self::focus_completions)) .on_action(cx.listener(Self::focus_completions))