import { app, dialog } from 'electron'; import { autoUpdater, UpdateInfo } from 'electron-updater'; import { emitMainProcessError } from '../backend/helpers'; import { Main } from '../main'; import { isNetworkError } from './helpers'; export default function registerAutoUpdaterListeners(main: Main) { autoUpdater.autoDownload = false; autoUpdater.allowPrerelease = true; autoUpdater.autoInstallOnAppQuit = true; autoUpdater.on('error', (error) => { if (!main.checkedForUpdate) { main.checkedForUpdate = true; } if (isNetworkError(error)) { return; } emitMainProcessError(error); }); autoUpdater.on('update-available', async (info: UpdateInfo) => { const currentVersion = app.getVersion(); const nextVersion = info.version; const isCurrentBeta = currentVersion.includes('beta'); const isNextBeta = nextVersion.includes('beta'); let downloadUpdate = true; if (!isCurrentBeta && isNextBeta) { const option = await dialog.showMessageBox({ type: 'info', title: 'Update Available', message: `Download version ${nextVersion}?`, buttons: ['Yes', 'No'], }); downloadUpdate = option.response === 0; } if (!downloadUpdate) { return; } await autoUpdater.downloadUpdate(); }); autoUpdater.on('update-downloaded', async () => { const option = await dialog.showMessageBox({ type: 'info', title: 'Update Downloaded', message: 'Restart Frappe Books to install update?', buttons: ['Yes', 'No'], }); if (option.response === 1) { return; } autoUpdater.quitAndInstall(); }); }