Skip to content

Commit d0c490e

Browse files
authored
Merge pull request #342 from victoralvesf/development
Release v0.12.0
2 parents 3ee8882 + 236e043 commit d0c490e

39 files changed

Lines changed: 535 additions & 229 deletions

dev-app-update.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
provider: generic
2-
url: https://example.com/auto-updates
3-
updaterCacheDirName: aonsoku-electron-updater
2+
url: https://minio.trinitylab.work/aonsoku-dev-update

electron-builder.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ mac:
3838
category: public.app-category.music
3939
entitlementsInherit: build/entitlements.mac.plist
4040
notarize: false
41+
identity: "-"
4142
icon: ./build/icon.icns
4243
target:
4344
- target: dmg

electron.vite.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export default defineConfig({
3232
},
3333
},
3434
externalizeDeps: {
35-
exclude: ['@electron-toolkit/preload'],
35+
exclude: ['@electron-toolkit/preload', 'electron-updater'],
3636
},
3737
},
3838
},

electron/main/core/events.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
OverlayColors,
66
PlayerStatePayload,
77
} from '../../preload/types'
8+
import { isQuitting } from '../index'
89
import { tray, updateTray } from '../tray'
910
import { colorsState } from './colors'
1011
import {
@@ -61,6 +62,11 @@ export function setupEvents(window: BrowserWindow | null) {
6162
})
6263

6364
window.on('close', (event) => {
65+
if (isQuitting) {
66+
if (tray && !tray.isDestroyed()) tray.destroy()
67+
return
68+
}
69+
6470
if (is.dev || !getAppSetting('minimizeToTray')) {
6571
if (tray && !tray.isDestroyed()) tray.destroy()
6672
return

electron/main/core/menu.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,22 @@
1-
import { platform } from '@electron-toolkit/utils'
2-
import { app, Menu, shell } from 'electron'
1+
import { is, platform } from '@electron-toolkit/utils'
2+
import {
3+
app,
4+
Menu,
5+
MenuItem,
6+
MenuItemConstructorOptions,
7+
shell,
8+
} from 'electron'
39
import { repository } from '../../../package.json'
410
import { aboutDialog } from './about'
511

612
export function createAppMenu() {
713
if (!platform.isMacOS) return
814

9-
const template = [
15+
const toggleDevTools = {
16+
role: 'toggleDevTools',
17+
} as const
18+
19+
const template: (MenuItemConstructorOptions | MenuItem)[] = [
1020
{
1121
label: app.name,
1222
submenu: [
@@ -51,7 +61,7 @@ export function createAppMenu() {
5161
submenu: [
5262
{ role: 'reload' },
5363
{ role: 'forceReload' },
54-
{ role: 'toggleDevTools' },
64+
...(is.dev ? [toggleDevTools] : []),
5565
{ type: 'separator' },
5666
{ role: 'resetZoom' },
5767
{ role: 'zoomIn' },
@@ -84,7 +94,6 @@ export function createAppMenu() {
8494
},
8595
]
8696

87-
// @ts-expect-error set only roles for menu
8897
const menu = Menu.buildFromTemplate(template)
8998

9099
Menu.setApplicationMenu(menu)

electron/main/core/updater.ts

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,22 @@
1-
import { is } from '@electron-toolkit/utils'
21
import { BrowserWindow, ipcMain } from 'electron'
32
import electronUpdater from 'electron-updater'
43
import { IpcChannels } from '../../preload/types'
54

65
const { autoUpdater } = electronUpdater
76

8-
export function setupUpdater(window: BrowserWindow | null) {
9-
if (!window) return
7+
let updateWindow: BrowserWindow | null = null
108

9+
export function setUpdaterWindow(window: BrowserWindow | null) {
10+
updateWindow = window
11+
}
12+
13+
export function initAutoUpdater() {
1114
autoUpdater.autoDownload = false
1215
autoUpdater.autoInstallOnAppQuit = true
16+
autoUpdater.forceDevUpdateConfig = false
1317

1418
// IPC Handlers
1519
ipcMain.handle(IpcChannels.CheckForUpdates, async () => {
16-
if (is.dev) {
17-
// add mock up response
18-
return {
19-
files: [
20-
{
21-
url: 'https://github.com/victoralvesf/aonsoku/releases/download/v0.11.0/Aonsoku-v0.11.0-linux-x86_64.AppImage',
22-
sha512:
23-
'QRsm6JGcGxiFzngU5VK9LhN7AJlO1mTjXpZBpUFIb7CmmNyWtH7nmT+YjaaeHVdBLCQJRGZna6U9ZCVfag8CiA==',
24-
size: 126846979,
25-
blockMapSize: 133143,
26-
},
27-
],
28-
version: '9.99.9',
29-
updateUrl: 'https://github.com/victoralvesf/aonsoku/releases',
30-
releaseDate: '2025-11-30T02:45:24.024Z',
31-
releaseNotes:
32-
'## New version available\n\n- New feature 1\n- New feature 2\n\n### Fixes\n\n- Fix 1\n- Fix 2',
33-
}
34-
}
35-
3620
try {
3721
return await autoUpdater.checkForUpdates()
3822
} catch (e) {
@@ -55,22 +39,22 @@ export function setupUpdater(window: BrowserWindow | null) {
5539
})
5640

5741
autoUpdater.on('update-available', (info) => {
58-
window.webContents.send(IpcChannels.UpdateAvailable, info)
42+
updateWindow?.webContents.send(IpcChannels.UpdateAvailable, info)
5943
})
6044

6145
autoUpdater.on('update-not-available', () => {
62-
window.webContents.send(IpcChannels.UpdateNotAvailable)
46+
updateWindow?.webContents.send(IpcChannels.UpdateNotAvailable)
6347
})
6448

6549
autoUpdater.on('error', (err) => {
66-
window.webContents.send(IpcChannels.UpdateError, err.message)
50+
updateWindow?.webContents.send(IpcChannels.UpdateError, err.message)
6751
})
6852

6953
autoUpdater.on('download-progress', (progressObj) => {
70-
window.webContents.send(IpcChannels.DownloadProgress, progressObj)
54+
updateWindow?.webContents.send(IpcChannels.DownloadProgress, progressObj)
7155
})
7256

7357
autoUpdater.on('update-downloaded', (info) => {
74-
window.webContents.send(IpcChannels.UpdateDownloaded, info)
58+
updateWindow?.webContents.send(IpcChannels.UpdateDownloaded, info)
7559
})
7660
}

electron/main/index.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import { electronApp, optimizer, platform } from '@electron-toolkit/utils'
2-
import { app, globalShortcut } from 'electron'
2+
import { app } from 'electron'
33
import { createAppMenu } from './core/menu'
4+
import { initAutoUpdater } from './core/updater'
45
import { createWindow, mainWindow } from './window'
56

7+
export let isQuitting = false
8+
69
const currentDesktop = process.env.XDG_CURRENT_DESKTOP ?? ''
710

811
if (platform.isLinux && currentDesktop.toLowerCase().includes('gnome')) {
@@ -31,6 +34,7 @@ if (!instanceLock) {
3134
app.whenReady().then(() => {
3235
electronApp.setAppUserModelId('com.victoralvesf.aonsoku')
3336

37+
initAutoUpdater()
3438
createWindow()
3539
})
3640

@@ -51,10 +55,21 @@ if (!instanceLock) {
5155

5256
app.on('browser-window-created', (_, window) => {
5357
optimizer.watchWindowShortcuts(window)
54-
globalShortcut.register('F11', () => {})
58+
59+
window.webContents.on('before-input-event', (event, input) => {
60+
if (input.key === 'F11') {
61+
event.preventDefault()
62+
}
63+
})
64+
})
65+
66+
app.on('before-quit', () => {
67+
isQuitting = true
5568
})
5669

5770
app.on('window-all-closed', () => {
58-
app.quit()
71+
if (!platform.isMacOS) {
72+
app.quit()
73+
}
5974
})
6075
}

electron/main/window.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { setupDownloads } from './core/downloads'
77
import { setupEvents, setupIpcEvents } from './core/events'
88
import { appIcon } from './core/icon'
99
import { titleBarOverlay } from './core/titleBarOverlay'
10-
import { setupUpdater } from './core/updater'
10+
import { setUpdaterWindow } from './core/updater'
1111
import { StatefulBrowserWindow } from './core/windowPosition'
1212
import { createTray } from './tray'
1313

@@ -44,7 +44,7 @@ export function createWindow(): void {
4444
setupEvents(mainWindow)
4545
setupIpcEvents(mainWindow)
4646
setupDownloads(mainWindow)
47-
setupUpdater(mainWindow)
47+
setUpdaterWindow(mainWindow)
4848

4949
// HMR for renderer base on electron-vite cli.
5050
// Load the remote URL for development or the local html file for production.

electron/preload/types.ts

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
import {
2+
type ProgressInfo,
3+
type UpdateCheckResult,
4+
type UpdateDownloadedEvent,
5+
type UpdateInfo,
6+
} from 'electron-updater'
17
import { RpcPayload } from '../main/core/discordRpc'
28
import { IDownloadPayload } from '../main/core/downloads'
39
import { ISettingPayload } from '../main/core/settings'
@@ -51,24 +57,6 @@ export type PlayerStateListenerActions =
5157
| 'toggleShuffle'
5258
| 'toggleRepeat'
5359

54-
export type UpdateInfo = {
55-
version: string
56-
files: { url: string; sha512: string; size: number }[]
57-
path: string
58-
sha512: string
59-
releaseName: string | null
60-
releaseNotes: string | null
61-
releaseDate: string
62-
}
63-
64-
export type ProgressInfo = {
65-
total: number
66-
delta: number
67-
transferred: number
68-
percent: number
69-
bytesPerSecond: number
70-
}
71-
7260
export interface IAonsokuAPI {
7361
enterFullScreen: () => void
7462
exitFullScreen: () => void
@@ -93,12 +81,12 @@ export interface IAonsokuAPI {
9381
setDiscordRpcActivity: (payload: RpcPayload) => void
9482
clearDiscordRpcActivity: () => void
9583
saveAppSettings: (payload: ISettingPayload) => void
96-
checkForUpdates: () => Promise<UpdateInfo | null>
84+
checkForUpdates: () => Promise<UpdateCheckResult | null>
9785
downloadUpdate: () => void
9886
quitAndInstall: () => void
9987
onUpdateAvailable: (callback: (info: UpdateInfo) => void) => void
10088
onUpdateNotAvailable: (callback: () => void) => void
10189
onUpdateError: (callback: (error: string) => void) => void
10290
onDownloadProgress: (callback: (progress: ProgressInfo) => void) => void
103-
onUpdateDownloaded: (callback: (info: UpdateInfo) => void) => void
91+
onUpdateDownloaded: (callback: (info: UpdateDownloadedEvent) => void) => void
10492
}

index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
<body>
1717
<div id="root"></div>
18-
<script src="/env-config.js"></script>
18+
<script src="./env-config.js"></script>
1919
<script type="module" src="/src/main.tsx"></script>
2020
</body>
2121
</html>

0 commit comments

Comments
 (0)