103 lines · 3.2 KB · Rust
RawDownload
//! Contains helper functions for constructing URLs to various Zed-related pages.//!//! These URLs will adapt to the configured server URL in order to construct//! links appropriate for the environment (e.g., by linking to a local copy of//! zed.dev in development). use gpui::App;use release_channel::ReleaseChannel;use settings::Settings; use crate::ClientSettings; fn server_url(cx: &App) -> &str {    &ClientSettings::get_global(cx).server_url} fn docs_url(cx: &App) -> String {    let server_url = server_url(cx);    match ReleaseChannel::try_global(cx).unwrap_or_default() {        ReleaseChannel::Stable => {            format!("{server_url}/docs")        }        ReleaseChannel::Preview => {            format!("{server_url}/docs/preview")        }        ReleaseChannel::Dev | ReleaseChannel::Nightly => {            format!("{server_url}/docs/nightly")        }    }} /// Returns the URL to the account page on zed.dev.pub fn account_url(cx: &App) -> String {    format!("{server_url}/account", server_url = server_url(cx))} /// Returns the URL to the start trial page on zed.dev.pub fn start_trial_url(cx: &App) -> String {    format!(        "{server_url}/account/start-trial",        server_url = server_url(cx)    )} /// Returns the URL to the upgrade page on zed.dev.pub fn upgrade_to_zed_pro_url(cx: &App) -> String {    format!("{server_url}/account/upgrade", server_url = server_url(cx))} /// Returns the URL to Zed's terms of service.pub fn terms_of_service(cx: &App) -> String {    format!("{server_url}/terms-of-service", server_url = server_url(cx))} /// Returns the URL to Zed AI's privacy and security docs.pub fn ai_privacy_and_security(cx: &App) -> String {    format!(        "{docs_url}/ai/privacy-and-security",        docs_url = docs_url(cx)    )} /// Returns the URL to Zed's edit prediction documentation.pub fn edit_prediction_docs(cx: &App) -> String {    format!("{docs_url}/ai/edit-prediction", docs_url = docs_url(cx))} pub fn skills_docs(cx: &App) -> String {    format!("{docs_url}/ai/skills", docs_url = docs_url(cx))} /// Returns the URL to Zed's Agent sandboxing documentation.////// Pass `section` to deep-link to a specific section anchor on the page (for/// example, `Some("installing-bubblewrap")`); pass `None` to link to the top of/// the page.////// Unlike the account/app links above, this targets `zed.dev/docs` (via/// [`release_channel::docs_url`]) rather than the configured `server_url`: the/// docs are a static site hosted on `zed.dev`, so pointing at a local dev/// `server_url` would 404.pub fn sandboxing_docs(section: Option<&str>, cx: &App) -> String {    let base = release_channel::docs_url("ai/sandboxing", cx);    match section {        Some(section) => format!("{base}#{section}"),        None => base,    }}pub fn llm_provider_docs(cx: &App) -> String {    format!("{docs_url}/ai/llm-providers", docs_url = docs_url(cx))} /// Returns the URL to Zed's ACP registry blog post.pub fn acp_registry_blog(cx: &App) -> String {    format!(        "{server_url}/blog/acp-registry",        server_url = server_url(cx)    )} pub fn shared_agent_thread_url(session_id: &str) -> String {    format!("zed://agent/shared/{}", session_id)}