From 964e9bbb2b98dc07bdb50f097d63556f5a6ced0e Mon Sep 17 00:00:00 2001 From: Hachi-R Date: Thu, 30 Jan 2025 09:43:58 -0300 Subject: [PATCH] feat: close theme editor if the theme was deleted --- src/main/events/index.ts | 1 + src/main/events/themes/close-editor-window.ts | 11 +++++++++++ src/main/services/window-manager.ts | 13 +++++++++++++ src/preload/index.ts | 2 ++ src/renderer/src/declaration.d.ts | 1 + .../aparence/modals/delete-all-themes-modal.tsx | 1 + .../settings/aparence/modals/delete-theme-modal.tsx | 1 + 7 files changed, 30 insertions(+) create mode 100644 src/main/events/themes/close-editor-window.ts diff --git a/src/main/events/index.ts b/src/main/events/index.ts index fbf49ac5..008ba656 100644 --- a/src/main/events/index.ts +++ b/src/main/events/index.ts @@ -83,6 +83,7 @@ import "./themes/open-editor-window"; import "./themes/get-custom-theme-by-id"; import "./themes/get-active-custom-theme"; import "./themes/css-injector"; +import "./themes/close-editor-window"; import { isPortableVersion } from "@main/helpers"; ipcMain.handle("ping", () => "pong"); diff --git a/src/main/events/themes/close-editor-window.ts b/src/main/events/themes/close-editor-window.ts new file mode 100644 index 00000000..6ebc012c --- /dev/null +++ b/src/main/events/themes/close-editor-window.ts @@ -0,0 +1,11 @@ +import { WindowManager } from "@main/services"; +import { registerEvent } from "../register-event"; + +const closeEditorWindow = async ( + _event: Electron.IpcMainInvokeEvent, + themeId?: string +) => { + WindowManager.closeEditorWindow(themeId); +}; + +registerEvent("closeEditorWindow", closeEditorWindow); diff --git a/src/main/services/window-manager.ts b/src/main/services/window-manager.ts index 9836a80a..f5bc8390 100644 --- a/src/main/services/window-manager.ts +++ b/src/main/services/window-manager.ts @@ -255,6 +255,19 @@ export class WindowManager { } } + public static closeEditorWindow(themeId?: string) { + if (themeId) { + const editorWindow = this.editorWindows.get(themeId); + if (editorWindow) { + editorWindow.close(); + } + } else { + this.editorWindows.forEach((editorWindow) => { + editorWindow.close(); + }); + } + } + public static redirect(hash: string) { if (!this.mainWindow) this.createMainWindow(); this.loadMainWindowURL(hash); diff --git a/src/preload/index.ts b/src/preload/index.ts index fa369173..6328e25f 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -358,4 +358,6 @@ contextBridge.exposeInMainWorld("electron", { ipcRenderer.on("css-injected", listener); return () => ipcRenderer.removeListener("css-injected", listener); }, + closeEditorWindow: (themeId?: string) => + ipcRenderer.invoke("closeEditorWindow", themeId), }); diff --git a/src/renderer/src/declaration.d.ts b/src/renderer/src/declaration.d.ts index 82ed65a6..9e0dc8e1 100644 --- a/src/renderer/src/declaration.d.ts +++ b/src/renderer/src/declaration.d.ts @@ -285,6 +285,7 @@ declare global { onCssInjected: ( cb: (cssString: string) => void ) => () => Electron.IpcRenderer; + closeEditorWindow: (themeId?: string) => Promise; } interface Window { diff --git a/src/renderer/src/pages/settings/aparence/modals/delete-all-themes-modal.tsx b/src/renderer/src/pages/settings/aparence/modals/delete-all-themes-modal.tsx index 441f0c11..be46e56a 100644 --- a/src/renderer/src/pages/settings/aparence/modals/delete-all-themes-modal.tsx +++ b/src/renderer/src/pages/settings/aparence/modals/delete-all-themes-modal.tsx @@ -25,6 +25,7 @@ export const DeleteAllThemesModal = ({ } await window.electron.deleteAllCustomThemes(); + await window.electron.closeEditorWindow(); onClose(); onThemesDeleted(); }; diff --git a/src/renderer/src/pages/settings/aparence/modals/delete-theme-modal.tsx b/src/renderer/src/pages/settings/aparence/modals/delete-theme-modal.tsx index ac5cfdbf..5783ce01 100644 --- a/src/renderer/src/pages/settings/aparence/modals/delete-theme-modal.tsx +++ b/src/renderer/src/pages/settings/aparence/modals/delete-theme-modal.tsx @@ -29,6 +29,7 @@ export const DeleteThemeModal = ({ } await window.electron.deleteCustomTheme(themeId); + await window.electron.closeEditorWindow(themeId); onThemeDeleted(); };