Extract yaak-api crate with sysproxy for OS-level proxy detection

- New crates/yaak-api crate with no Tauri dependency
- Uses sysproxy to auto-detect OS proxy settings (macOS, Windows, Linux)
- Moved yaak_api_client from yaak-tauri-utils, now takes version string
- Removed api_client and error modules from yaak-tauri-utils
- Updated all callers in license, plugins, notifications, and URI scheme
This commit is contained in:
Gregory Schier
2026-02-12 08:20:08 -08:00
parent 83f6f9786b
commit 38153118bc
17 changed files with 360 additions and 200 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ thiserror = { workspace = true }
ts-rs = { workspace = true }
yaak-common = { workspace = true }
yaak-models = { workspace = true }
yaak-tauri-utils = { workspace = true }
yaak-api = { workspace = true }
[build-dependencies]
tauri-plugin = { workspace = true, features = ["build"] }
+1 -1
View File
@@ -16,7 +16,7 @@ pub enum Error {
ModelError(#[from] yaak_models::error::Error),
#[error(transparent)]
TauriUtilsError(#[from] yaak_tauri_utils::error::Error),
ApiError(#[from] yaak_api::Error),
#[error("Internal server error")]
ServerError,
+7 -4
View File
@@ -11,7 +11,7 @@ use yaak_common::platform::get_os_str;
use yaak_models::db_context::DbContext;
use yaak_models::query_manager::QueryManager;
use yaak_models::util::UpdateSource;
use yaak_tauri_utils::api_client::yaak_api_client;
use yaak_api::yaak_api_client;
/// Extension trait for accessing the QueryManager from Tauri Manager types.
/// This is needed temporarily until all crates are refactored to not use Tauri.
@@ -118,7 +118,8 @@ pub async fn activate_license<R: Runtime>(
license_key: &str,
) -> Result<()> {
info!("Activating license {}", license_key);
let client = yaak_api_client(window.app_handle())?;
let version = window.app_handle().package_info().version.to_string();
let client = yaak_api_client(&version)?;
let payload = ActivateLicenseRequestPayload {
license_key: license_key.to_string(),
app_platform: get_os_str().to_string(),
@@ -155,7 +156,8 @@ pub async fn deactivate_license<R: Runtime>(window: &WebviewWindow<R>) -> Result
let app_handle = window.app_handle();
let activation_id = get_activation_id(app_handle).await;
let client = yaak_api_client(window.app_handle())?;
let version = window.app_handle().package_info().version.to_string();
let client = yaak_api_client(&version)?;
let path = format!("/licenses/activations/{}/deactivate", activation_id);
let payload = DeactivateLicenseRequestPayload {
app_platform: get_os_str().to_string(),
@@ -204,7 +206,8 @@ pub async fn check_license<R: Runtime>(window: &WebviewWindow<R>) -> Result<Lice
(true, _) => {
info!("Checking license activation");
// A license has been activated, so let's check the license server
let client = yaak_api_client(window.app_handle())?;
let version = window.app_handle().package_info().version.to_string();
let client = yaak_api_client(&version)?;
let path = format!("/licenses/activations/{activation_id}/check-v2");
let response = client.post(build_url(&path)).json(&payload).send().await?;