Skip to content

Commit

Permalink
config読み込みに失敗したときのフォールバックを復活させる
Browse files Browse the repository at this point in the history
  • Loading branch information
Hiroshiba committed Oct 28, 2023
1 parent 9c70061 commit cf9c492
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 37 deletions.
28 changes: 27 additions & 1 deletion src/background.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
40 changes: 4 additions & 36 deletions src/background/electronConfig.ts
Original file line number Diff line number Diff line change
@@ -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";

Expand Down Expand Up @@ -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;
}

0 comments on commit cf9c492

Please sign in to comment.