1use anyhow::Result;
2use collections::HashMap;
3use gpui::AppContext;
4use schemars::JsonSchema;
5use serde::{Deserialize, Serialize};
6use settings::Settings;
7use std::sync::Arc;
8
9#[derive(Deserialize, Serialize, Debug, Default, Clone, JsonSchema)]
10pub struct ExtensionSettings {
11 #[serde(default)]
12 pub auto_update_extensions: HashMap<Arc<str>, bool>,
13}
14
15impl ExtensionSettings {
16 pub fn should_auto_update(&self, extension_id: &str) -> bool {
17 self.auto_update_extensions
18 .get(extension_id)
19 .copied()
20 .unwrap_or(true)
21 }
22}
23
24impl Settings for ExtensionSettings {
25 const KEY: Option<&'static str> = None;
26
27 type FileContent = Self;
28
29 fn load(
30 _default_value: &Self::FileContent,
31 user_values: &[&Self::FileContent],
32 _cx: &mut AppContext,
33 ) -> Result<Self>
34 where
35 Self: Sized,
36 {
37 Ok(user_values.get(0).copied().cloned().unwrap_or_default())
38 }
39}