import { autoUpdater , UpdateInfo } from 'electron-updater' ; import log from 'electron-log' ; import { handleManualUpdate , requiresManualUpdate } from './ManualUpdater' ; import { handleAutoUpdate } from './AutoUpdater' ; interface IUpdater { checkForUpdates ( ) : Promise < void > ; } export function setupAutoUpdater ( ) { autoUpdater . logger = log ; autoUpdater . autoDownload = false ; autoUpdater . on ( 'error' , ( error ) => { log . error ( '@error@\n' , error ) ; } ) ; let isAlreadyHandled = false ; autoUpdater . on ( 'update-available' , async ( info ) => { log . info ( '@update-available@\n' , info ) ; if ( isAlreadyHandled ) { log . info ( 'Available updates is already handled' ) ; return ; } isAlreadyHandled = true ; await handleAvailableUpdate ( info ) ; } ) ; return { checkForUpdates : async ( ) => { await autoUpdater . checkForUpdates ( ) ; } , } ; } async function handleAvailableUpdate ( info ) { if ( requiresManualUpdate ( ) ) { await handleManualUpdate ( info ) ; return ; } await handleAutoUpdate ( ) ; }