mirror of
https://github.com/hydralauncher/hydra.git
synced 2026-01-24 19:31:03 +00:00
feat: add theme editor with Monaco and custom CSS injection
This commit is contained in:
@@ -78,6 +78,11 @@ import "./themes/add-custom-theme";
|
||||
import "./themes/delete-custom-theme";
|
||||
import "./themes/get-all-custom-themes";
|
||||
import "./themes/delete-all-custom-themes";
|
||||
import "./themes/update-custom-theme";
|
||||
import "./themes/open-editor-window";
|
||||
import "./themes/get-custom-theme-by-id";
|
||||
import "./themes/get-active-custom-theme";
|
||||
import "./themes/css-injector";
|
||||
import { isPortableVersion } from "@main/helpers";
|
||||
|
||||
ipcMain.handle("ping", () => "pong");
|
||||
|
||||
12
src/main/events/themes/css-injector.ts
Normal file
12
src/main/events/themes/css-injector.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import { registerEvent } from "../register-event";
|
||||
import { WindowManager } from "@main/services";
|
||||
|
||||
const injectCSS = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
cssString: string
|
||||
) => {
|
||||
WindowManager.mainWindow?.webContents.send("css-injected", cssString);
|
||||
return;
|
||||
};
|
||||
|
||||
registerEvent("injectCSS", injectCSS);
|
||||
10
src/main/events/themes/get-active-custom-theme.ts
Normal file
10
src/main/events/themes/get-active-custom-theme.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import { registerEvent } from "../register-event";
|
||||
import { themes } from "@main/level/sublevels/themes";
|
||||
import { Theme } from "@types";
|
||||
|
||||
const getActiveCustomTheme = async () => {
|
||||
const allThemes = await themes.values().all();
|
||||
return allThemes.find((theme: Theme) => theme.isActive);
|
||||
};
|
||||
|
||||
registerEvent("getActiveCustomTheme", getActiveCustomTheme);
|
||||
8
src/main/events/themes/get-custom-theme-by-id.ts
Normal file
8
src/main/events/themes/get-custom-theme-by-id.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { themes } from "@main/level/sublevels/themes";
|
||||
import { registerEvent } from "../register-event";
|
||||
|
||||
const getCustomThemeById = async (_event: Electron.IpcMainInvokeEvent, themeId: string) => {
|
||||
return await themes.get(themeId);
|
||||
};
|
||||
|
||||
registerEvent("getCustomThemeById", getCustomThemeById);
|
||||
8
src/main/events/themes/open-editor-window.ts
Normal file
8
src/main/events/themes/open-editor-window.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { WindowManager } from "@main/services";
|
||||
import { registerEvent } from "../register-event";
|
||||
|
||||
const openEditorWindow = async (_event: Electron.IpcMainInvokeEvent, themeId: string) => {
|
||||
WindowManager.openEditorWindow(themeId);
|
||||
};
|
||||
|
||||
registerEvent("openEditorWindow", openEditorWindow);
|
||||
13
src/main/events/themes/update-custom-theme.ts
Normal file
13
src/main/events/themes/update-custom-theme.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import { themes } from "@main/level/sublevels/themes";
|
||||
import { registerEvent } from "../register-event";
|
||||
import { Theme } from "@types";
|
||||
|
||||
const updateCustomTheme = async (
|
||||
_event: Electron.IpcMainInvokeEvent,
|
||||
themeId: string,
|
||||
theme: Theme
|
||||
) => {
|
||||
await themes.put(themeId, theme);
|
||||
};
|
||||
|
||||
registerEvent("updateCustomTheme", updateCustomTheme);
|
||||
Reference in New Issue
Block a user