@@ -22,8 +22,6 @@ const ZED_REPO_URL: &str = "https://github.com/zed-industries/zed";
const REQUEST_FEATURE_URL: &str = "https://github.com/zed-industries/zed/discussions/new/choose";
-const EMAIL_ZED_URL: &str = "mailto:hi@zed.dev";
-
fn file_bug_report_url(specs: &SystemSpecs) -> String {
format!(
concat!(
@@ -37,6 +35,18 @@ fn file_bug_report_url(specs: &SystemSpecs) -> String {
)
}
+fn email_zed_url(specs: &SystemSpecs) -> String {
+ format!(
+ concat!("mailto:hi@zed.dev", "?", "body={}"),
+ email_body(specs)
+ )
+}
+
+fn email_body(specs: &SystemSpecs) -> String {
+ let body = format!("\n\nSystem Information:\n\n{}", specs);
+ urlencoding::encode(&body).to_string()
+}
+
pub fn init(cx: &mut App) {
cx.observe_new(|workspace: &mut Workspace, window, cx| {
let Some(window) = window else {
@@ -79,8 +89,16 @@ pub fn init(cx: &mut App) {
})
.detach();
})
- .register_action(move |_, _: &EmailZed, _, cx| {
- cx.open_url(EMAIL_ZED_URL);
+ .register_action(move |_, _: &EmailZed, window, cx| {
+ let specs = SystemSpecs::new(window, cx);
+ cx.spawn_in(window, async move |_, cx| {
+ let specs = specs.await;
+ cx.update(|_, cx| {
+ cx.open_url(&email_zed_url(&specs));
+ })
+ .log_err();
+ })
+ .detach();
})
.register_action(move |_, _: &OpenZedRepo, _, cx| {
cx.open_url(ZED_REPO_URL);