Option to disable telemetry

This commit is contained in:
Gregory Schier
2024-08-26 12:06:56 -07:00
parent 24a4e3494e
commit e75d6abe33
23 changed files with 47 additions and 45 deletions

View File

@@ -0,0 +1 @@
ALTER TABLE settings ADD COLUMN telemetry BOOLEAN DEFAULT TRUE;

View File

@@ -5,9 +5,7 @@ use serde::{Deserialize, Serialize};
use serde_json::{json, Value};
use tauri::{Manager, Runtime, WebviewWindow};
use yaak_models::queries::{
generate_id, get_key_value_int, get_key_value_string, set_key_value_int, set_key_value_string,
};
use yaak_models::queries::{generate_id, get_key_value_int, get_key_value_string, get_or_create_settings, set_key_value_int, set_key_value_string};
use crate::is_dev;
@@ -157,6 +155,7 @@ pub async fn track_event<R: Runtime>(
action: AnalyticsAction,
attributes: Option<Value>,
) {
let id = get_id(w).await;
let event = format!("{}.{}", resource, action);
let attributes_json = attributes.unwrap_or("{}".to_string().into()).to_string();
@@ -186,9 +185,15 @@ pub async fn track_event<R: Runtime>(
.get(format!("{base_url}/t/e"))
.query(&params);
let settings = get_or_create_settings(w).await;
if !settings.telemetry {
info!("Track event (disabled): {}", event);
return
}
// Disable analytics actual sending in dev
if is_dev() {
debug!("track: {} {}", event, attributes_json);
debug!("Track event: {} {}", event, attributes_json);
return;
}

View File

@@ -23,6 +23,7 @@ pub struct Settings {
pub interface_scale: i32,
pub editor_font_size: i32,
pub editor_soft_wrap: bool,
pub telemetry: bool,
pub open_workspace_new_window: Option<bool>,
}
@@ -43,6 +44,7 @@ pub enum SettingsIden {
InterfaceScale,
EditorFontSize,
EditorSoftWrap,
Telemetry,
OpenWorkspaceNewWindow,
}
@@ -64,6 +66,7 @@ impl<'s> TryFrom<&Row<'s>> for Settings {
interface_scale: r.get("interface_scale")?,
editor_font_size: r.get("editor_font_size")?,
editor_soft_wrap: r.get("editor_soft_wrap")?,
telemetry: r.get("telemetry")?,
open_workspace_new_window: r.get("open_workspace_new_window")?,
})
}

View File

@@ -799,6 +799,10 @@ pub async fn update_settings<R: Runtime>(
SettingsIden::EditorSoftWrap,
settings.editor_soft_wrap.into(),
),
(
SettingsIden::Telemetry,
settings.telemetry.into(),
),
(
SettingsIden::OpenWorkspaceNewWindow,
settings.open_workspace_new_window.into(),