feedback.rs

 1pub mod deploy_feedback_button;
 2pub mod feedback_editor;
 3pub mod feedback_info_text;
 4pub mod submit_feedback_button;
 5
 6mod system_specs;
 7use gpui::{actions, platform::PromptLevel, AppContext, ClipboardItem, ViewContext};
 8use system_specs::SystemSpecs;
 9use workspace::Workspace;
10
11actions!(
12    zed,
13    [
14        CopySystemSpecsIntoClipboard,
15        FileBugReport,
16        RequestFeature,
17        OpenZedCommunityRepo
18    ]
19);
20
21pub fn init(cx: &mut AppContext) {
22    feedback_editor::init(cx);
23
24    cx.add_action(
25        move |_: &mut Workspace,
26              _: &CopySystemSpecsIntoClipboard,
27              cx: &mut ViewContext<Workspace>| {
28            let specs = SystemSpecs::new(&cx).to_string();
29            cx.prompt(
30                PromptLevel::Info,
31                &format!("Copied into clipboard:\n\n{specs}"),
32                &["OK"],
33            );
34            let item = ClipboardItem::new(specs.clone());
35            cx.write_to_clipboard(item);
36        },
37    );
38
39    cx.add_action(
40        |_: &mut Workspace, _: &RequestFeature, cx: &mut ViewContext<Workspace>| {
41            let url = "https://github.com/zed-industries/community/issues/new?assignees=&labels=enhancement%2Ctriage&template=0_feature_request.yml";
42            cx.platform().open_url(url);
43        },
44    );
45
46    cx.add_action(
47        move |_: &mut Workspace, _: &FileBugReport, cx: &mut ViewContext<Workspace>| {
48            let url = format!(
49                "https://github.com/zed-industries/community/issues/new?assignees=&labels=defect%2Ctriage&template=2_bug_report.yml&environment={}",
50                urlencoding::encode(&SystemSpecs::new(&cx).to_string())
51            );
52            cx.platform().open_url(&url);
53        },
54    );
55
56    cx.add_global_action(open_zed_community_repo);
57}
58
59pub fn open_zed_community_repo(_: &OpenZedCommunityRepo, cx: &mut AppContext) {
60    let url = "https://github.com/zed-industries/community";
61    cx.platform().open_url(&url);
62}