From 535987648028fbf5ac57e0db7d915353b8c07b92 Mon Sep 17 00:00:00 2001 From: JellyBrick Date: Sat, 14 Oct 2023 02:39:51 +0900 Subject: [PATCH 1/2] feat: enable in-app-menu by default --- config/defaults.ts | 7 ++++++- config/store.ts | 10 +++++++++- plugins/in-app-menu/back.ts | 2 ++ plugins/in-app-menu/front.ts | 13 ++++++++++--- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/config/defaults.ts b/config/defaults.ts index e8a3a70425..d64881342b 100644 --- a/config/defaults.ts +++ b/config/defaults.ts @@ -118,7 +118,12 @@ const defaultConfig = { playlistMaxItems: undefined as number | undefined, }, 'exponential-volume': {}, - 'in-app-menu': {}, + 'in-app-menu': { + /** + * true in Windows, false in Linux and macOS (see ./default.ts) + */ + enabled: false, + }, 'last-fm': { enabled: false, token: undefined as string | undefined, // Token used for authentication diff --git a/config/store.ts b/config/store.ts index f5fdac9ddf..7ed38de454 100644 --- a/config/store.ts +++ b/config/store.ts @@ -1,8 +1,16 @@ import Store from 'electron-store'; import Conf from 'conf'; +import is from 'electron-is'; import defaults from './defaults'; +const getDefaults = () => { + if (is.windows()) { + defaults.plugins['in-app-menu'].enabled = true; + } + return defaults; +}; + const setDefaultPluginOptions = (store: Conf>, plugin: keyof typeof defaults.plugins) => { if (!store.get(`plugins.${plugin}`)) { store.set(`plugins.${plugin}`, defaults.plugins[plugin]); @@ -118,7 +126,7 @@ const migrations = { }; export default new Store({ - defaults, + defaults: getDefaults(), clearInvalidConfig: false, migrations, }); diff --git a/plugins/in-app-menu/back.ts b/plugins/in-app-menu/back.ts index 0cceec9158..673ced9350 100644 --- a/plugins/in-app-menu/back.ts +++ b/plugins/in-app-menu/back.ts @@ -61,5 +61,7 @@ export default (win: BrowserWindow) => { ipcMain.handle('window-close', () => win.close()); ipcMain.handle('window-minimize', () => win.minimize()); ipcMain.handle('window-maximize', () => win.maximize()); + win.on('maximize', () => win.webContents.send('window-maximize')); ipcMain.handle('window-unmaximize', () => win.unmaximize()); + win.on('unmaximize', () => win.webContents.send('window-unmaximize')); }; diff --git a/plugins/in-app-menu/front.ts b/plugins/in-app-menu/front.ts index a8a450b425..f12d5df4af 100644 --- a/plugins/in-app-menu/front.ts +++ b/plugins/in-app-menu/front.ts @@ -22,6 +22,7 @@ export default async () => { let hideMenu = config.get('options.hideMenu'); const titleBar = document.createElement('title-bar'); const navBar = document.querySelector('#nav-bar-background'); + let maximizeButton: HTMLButtonElement; if (isMacOS) titleBar.style.setProperty('--offset-left', '70px'); logo.classList.add('title-bar-icon'); @@ -55,7 +56,7 @@ export default async () => { minimizeButton.appendChild(minimize); minimizeButton.onclick = () => ipcRenderer.invoke('window-minimize'); - const maximizeButton = document.createElement('button'); + maximizeButton = document.createElement('button'); if (await ipcRenderer.invoke('window-is-maximized')) { maximizeButton.classList.add('window-control'); maximizeButton.appendChild(unmaximize); @@ -135,8 +136,14 @@ export default async () => { document.title = 'Youtube Music'; - ipcRenderer.on('refreshMenu', () => { - updateMenu(); + ipcRenderer.on('refreshMenu', () => updateMenu()); + ipcRenderer.on('window-maximize', () => { + maximizeButton.removeChild(maximizeButton.firstChild!); + maximizeButton.appendChild(unmaximize); + }); + ipcRenderer.on('window-unmaximize', () => { + maximizeButton.removeChild(maximizeButton.firstChild!); + maximizeButton.appendChild(maximize); }); if (isEnabled('picture-in-picture')) { From a66c3d832fdb291588256a02ffb6e51e3ac15ed7 Mon Sep 17 00:00:00 2001 From: JellyBrick Date: Sat, 14 Oct 2023 02:53:07 +0900 Subject: [PATCH 2/2] feat: fix typo --- config/defaults.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/defaults.ts b/config/defaults.ts index d64881342b..c11d02ef7a 100644 --- a/config/defaults.ts +++ b/config/defaults.ts @@ -120,7 +120,7 @@ const defaultConfig = { 'exponential-volume': {}, 'in-app-menu': { /** - * true in Windows, false in Linux and macOS (see ./default.ts) + * true in Windows, false in Linux and macOS (see youtube-music/config/store.ts) */ enabled: false, },