From f211b33d33d4579196d7921e0a77a28c0a539ace Mon Sep 17 00:00:00 2001 From: Danilo Lutz Date: Thu, 17 Mar 2022 10:10:32 -0300 Subject: [PATCH] fix: about screen crash on loading icon (#162) * fix: about screen crash on loading icon --- .../data/protocols/Menu/MenuBuildTemplate.ts | 11 +---- src/electron/infra/menu/DefaultMenu.ts | 1 + .../infra/menu/NativeMenuActionHandler.ts | 41 +++++++++++++++---- .../infra/resources/DefaultResources.ts | 9 ++-- 4 files changed, 40 insertions(+), 22 deletions(-) diff --git a/src/electron/data/protocols/Menu/MenuBuildTemplate.ts b/src/electron/data/protocols/Menu/MenuBuildTemplate.ts index a2e3b99..b9880c1 100644 --- a/src/electron/data/protocols/Menu/MenuBuildTemplate.ts +++ b/src/electron/data/protocols/Menu/MenuBuildTemplate.ts @@ -1,11 +1,4 @@ -import { BrowserWindow, MenuItemConstructorOptions } from 'electron'; -import Resources from '../../../infra/resources/DefaultResources'; -import I18nAdapter from '../I18n/I18n'; - +import { MenuItemConstructorOptions } from 'electron'; export interface MenuBuildTemplate { - buildTemplate( - mainWindow: BrowserWindow, - i18nAdapter: I18nAdapter, - resources: Resources - ): Promise; + buildTemplate(): Promise; } diff --git a/src/electron/infra/menu/DefaultMenu.ts b/src/electron/infra/menu/DefaultMenu.ts index 0cdb4e6..09bc166 100644 --- a/src/electron/infra/menu/DefaultMenu.ts +++ b/src/electron/infra/menu/DefaultMenu.ts @@ -31,6 +31,7 @@ export default class DefaultMenu implements MenuBuildTemplate { accelerator: 'Ctrl+T', click: this.actionHandler.newTitle, }, + { type: 'separator' }, { label: this.i18nAdapter.translate('menu.file.save'), accelerator: 'Ctrl+S', diff --git a/src/electron/infra/menu/NativeMenuActionHandler.ts b/src/electron/infra/menu/NativeMenuActionHandler.ts index 4fdea52..fead353 100644 --- a/src/electron/infra/menu/NativeMenuActionHandler.ts +++ b/src/electron/infra/menu/NativeMenuActionHandler.ts @@ -11,89 +11,108 @@ const actionCreate = { type ElectronWindow = BrowserWindow | undefined; export default class NativeMenuActionHandlers implements MenuActionHandler { - constructor(private resources: Resource) {} + constructor(private resources: Resource) { + this.about = this.about.bind(this); + } - newBorrow(_menuItem: MenuItem, win: ElectronWindow): void { + public newBorrow(_menuItem: MenuItem, win: ElectronWindow): void { if (win) { win.webContents.send(AppEvent.borrowTab, actionCreate); } } - newPerson(_menuItem: MenuItem, win: ElectronWindow): void { + + public newPerson(_menuItem: MenuItem, win: ElectronWindow): void { if (win) { win.webContents.send(AppEvent.personTab, actionCreate); } } - newTitle(_menuItem: MenuItem, win: ElectronWindow): void { + + public newTitle(_menuItem: MenuItem, win: ElectronWindow): void { if (win) { win.webContents.send(AppEvent.titleTab, actionCreate); } } - quickSearch(_menuItem: MenuItem, win: ElectronWindow): void { + + public quickSearch(_menuItem: MenuItem, win: ElectronWindow): void { if (win) { win.webContents.send(AppEvent.quickSearch); } } + closeTab(_menuItem: MenuItem, win: ElectronWindow): void { if (win) { win.webContents.send(AppEvent.closeCurrentTab); } } + settings(_menuItem: MenuItem, win: ElectronWindow): void { if (win) { win.webContents.send(AppEvent.settingsTab); } } + quit(): void { app.quit(); } + save(_menuItem: MenuItem, win: ElectronWindow): void { if (win) { win.webContents.send(AppEvent.save); } } + undo(_menuItem: MenuItem, win: ElectronWindow): void { if (win) { win.webContents.undo(); } } + redo(_menuItem: MenuItem, win: ElectronWindow): void { if (win) { win.webContents.redo(); } } + cut(_menuItem: MenuItem, win: ElectronWindow): void { if (win) { win.webContents.cut(); } } + copy(_menuItem: MenuItem, win: ElectronWindow): void { if (win) { win.webContents.copy(); } } + paste(_menuItem: MenuItem, win: ElectronWindow): void { if (win) { win.webContents.paste(); } } + selectAll(_menuItem: MenuItem, win: ElectronWindow): void { if (win) { win.webContents.selectAll(); } } + darkTheme(_menuItem: MenuItem, win: ElectronWindow): void { if (win) { win.webContents.send(AppEvent.setTheme); } } + reload(_menuItem: MenuItem, win: ElectronWindow): void { win.webContents.reload(); } + forceReload(_menuItem: MenuItem, win: ElectronWindow): void { if (win) { win.webContents.reloadIgnoringCache(); } } + toggleDevTools(_menuItem: MenuItem, win: ElectronWindow): void { if (win) { win.webContents.toggleDevTools(); @@ -107,28 +126,36 @@ export default class NativeMenuActionHandlers implements MenuActionHandler { zoomIn(_menuItem: MenuItem, win: ElectronWindow): void { if (win) win.webContents.zoomLevel = win.webContents.zoomLevel + 0.5; } + zoomOut(_menuItem: MenuItem, win: ElectronWindow): void { if (win) win.webContents.zoomLevel = win.webContents.zoomLevel - 0.5; } + fullScreen(_menuItem: MenuItem, win: ElectronWindow): void { if (win) win.setFullScreen(!win.isFullScreen()); } + minimize(_menuItem: MenuItem, win: ElectronWindow): void { if (win) win.minimize(); } + close(): void { app.quit(); } + documentation(): void { shell.openExternal('https://librarian-org.gitbook.io/librarian/'); } + reportIssue(): void { - 'https://github.com/librarian-org/librarian/issues/new'; + shell.openExternal('https://github.com/librarian-org/librarian/issues/new'); } + website(): void { shell.openExternal('https://librarian-org.github.io/'); } - about(): void { + + public about(): void { app.setAboutPanelOptions({ applicationName: 'Librarian', applicationVersion: app.getVersion(), diff --git a/src/electron/infra/resources/DefaultResources.ts b/src/electron/infra/resources/DefaultResources.ts index 1ac8997..437c14f 100644 --- a/src/electron/infra/resources/DefaultResources.ts +++ b/src/electron/infra/resources/DefaultResources.ts @@ -4,11 +4,7 @@ import path from 'path'; import isDev from 'electron-is-dev'; import Resource from '../../data/protocols/Resource/Resource'; - -export default class DefaultResources - implements - Resource -{ +export default class DefaultResources implements Resource { public getLanguages(): string[] { const folder = path.resolve( __dirname, @@ -33,7 +29,7 @@ export default class DefaultResources } public getIcon(): string { - return path.resolve( + const iconPath = path.resolve( __dirname, '..', 'renderer', @@ -42,6 +38,7 @@ export default class DefaultResources 'images', 'librarian.png' ); + return iconPath; } public writeLanguageFile(language: string): void {