Flip the optionality of the auto_update setting (#10302)

This PR flips the optionality of the `AutoUpdateSettingContent` to make
it a bit easier to work with.

#### Before

```rs
struct AutoUpdateSettingContent(Option<bool>);

type FileContent = AutoUpdateSettingContent;
```

#### After

```rs
struct AutoUpdateSettingContent(bool);

type FileContent = Option<AutoUpdateSettingContent>;
```

Release Notes:

- N/A
This commit is contained in:
Marshall Bowers 2024-04-08 20:16:05 -04:00 committed by GitHub
parent def87a8d76
commit 843aad80c6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 9 additions and 19 deletions

View file

@ -82,29 +82,22 @@ struct AutoUpdateSetting(bool);
/// Whether or not to automatically check for updates. /// Whether or not to automatically check for updates.
/// ///
/// Default: true /// Default: true
#[derive(Clone, Default, JsonSchema, Deserialize, Serialize)] #[derive(Clone, Copy, Default, JsonSchema, Deserialize, Serialize)]
#[serde(transparent)] #[serde(transparent)]
struct AutoUpdateSettingOverride(Option<bool>); struct AutoUpdateSettingContent(bool);
impl Settings for AutoUpdateSetting { impl Settings for AutoUpdateSetting {
const KEY: Option<&'static str> = Some("auto_update"); const KEY: Option<&'static str> = Some("auto_update");
type FileContent = AutoUpdateSettingOverride; type FileContent = Option<AutoUpdateSettingContent>;
fn load(sources: SettingsSources<Self::FileContent>, _: &mut AppContext) -> Result<Self> { fn load(sources: SettingsSources<Self::FileContent>, _: &mut AppContext) -> Result<Self> {
if let Some(release_channel_value) = sources.release_channel { let auto_update = [sources.release_channel, sources.user]
if let Some(value) = release_channel_value.0 { .into_iter()
return Ok(Self(value)); .find_map(|value| value.copied().flatten())
} .unwrap_or(sources.default.ok_or_else(Self::missing_default)?);
}
if let Some(user_value) = sources.user { Ok(Self(auto_update.0))
if let Some(value) = user_value.0 {
return Ok(Self(value));
}
}
Ok(Self(sources.default.0.ok_or_else(Self::missing_default)?))
} }
} }

View file

@ -97,10 +97,7 @@ impl Settings for ClientSettings {
type FileContent = ClientSettingsContent; type FileContent = ClientSettingsContent;
fn load(sources: SettingsSources<Self::FileContent>, _: &mut AppContext) -> Result<Self> fn load(sources: SettingsSources<Self::FileContent>, _: &mut AppContext) -> Result<Self> {
where
Self: Sized,
{
let mut result = sources.json_merge::<Self>()?; let mut result = sources.json_merge::<Self>()?;
if let Some(server_url) = &*ZED_SERVER_URL { if let Some(server_url) = &*ZED_SERVER_URL {
result.server_url = server_url.clone() result.server_url = server_url.clone()