Release Notes: - Fixed an issue where both the predict edit and git onboarding banners would both show at the same time.
74 lines
2.6 KiB
Rust
74 lines
2.6 KiB
Rust
use std::any::{Any, TypeId};
|
|
|
|
use command_palette_hooks::CommandPaletteFilter;
|
|
use feature_flags::{FeatureFlagAppExt as _, PredictEditsRateCompletionsFeatureFlag};
|
|
use gpui::actions;
|
|
use language::language_settings::{AllLanguageSettings, EditPredictionProvider};
|
|
use settings::update_settings_file;
|
|
use ui::App;
|
|
use workspace::Workspace;
|
|
|
|
use crate::{onboarding_modal::ZedPredictModal, RateCompletionModal};
|
|
|
|
actions!(edit_prediction, [ResetOnboarding, RateCompletions]);
|
|
|
|
pub fn init(cx: &mut App) {
|
|
cx.observe_new(move |workspace: &mut Workspace, _, _cx| {
|
|
workspace.register_action(|workspace, _: &RateCompletions, window, cx| {
|
|
if cx.has_flag::<PredictEditsRateCompletionsFeatureFlag>() {
|
|
RateCompletionModal::toggle(workspace, window, cx);
|
|
}
|
|
});
|
|
|
|
workspace.register_action(
|
|
move |workspace, _: &zed_actions::OpenZedPredictOnboarding, window, cx| {
|
|
ZedPredictModal::toggle(
|
|
workspace,
|
|
workspace.user_store().clone(),
|
|
workspace.client().clone(),
|
|
workspace.app_state().fs.clone(),
|
|
window,
|
|
cx,
|
|
)
|
|
},
|
|
);
|
|
|
|
workspace.register_action(|workspace, _: &ResetOnboarding, _window, cx| {
|
|
update_settings_file::<AllLanguageSettings>(
|
|
workspace.app_state().fs.clone(),
|
|
cx,
|
|
move |file, _| {
|
|
file.features
|
|
.get_or_insert(Default::default())
|
|
.edit_prediction_provider = Some(EditPredictionProvider::None)
|
|
},
|
|
);
|
|
});
|
|
})
|
|
.detach();
|
|
|
|
feature_gate_predict_edits_rating_actions(cx);
|
|
}
|
|
|
|
fn feature_gate_predict_edits_rating_actions(cx: &mut App) {
|
|
let rate_completion_action_types = [TypeId::of::<RateCompletions>()];
|
|
|
|
CommandPaletteFilter::update_global(cx, |filter, _cx| {
|
|
filter.hide_action_types(&rate_completion_action_types);
|
|
filter.hide_action_types(&[zed_actions::OpenZedPredictOnboarding.type_id()]);
|
|
});
|
|
|
|
cx.observe_flag::<PredictEditsRateCompletionsFeatureFlag, _>(move |is_enabled, cx| {
|
|
if is_enabled {
|
|
CommandPaletteFilter::update_global(cx, |filter, _cx| {
|
|
filter.show_action_types(rate_completion_action_types.iter());
|
|
});
|
|
} else {
|
|
CommandPaletteFilter::update_global(cx, |filter, _cx| {
|
|
filter.hide_action_types(&rate_completion_action_types);
|
|
});
|
|
}
|
|
})
|
|
.detach();
|
|
}
|