feat(settings): add do not check for updates (#246)

Co-authored-by: Gregory Schier <gschier1990@gmail.com>
This commit is contained in:
Gabriel Oliveira
2025-08-08 17:25:55 -03:00
committed by GitHub
parent 5f99b7df05
commit f8b0510d08
6 changed files with 29 additions and 5 deletions

View File

@@ -1389,12 +1389,15 @@ pub fn run() {
} => { } => {
let w = app_handle.get_webview_window(&label).unwrap(); let w = app_handle.get_webview_window(&label).unwrap();
let h = app_handle.clone(); let h = app_handle.clone();
// Run update check whenever the window is focused // Run update check whenever the window is focused
tauri::async_runtime::spawn(async move { tauri::async_runtime::spawn(async move {
let val: State<'_, Mutex<YaakUpdater>> = h.state(); if w.db().get_settings().autoupdate {
let update_mode = get_update_mode(&w).await.unwrap(); let val: State<'_, Mutex<YaakUpdater>> = h.state();
if let Err(e) = val.lock().await.maybe_check(&w, update_mode).await { let update_mode = get_update_mode(&w).await.unwrap();
warn!("Failed to check for updates {e:?}"); if let Err(e) = val.lock().await.maybe_check(&w, update_mode).await {
warn!("Failed to check for updates {e:?}");
};
}; };
}); });

View File

@@ -62,7 +62,7 @@ export type ProxySetting = { "type": "enabled", http: string, https: string, aut
export type ProxySettingAuth = { user: string, password: string, }; export type ProxySettingAuth = { user: string, password: string, };
export type Settings = { model: "settings", id: string, createdAt: string, updatedAt: string, appearance: string, coloredMethods: boolean, editorFont: string | null, editorFontSize: number, editorKeymap: EditorKeymap, editorSoftWrap: boolean, hideWindowControls: boolean, interfaceFont: string | null, interfaceFontSize: number, interfaceScale: number, openWorkspaceNewWindow: boolean | null, proxy: ProxySetting | null, themeDark: string, themeLight: string, updateChannel: string, }; export type Settings = { model: "settings", id: string, createdAt: string, updatedAt: string, appearance: string, coloredMethods: boolean, editorFont: string | null, editorFontSize: number, editorKeymap: EditorKeymap, editorSoftWrap: boolean, hideWindowControls: boolean, interfaceFont: string | null, interfaceFontSize: number, interfaceScale: number, openWorkspaceNewWindow: boolean | null, proxy: ProxySetting | null, themeDark: string, themeLight: string, updateChannel: string, autoupdate: boolean, };
export type SyncState = { model: "sync_state", id: string, workspaceId: string, createdAt: string, updatedAt: string, flushedAt: string, modelId: string, checksum: string, relPath: string, syncDir: string, }; export type SyncState = { model: "sync_state", id: string, workspaceId: string, createdAt: string, updatedAt: string, flushedAt: string, modelId: string, checksum: string, relPath: string, syncDir: string, };

View File

@@ -0,0 +1 @@
ALTER TABLE settings ADD COLUMN autoupdate BOOLEAN DEFAULT true NOT NULL;

View File

@@ -120,6 +120,7 @@ pub struct Settings {
pub theme_dark: String, pub theme_dark: String,
pub theme_light: String, pub theme_light: String,
pub update_channel: String, pub update_channel: String,
pub autoupdate: bool,
} }
impl UpsertModelInfo for Settings { impl UpsertModelInfo for Settings {
@@ -168,6 +169,7 @@ impl UpsertModelInfo for Settings {
(ThemeDark, self.theme_dark.as_str().into()), (ThemeDark, self.theme_dark.as_str().into()),
(ThemeLight, self.theme_light.as_str().into()), (ThemeLight, self.theme_light.as_str().into()),
(UpdateChannel, self.update_channel.into()), (UpdateChannel, self.update_channel.into()),
(Autoupdate, self.autoupdate.into()),
(ColoredMethods, self.colored_methods.into()), (ColoredMethods, self.colored_methods.into()),
(Proxy, proxy.into()), (Proxy, proxy.into()),
]) ])
@@ -190,6 +192,7 @@ impl UpsertModelInfo for Settings {
SettingsIden::ThemeDark, SettingsIden::ThemeDark,
SettingsIden::ThemeLight, SettingsIden::ThemeLight,
SettingsIden::UpdateChannel, SettingsIden::UpdateChannel,
SettingsIden::Autoupdate,
SettingsIden::ColoredMethods, SettingsIden::ColoredMethods,
] ]
} }
@@ -219,6 +222,7 @@ impl UpsertModelInfo for Settings {
theme_light: row.get("theme_light")?, theme_light: row.get("theme_light")?,
hide_window_controls: row.get("hide_window_controls")?, hide_window_controls: row.get("hide_window_controls")?,
update_channel: row.get("update_channel")?, update_channel: row.get("update_channel")?,
autoupdate: row.get("autoupdate")?,
colored_methods: row.get("colored_methods")?, colored_methods: row.get("colored_methods")?,
}) })
} }

View File

@@ -31,6 +31,7 @@ impl<'a> DbContext<'a> {
theme_dark: "yaak-dark".to_string(), theme_dark: "yaak-dark".to_string(),
theme_light: "yaak-light".to_string(), theme_light: "yaak-light".to_string(),
update_channel: "stable".to_string(), update_channel: "stable".to_string(),
autoupdate: true,
colored_methods: false, colored_methods: false,
}; };
self.upsert(&settings, &UpdateSource::Background).expect("Failed to upsert settings") self.upsert(&settings, &UpdateSource::Background).expect("Failed to upsert settings")

View File

@@ -49,6 +49,21 @@ export function SettingsGeneral() {
onClick={() => checkForUpdates.mutateAsync()} onClick={() => checkForUpdates.mutateAsync()}
/> />
</div> </div>
<Select
name="autoupdate"
value={settings.autoupdate ? 'auto' : 'manual'}
label="Update Behavior"
labelPosition="left"
size="sm"
labelClassName="w-[14rem]"
onChange={(v) => patchModel(settings, { autoupdate: v === 'auto' })}
options={[
{ label: 'Automatic', value: 'auto' },
{ label: 'Manual', value: 'manual' },
]}
/>
<Select <Select
name="switchWorkspaceBehavior" name="switchWorkspaceBehavior"
label="Workspace Window Behavior" label="Workspace Window Behavior"