From eb11467c084cbfc1ccbefd4cdf9dc3adcb5cab97 Mon Sep 17 00:00:00 2001 From: raa0121 Date: Fri, 24 Feb 2023 01:28:02 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20config.json=20=E3=81=AE=20validation=20?= =?UTF-8?q?=E5=A4=B1=E6=95=97=E6=99=82=E3=81=AB=E3=82=8F=E3=81=8B=E3=82=8A?= =?UTF-8?q?=E3=82=84=E3=81=99=E3=81=84=E3=83=AD=E3=82=B0=E3=82=92=E5=87=BA?= =?UTF-8?q?=E3=81=99=E3=82=88=E3=81=86=E3=81=AB=20(#1222)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/background.ts | 104 ++++++++++++++++++++++++++-------------------- 1 file changed, 58 insertions(+), 46 deletions(-) diff --git a/src/background.ts b/src/background.ts index e610373a90..f4dca24f1c 100644 --- a/src/background.ts +++ b/src/background.ts @@ -125,55 +125,67 @@ const electronStoreJsonSchema = zodToJsonSchema(electronStoreSchema); if (!("properties" in electronStoreJsonSchema)) { throw new Error("electronStoreJsonSchema must be object"); } -const store = new Store({ - schema: electronStoreJsonSchema.properties as Schema, - migrations: { - ">=0.13": (store) => { - // acceptTems -> acceptTerms - const prevIdentifier = "acceptTems"; - const prevValue = store.get(prevIdentifier, undefined) as - | AcceptTermsStatus - | undefined; - if (prevValue) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - store.delete(prevIdentifier as any); - store.set("acceptTerms", prevValue); - } - }, - ">=0.14": (store) => { - // FIXME: できるならEngineManagerからEnginIDを取得したい - if (process.env.DEFAULT_ENGINE_INFOS == undefined) - throw new Error("DEFAULT_ENGINE_INFOS == undefined"); - const engineId = EngineId( - JSON.parse(process.env.DEFAULT_ENGINE_INFOS)[0].uuid - ); - if (engineId == undefined) - throw new Error("DEFAULT_ENGINE_INFOS[0].uuid == undefined"); - const prevDefaultStyleIds = store.get("defaultStyleIds"); - store.set( - "defaultStyleIds", - prevDefaultStyleIds.map((defaultStyle) => ({ - engineId, - speakerUuid: defaultStyle.speakerUuid, - defaultStyleId: defaultStyle.defaultStyleId, - })) - ); +let store: Store; +try { + store = new Store({ + schema: electronStoreJsonSchema.properties as Schema, + migrations: { + ">=0.13": (store) => { + // acceptTems -> acceptTerms + const prevIdentifier = "acceptTems"; + const prevValue = store.get(prevIdentifier, undefined) as + | AcceptTermsStatus + | undefined; + if (prevValue) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + store.delete(prevIdentifier as any); + store.set("acceptTerms", prevValue); + } + }, + ">=0.14": (store) => { + // FIXME: できるならEngineManagerからEnginIDを取得したい + if (process.env.DEFAULT_ENGINE_INFOS == undefined) + throw new Error("DEFAULT_ENGINE_INFOS == undefined"); + const engineId = EngineId( + JSON.parse(process.env.DEFAULT_ENGINE_INFOS)[0].uuid + ); + if (engineId == undefined) + throw new Error("DEFAULT_ENGINE_INFOS[0].uuid == undefined"); + const prevDefaultStyleIds = store.get("defaultStyleIds"); + store.set( + "defaultStyleIds", + prevDefaultStyleIds.map((defaultStyle) => ({ + engineId, + speakerUuid: defaultStyle.speakerUuid, + defaultStyleId: defaultStyle.defaultStyleId, + })) + ); - const outputSamplingRate: number = + const outputSamplingRate: number = + // @ts-expect-error 削除されたパラメータ。 + store.get("savingSetting").outputSamplingRate; + store.set(`engineSettings.${engineId}`, { + useGpu: store.get("useGpu"), + outputSamplingRate: + outputSamplingRate === 24000 ? "engineDefault" : outputSamplingRate, + }); // @ts-expect-error 削除されたパラメータ。 - store.get("savingSetting").outputSamplingRate; - store.set(`engineSettings.${engineId}`, { - useGpu: store.get("useGpu"), - outputSamplingRate: - outputSamplingRate === 24000 ? "engineDefault" : outputSamplingRate, - }); - // @ts-expect-error 削除されたパラメータ。 - store.delete("savingSetting.outputSamplingRate"); - // @ts-expect-error 削除されたパラメータ。 - store.delete("useGpu"); + store.delete("savingSetting.outputSamplingRate"); + // @ts-expect-error 削除されたパラメータ。 + store.delete("useGpu"); + }, }, - }, -}); + }); +} catch (e) { + dialog.showErrorBox( + "設定ファイルの読み込みに失敗しました。", + `${app.getPath( + "userData" + )} にある config.json の名前を変えることで解決することがあります(ただし設定がすべてリセットされます)。` + ); + app.exit(1); + throw e; +} // engine const vvppEngineDir = path.join(app.getPath("userData"), "vvpp-engines");