Pre-fill body of email with system specs (#27210)

I think we still want to be able to easily capture system spec info from
users. They can decide if they want to include it or not.

Release Notes:

- N/A
This commit is contained in:
Joseph T. Lyons 2025-03-20 14:09:10 -04:00 committed by GitHub
parent 27ebedf517
commit 7931b1d345
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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);