telemetry: Consider the entire chain of config sources when merging (#31039)
Global settings were implemented in #30444, but `Settings` implementations need to consider that source for it to be useful. This PR does just that for `TelemetrySettings` so these can be controlled via global settings. Release Notes: - N/A
This commit is contained in:
parent
eb318c1626
commit
a0ec9cf383
1 changed files with 3 additions and 21 deletions
|
@ -490,14 +490,14 @@ impl<T: 'static> Drop for PendingEntitySubscription<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Copy, Clone)]
|
#[derive(Copy, Clone, Deserialize, Debug)]
|
||||||
pub struct TelemetrySettings {
|
pub struct TelemetrySettings {
|
||||||
pub diagnostics: bool,
|
pub diagnostics: bool,
|
||||||
pub metrics: bool,
|
pub metrics: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Control what info is collected by Zed.
|
/// Control what info is collected by Zed.
|
||||||
#[derive(Default, Clone, Serialize, Deserialize, JsonSchema)]
|
#[derive(Default, Clone, Serialize, Deserialize, JsonSchema, Debug)]
|
||||||
pub struct TelemetrySettingsContent {
|
pub struct TelemetrySettingsContent {
|
||||||
/// Send debug info like crash reports.
|
/// Send debug info like crash reports.
|
||||||
///
|
///
|
||||||
|
@ -515,25 +515,7 @@ impl settings::Settings for TelemetrySettings {
|
||||||
type FileContent = TelemetrySettingsContent;
|
type FileContent = TelemetrySettingsContent;
|
||||||
|
|
||||||
fn load(sources: SettingsSources<Self::FileContent>, _: &mut App) -> Result<Self> {
|
fn load(sources: SettingsSources<Self::FileContent>, _: &mut App) -> Result<Self> {
|
||||||
Ok(Self {
|
sources.json_merge()
|
||||||
diagnostics: sources
|
|
||||||
.user
|
|
||||||
.as_ref()
|
|
||||||
.or(sources.server.as_ref())
|
|
||||||
.and_then(|v| v.diagnostics)
|
|
||||||
.unwrap_or(
|
|
||||||
sources
|
|
||||||
.default
|
|
||||||
.diagnostics
|
|
||||||
.ok_or_else(Self::missing_default)?,
|
|
||||||
),
|
|
||||||
metrics: sources
|
|
||||||
.user
|
|
||||||
.as_ref()
|
|
||||||
.or(sources.server.as_ref())
|
|
||||||
.and_then(|v| v.metrics)
|
|
||||||
.unwrap_or(sources.default.metrics.ok_or_else(Self::missing_default)?),
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn import_from_vscode(vscode: &settings::VsCodeSettings, current: &mut Self::FileContent) {
|
fn import_from_vscode(vscode: &settings::VsCodeSettings, current: &mut Self::FileContent) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue