diff --git a/README.md b/README.md
index 127bc521c1..5c4056e4d2 100644
--- a/README.md
+++ b/README.md
@@ -88,6 +88,9 @@ Storybook を使ってコンポーネントを開発することができます
npm run storybook
```
+main ブランチの Storybook は Chromatic から確認できます。
+
+
### ブラウザ版の実行(開発中)
別途音声合成エンジンを起動し、以下を実行して表示された localhost へアクセスします。
@@ -96,7 +99,8 @@ npm run storybook
npm run browser:serve
```
-また、main ブランチのビルド結果がこちらにデプロイされています
+また、main ブランチのビルド結果がこちらにデプロイされています。
+
今はローカル PC 上で音声合成エンジンを起動する必要があります。
## ビルド
diff --git a/src/backend/browser/sandbox.ts b/src/backend/browser/sandbox.ts
index d7ec97d6e7..ba8e8b2eaa 100644
--- a/src/backend/browser/sandbox.ts
+++ b/src/backend/browser/sandbox.ts
@@ -295,32 +295,15 @@ export const api: Sandbox = {
// TODO: Impl
return;
},
- async theme(newData?: string) {
- if (newData != undefined) {
- await this.setSetting("currentTheme", newData);
- return;
- }
+ async getAvailableThemes() {
// NOTE: Electron版では起動時にテーマ情報が必要なので、
// この実装とは違って起動時に読み込んだキャッシュを返すだけになっている。
return Promise.all(
// FIXME: themeファイルのいい感じのパスの設定
["/themes/default.json", "/themes/dark.json"].map((url) =>
- fetch(url).then((res) => res.json()),
+ fetch(url).then((res) => res.json() as Promise),
),
- )
- .then((v) => ({
- currentTheme: "Default",
- availableThemes: v,
- }))
- .then((v) =>
- this.getSetting("currentTheme").then(
- (currentTheme) =>
- ({
- ...v,
- currentTheme,
- }) as { currentTheme: string; availableThemes: ThemeConf[] },
- ),
- );
+ );
},
vuexReady() {
// NOTE: 何もしなくて良さそう
diff --git a/src/backend/electron/main.ts b/src/backend/electron/main.ts
index 6fa17cb80a..fc5109f55c 100644
--- a/src/backend/electron/main.ts
+++ b/src/backend/electron/main.ts
@@ -760,6 +760,10 @@ registerIpcMainHandle({
}
},
+ GET_AVAILABLE_THEMES: () => {
+ return themes;
+ },
+
OPEN_LOG_DIRECTORY: () => {
void shell.openPath(app.getPath("logs"));
},
@@ -791,17 +795,6 @@ registerIpcMainHandle({
return configManager.get("hotkeySettings");
},
- THEME: (_, { newData }) => {
- if (newData != undefined) {
- configManager.set("currentTheme", newData);
- return;
- }
- return {
- currentTheme: configManager.get("currentTheme"),
- availableThemes: themes,
- };
- },
-
ON_VUEX_READY: () => {
win.show();
},
diff --git a/src/backend/electron/preload.ts b/src/backend/electron/preload.ts
index c94d3d1ea5..2fdd5af720 100644
--- a/src/backend/electron/preload.ts
+++ b/src/backend/electron/preload.ts
@@ -217,8 +217,8 @@ const api: Sandbox = {
void ipcRendererInvokeProxy.SET_NATIVE_THEME(source);
},
- theme: (newData) => {
- return ipcRendererInvokeProxy.THEME({ newData });
+ getAvailableThemes: () => {
+ return ipcRendererInvokeProxy.GET_AVAILABLE_THEMES();
},
vuexReady: () => {
diff --git a/src/components/App.vue b/src/components/App.vue
index db73ce923c..b4798dead7 100644
--- a/src/components/App.vue
+++ b/src/components/App.vue
@@ -23,7 +23,7 @@