From cf9c492a432ddc694a6c81cc5542c6754ffb4223 Mon Sep 17 00:00:00 2001 From: Hiroshiba Date: Sat, 28 Oct 2023 23:23:56 +0900 Subject: [PATCH] =?UTF-8?q?config=E8=AA=AD=E3=81=BF=E8=BE=BC=E3=81=BF?= =?UTF-8?q?=E3=81=AB=E5=A4=B1=E6=95=97=E3=81=97=E3=81=9F=E3=81=A8=E3=81=8D?= =?UTF-8?q?=E3=81=AE=E3=83=95=E3=82=A9=E3=83=BC=E3=83=AB=E3=83=90=E3=83=83?= =?UTF-8?q?=E3=82=AF=E3=82=92=E5=BE=A9=E6=B4=BB=E3=81=95=E3=81=9B=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/background.ts | 28 +++++++++++++++++++++- src/background/electronConfig.ts | 40 ++++---------------------------- 2 files changed, 31 insertions(+), 37 deletions(-) diff --git a/src/background.ts b/src/background.ts index 43d60c5329..6b9dee886a 100644 --- a/src/background.ts +++ b/src/background.ts @@ -964,7 +964,33 @@ app.once("will-finish-launching", () => { }); app.on("ready", async () => { - await configManager.initialize(); + await configManager.initialize().catch(async (e) => { + log.error(e); + await dialog + .showMessageBox({ + type: "error", + title: "設定ファイルの読み込みエラー", + message: `設定ファイルの読み込みに失敗しました。${app.getPath( + "userData" + )} にある config.json の名前を変えることで解決することがあります(ただし設定がすべてリセットされます)。設定ファイルがあるフォルダを開きますか?`, + buttons: ["いいえ", "はい"], + noLink: true, + cancelId: 0, + }) + .then(async ({ response }) => { + if (response === 1) { + await shell.openPath(app.getPath("userData")); + // 直後にexitするとフォルダが開かないため + await new Promise((resolve) => { + setTimeout(resolve, 500); + }); + } + }) + .finally(async () => { + await configManager?.ensureSaved(); + app.exit(1); + }); + }); if (isDevelopment && !isTest) { try { diff --git a/src/background/electronConfig.ts b/src/background/electronConfig.ts index 1c1d74c96b..0fde5e668d 100644 --- a/src/background/electronConfig.ts +++ b/src/background/electronConfig.ts @@ -1,7 +1,6 @@ import { join } from "path"; import fs from "fs"; -import { app, dialog, shell } from "electron"; -import log from "electron-log/main"; +import { app } from "electron"; import { BaseConfigManager, Metadata } from "@/shared/ConfigManager"; import { ConfigType } from "@/type/preload"; @@ -36,39 +35,8 @@ export class ElectronConfigManager extends BaseConfigManager { let configManager: ElectronConfigManager | undefined; export function getConfigManager(): ElectronConfigManager { - try { - if (!configManager) { - configManager = new ElectronConfigManager(); - } - return configManager; - } catch (e) { - log.error(e); - app.whenReady().then(() => { - dialog - .showMessageBox({ - type: "error", - title: "設定ファイルの読み込みエラー", - message: `設定ファイルの読み込みに失敗しました。${app.getPath( - "userData" - )} にある config.json の名前を変えることで解決することがあります(ただし設定がすべてリセットされます)。設定ファイルがあるフォルダを開きますか?`, - buttons: ["いいえ", "はい"], - noLink: true, - cancelId: 0, - }) - .then(async ({ response }) => { - if (response === 1) { - await shell.openPath(app.getPath("userData")); - // 直後にexitするとフォルダが開かないため - await new Promise((resolve) => { - setTimeout(resolve, 500); - }); - } - }) - .finally(async () => { - await configManager?.ensureSaved(); - app.exit(1); - }); - }); - throw e; + if (!configManager) { + configManager = new ElectronConfigManager(); } + return configManager; }