jj_ui.rs

 1mod bookmark_picker;
 2
 3use command_palette_hooks::CommandPaletteFilter;
 4use feature_flags::FeatureFlagAppExt as _;
 5use gpui::App;
 6use jj::JujutsuStore;
 7use workspace::Workspace;
 8
 9pub fn init(cx: &mut App) {
10    JujutsuStore::init_global(cx);
11
12    cx.observe_new(|workspace: &mut Workspace, _window, _cx| {
13        bookmark_picker::register(workspace);
14    })
15    .detach();
16
17    feature_gate_jj_ui_actions(cx);
18}
19
20fn feature_gate_jj_ui_actions(cx: &mut App) {
21    const JJ_ACTION_NAMESPACE: &str = "jj";
22
23    CommandPaletteFilter::update_global(cx, |filter, _cx| {
24        filter.hide_namespace(JJ_ACTION_NAMESPACE);
25    });
26
27    cx.observe_flag::<feature_flags::JjUiFeatureFlag, _>({
28        move |is_enabled, cx| {
29            CommandPaletteFilter::update_global(cx, |filter, _cx| {
30                if is_enabled {
31                    filter.show_namespace(JJ_ACTION_NAMESPACE);
32                } else {
33                    filter.hide_namespace(JJ_ACTION_NAMESPACE);
34                }
35            });
36        }
37    })
38    .detach();
39}