Fixed auto-updating

This commit is contained in:
Geomitron
2020-05-26 22:05:16 -04:00
parent 2b5c64d376
commit 33d45bb0a5
8 changed files with 77 additions and 15 deletions

View File

@@ -9,6 +9,8 @@ export interface UpdateProgress {
total: number
}
let updateAvailable = false
/**
* Checks for updates when the program is launched.
*/
@@ -18,6 +20,9 @@ class UpdateChecker {
autoUpdater.autoDownload = false
autoUpdater.logger = null
this.registerUpdaterListeners()
}
checkForUpdates() {
autoUpdater.checkForUpdates()
}
@@ -28,13 +33,30 @@ class UpdateChecker {
})
autoUpdater.on('update-available', (info: UpdateInfo) => {
updateAvailable = true
console.log('update available callback', info)
emitIPCEvent('update-available', info)
})
}
}
new UpdateChecker()
export const updateChecker = new UpdateChecker()
/**
* Handles the 'get-update-available' event.
*/
class GetUpdateAvailableHandler implements IPCInvokeHandler<'get-update-available'> {
event: 'get-update-available' = 'get-update-available'
/**
* @returns `true` if an update is available.
*/
handler() {
return updateAvailable
}
}
export const getUpdateAvailableHandler = new GetUpdateAvailableHandler()
/**
* Handles the 'get-current-version' event.

View File

@@ -1,4 +1,5 @@
import { app, BrowserWindow, ipcMain } from 'electron'
import { updateChecker } from './ipc/UpdateHandler.ipc'
import * as windowStateKeeper from 'electron-window-state'
import * as path from 'path'
import * as url from 'url'
@@ -17,7 +18,12 @@ restrictToSingleInstance()
handleOSXWindowClosed()
app.on('ready', () => {
// Load settings from file before the window is created
getSettingsHandler.initSettings().then(createBridgeWindow)
getSettingsHandler.initSettings().then(() => {
createBridgeWindow()
if (!isDevBuild) {
updateChecker.checkForUpdates()
}
})
})
/**

View File

@@ -8,7 +8,7 @@ import { downloadHandler } from '../ipc/download/DownloadHandler'
import { Settings } from './Settings'
import { batchSongDetailsHandler } from '../ipc/browse/BatchSongDetailsHandler.ipc'
import { getSettingsHandler, setSettingsHandler } from '../ipc/SettingsHandler.ipc'
import { UpdateProgress, getCurrentVersionHandler, downloadUpdateHandler, quitAndInstallHandler } from '../ipc/UpdateHandler.ipc'
import { UpdateProgress, getCurrentVersionHandler, downloadUpdateHandler, quitAndInstallHandler, getUpdateAvailableHandler } from '../ipc/UpdateHandler.ipc'
import { UpdateInfo } from 'electron-updater'
/**
@@ -26,7 +26,8 @@ export function getIPCInvokeHandlers(): IPCInvokeHandler<keyof IPCInvokeEvents>[
songDetailsHandler,
batchSongDetailsHandler,
albumArtHandler,
getCurrentVersionHandler
getCurrentVersionHandler,
getUpdateAvailableHandler
]
}
@@ -58,6 +59,10 @@ export type IPCInvokeEvents = {
input: undefined
output: string
}
'get-update-available': {
input: undefined
output: boolean
}
}
/**