refactor: 移除遥测并修复启动器流程

This commit is contained in:
2026-09-13 20:31:55 +08:00
parent 1fa56add19
commit 1593ac7a7c
175 changed files with 547 additions and 12210 deletions

View File

@ -154,10 +154,6 @@ pub struct Settings {
#[serde(default = "default_terracotta_public_nodes")]
pub terracotta_public_nodes: Vec<String>,
pub telemetry: bool,
#[serde(default)]
pub telemetry_consent_version: u32,
pub discord_rpc: bool,
#[serde(skip, default)]
pub personalized_ads: bool,
@ -190,13 +186,6 @@ pub struct Settings {
pub version: usize,
}
#[derive(Serialize, Deserialize, Debug, Clone, Copy)]
pub struct PrivacySettings {
pub telemetry: bool,
pub discord_rpc: bool,
pub consent_version: u32,
}
fn default_true() -> bool {
true
}
@ -330,9 +319,6 @@ impl Settings {
.as_ref()
.and_then(|value| serde_json::from_str(value).ok())
.unwrap_or_else(default_terracotta_public_nodes),
telemetry: res.telemetry == 1,
telemetry_consent_version: res.telemetry_consent_version as u32,
discord_rpc: res.discord_rpc == 1,
developer_mode: res.developer_mode == 1,
personalized_ads: res.personalized_ads == 1,
onboarded: res.onboarded == 1,
@ -521,9 +507,9 @@ impl Settings {
self.collapsed_navigation,
self.advanced_rendering,
self.native_decorations,
self.discord_rpc,
false,
self.developer_mode,
self.telemetry,
false,
self.personalized_ads,
self.onboarded,
extra_launch_args,
@ -573,7 +559,7 @@ impl Settings {
home_widgets,
mojang_auth_source,
terracotta_public_nodes,
self.telemetry_consent_version,
0_i64,
)
.execute(exec)
.await?;
@ -1355,16 +1341,20 @@ mod tests {
}
#[tokio::test]
async fn telemetry_schema_migrates_fresh_and_existing_settings_databases() {
async fn removed_data_collection_schema_is_cleaned_up() {
let fresh = sqlx::sqlite::SqlitePoolOptions::new()
.max_connections(1)
.connect("sqlite::memory:")
.await
.unwrap();
sqlx::migrate!().run(&fresh).await.unwrap();
let settings = Settings::get(&fresh).await.unwrap();
assert!(!settings.telemetry);
assert_eq!(settings.telemetry_consent_version, 0);
let telemetry_tables = sqlx::query_scalar::<_, String>(
"SELECT name FROM sqlite_master WHERE type = 'table' AND name LIKE 'telemetry_%'",
)
.fetch_all(&fresh)
.await
.unwrap();
assert!(telemetry_tables.is_empty());
assert!(
sqlx::query("PRAGMA foreign_key_check")
.fetch_all(&fresh)
@ -1372,44 +1362,5 @@ mod tests {
.unwrap()
.is_empty()
);
let upgrade = sqlx::sqlite::SqlitePoolOptions::new()
.max_connections(1)
.connect("sqlite::memory:")
.await
.unwrap();
sqlx::query(
"CREATE TABLE settings (id INTEGER PRIMARY KEY CHECK (id = 0), telemetry INTEGER NOT NULL DEFAULT 0, discord_rpc INTEGER NOT NULL DEFAULT 1)",
)
.execute(&upgrade)
.await
.unwrap();
sqlx::query(
"INSERT INTO settings (id, telemetry, discord_rpc) VALUES (0, 0, 1)",
)
.execute(&upgrade)
.await
.unwrap();
sqlx::raw_sql(include_str!(concat!(
env!("CARGO_MANIFEST_DIR"),
"/migrations/20260814120000_telemetry.sql"
)))
.execute(&upgrade)
.await
.unwrap();
let consent_version = sqlx::query_scalar::<_, i64>(
"SELECT telemetry_consent_version FROM settings WHERE id = 0",
)
.fetch_one(&upgrade)
.await
.unwrap();
assert_eq!(consent_version, 0);
assert!(
sqlx::query("PRAGMA foreign_key_check")
.fetch_all(&upgrade)
.await
.unwrap()
.is_empty()
);
}
}