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}