diff --git a/packages/app/src/services/services/electron-app/interface.ts b/packages/app/src/services/services/electron-app/interface.ts index 4ca5b14..d456d49 100644 --- a/packages/app/src/services/services/electron-app/interface.ts +++ b/packages/app/src/services/services/electron-app/interface.ts @@ -30,6 +30,8 @@ export class ElectronAppService extends ServiceBase implements RPC.Interface {} // @ts-ignore + trayIconVisible(): Promise {} + // @ts-ignore addObserver(obs: RPC.ObserverNode): Promise {} // @ts-ignore setProvider(provider: RPC.Node): Promise {} @@ -53,4 +55,6 @@ export class ElectronAppServiceProviderService extends ServiceBase implements RP showTrayIcon(): Promise {} // @ts-ignore hideTrayIcon(): Promise {} + // @ts-ignore + trayIconVisible(): Promise {} } diff --git a/packages/app/src/services/services/electron-app/main.ts b/packages/app/src/services/services/electron-app/main.ts index 39e86b5..82462a9 100644 --- a/packages/app/src/services/services/electron-app/main.ts +++ b/packages/app/src/services/services/electron-app/main.ts @@ -151,6 +151,10 @@ export class ElectronAppServiceImpl extends ElectronAppService implements RPC.In } await this.provider.hideTrayIcon(); } + + async trayIconVisible() { + return await this.provider?.trayIconVisible() || false; + } private initPrepareQuit() { app.on('before-quit', (event) => { diff --git a/packages/app/src/services/services/electron-app/worker.ts b/packages/app/src/services/services/electron-app/worker.ts index 03b6560..00660a4 100644 --- a/packages/app/src/services/services/electron-app/worker.ts +++ b/packages/app/src/services/services/electron-app/worker.ts @@ -1,5 +1,6 @@ // @ts-ignore: no declaration file import { setMinimizeToTray } from '../../../app/duck'; +import { getAppMinimizeToTrayStatus } from '../../../app/selectors'; import { StationStoreWorker } from '../../../types'; import { RPC } from '../../lib/types'; import { ElectronAppServiceProviderService } from './interface'; @@ -19,4 +20,8 @@ export class ElectronAppServiceProviderServiceImpl extends ElectronAppServicePro async hideTrayIcon() { this.store.dispatch(setMinimizeToTray(false)); } + + async trayIconVisible() { + return getAppMinimizeToTrayStatus(this.store.getState()) || false; + } } diff --git a/packages/app/src/windows/utils/MainWindowManager.ts b/packages/app/src/windows/utils/MainWindowManager.ts index 3a93332..85a04dc 100644 --- a/packages/app/src/windows/utils/MainWindowManager.ts +++ b/packages/app/src/windows/utils/MainWindowManager.ts @@ -1,6 +1,7 @@ import { getUrlToLoad } from '../../utils/dev'; import { isDarwin } from '../../utils/process'; import { getResourceIconPath } from '../../utils/resources'; +// @ts-ignore: no declaration file import { windowCreated } from '../duck'; import GenericWindowManager from './GenericWindowManager'; import services from '../../services/servicesManager'; @@ -28,8 +29,11 @@ export default class MainWindowManager extends GenericWindowManager { savePosition: 'main-window', }); - this.on('minimize', () => { - services.browserWindow.hideAllWindows(); + this.on('minimize', async () => { + const trayIconVisible = await services.electronApp.trayIconVisible() + if (trayIconVisible) { + services.browserWindow.hideAllWindows(); + } }); await super.load();