onboarding_ui.rs

 1use command_palette_hooks::CommandPaletteFilter;
 2use feature_flags::FeatureFlagAppExt as _;
 3use gpui::App;
 4use settings_ui::SettingsUiFeatureFlag;
 5use workspace::Workspace;
 6
 7use gpui::actions;
 8
 9actions!(onboarding, [ShowOnboarding]);
10
11pub fn init(cx: &mut App) {
12    cx.observe_new(|workspace: &mut Workspace, _, _cx| {
13        workspace.register_action(|_workspace, _: &ShowOnboarding, _window, _cx| {
14            // Onboarding implementation will go here
15        });
16    })
17    .detach();
18
19    feature_gate_onboarding_ui_actions(cx);
20}
21
22fn feature_gate_onboarding_ui_actions(cx: &mut App) {
23    const ONBOARDING_ACTION_NAMESPACE: &str = "onboarding";
24
25    CommandPaletteFilter::update_global(cx, |filter, _cx| {
26        filter.hide_namespace(ONBOARDING_ACTION_NAMESPACE);
27    });
28
29    cx.observe_flag::<SettingsUiFeatureFlag, _>({
30        move |is_enabled, cx| {
31            CommandPaletteFilter::update_global(cx, |filter, _cx| {
32                if is_enabled {
33                    filter.show_namespace(ONBOARDING_ACTION_NAMESPACE);
34                } else {
35                    filter.hide_namespace(ONBOARDING_ACTION_NAMESPACE);
36                }
37            });
38        }
39    })
40    .detach();
41}