move auto-update to later (#603)

otherwise on windows the settings path (which is based on userData)
isn't available yet.
This commit is contained in:
Will Chen
2025-07-08 13:48:34 -07:00
committed by GitHub
parent a1aee5c2b8
commit 4d7d9ec2a6
2 changed files with 27 additions and 27 deletions

View File

@@ -16,6 +16,7 @@ import { handleDyadProReturn } from "./main/pro";
import { IS_TEST_BUILD } from "./ipc/utils/test_utils"; import { IS_TEST_BUILD } from "./ipc/utils/test_utils";
import { BackupManager } from "./backup_manager"; import { BackupManager } from "./backup_manager";
import { getDatabasePath, initializeDatabase } from "./db"; import { getDatabasePath, initializeDatabase } from "./db";
import { UserSettings } from "./lib/schemas";
log.errorHandler.startCatching(); log.errorHandler.startCatching();
log.eventLogger.startLogging(); log.eventLogger.startLogging();
@@ -23,24 +24,6 @@ log.scope.labelPadding = false;
const logger = log.scope("main"); const logger = log.scope("main");
// Check settings before enabling auto-update
const settings = readSettings();
if (settings.enableAutoUpdate) {
// Technically we could just pass the releaseChannel directly to the host,
// but this is more explicit and falls back to stable if there's an unknown
// release channel.
const postfix = settings.releaseChannel === "beta" ? "beta" : "stable";
const host = `https://api.dyad.sh/v1/update/${postfix}`;
updateElectronApp({
logger,
updateSource: {
type: UpdateSourceType.ElectronPublicUpdateService,
repo: "dyad-sh/dyad",
host,
},
}); // additional configuration options available
}
// Load environment variables from .env file // Load environment variables from .env file
dotenv.config(); dotenv.config();
@@ -74,16 +57,30 @@ export async function onReady() {
logger.error("Error initializing backup manager", e); logger.error("Error initializing backup manager", e);
} }
initializeDatabase(); initializeDatabase();
await onFirstRunMaybe(); const settings = readSettings();
await onFirstRunMaybe(settings);
createWindow(); createWindow();
logger.info("Auto-update enabled=", settings.enableAutoUpdate);
if (settings.enableAutoUpdate) {
// Technically we could just pass the releaseChannel directly to the host,
// but this is more explicit and falls back to stable if there's an unknown
// release channel.
const postfix = settings.releaseChannel === "beta" ? "beta" : "stable";
const host = `https://api.dyad.sh/v1/update/${postfix}`;
logger.info("Auto-update release channel=", postfix);
updateElectronApp({
logger,
updateSource: {
type: UpdateSourceType.ElectronPublicUpdateService,
repo: "dyad-sh/dyad",
host,
},
}); // additional configuration options available
}
} }
/** export async function onFirstRunMaybe(settings: UserSettings) {
* Is this the first run of Fiddle? If so, perform
* tasks that we only want to do in this case.
*/
export async function onFirstRunMaybe() {
const settings = readSettings();
if (!settings.hasRunBefore) { if (!settings.hasRunBefore) {
await promptMoveToApplicationsFolder(); await promptMoveToApplicationsFolder();
writeSettings({ writeSettings({

View File

@@ -4,6 +4,9 @@ import { getUserDataPath } from "../paths/paths";
import { UserSettingsSchema, type UserSettings, Secret } from "../lib/schemas"; import { UserSettingsSchema, type UserSettings, Secret } from "../lib/schemas";
import { safeStorage } from "electron"; import { safeStorage } from "electron";
import { v4 as uuidv4 } from "uuid"; import { v4 as uuidv4 } from "uuid";
import log from "electron-log";
const logger = log.scope("settings");
// IF YOU NEED TO UPDATE THIS, YOU'RE PROBABLY DOING SOMETHING WRONG! // IF YOU NEED TO UPDATE THIS, YOU'RE PROBABLY DOING SOMETHING WRONG!
// Need to maintain backwards compatibility! // Need to maintain backwards compatibility!
@@ -87,7 +90,7 @@ export function readSettings(): UserSettings {
return validatedSettings; return validatedSettings;
} catch (error) { } catch (error) {
console.error("Error reading settings:", error); logger.error("Error reading settings:", error);
return DEFAULT_SETTINGS; return DEFAULT_SETTINGS;
} }
} }
@@ -124,7 +127,7 @@ export function writeSettings(settings: Partial<UserSettings>): void {
const validatedSettings = UserSettingsSchema.parse(newSettings); const validatedSettings = UserSettingsSchema.parse(newSettings);
fs.writeFileSync(filePath, JSON.stringify(validatedSettings, null, 2)); fs.writeFileSync(filePath, JSON.stringify(validatedSettings, null, 2));
} catch (error) { } catch (error) {
console.error("Error writing settings:", error); logger.error("Error writing settings:", error);
} }
} }