Files
privacy.sexy/src/presentation/electron/main/Update/UpdateInitializer.ts
undergroundwires a721e82a4f Bump TypeScript to 5.3 with verbatimModuleSyntax
This commit upgrades TypeScript to the latest version 5.3 and introduces
`verbatimModuleSyntax` in line with the official Vue guide
recommendatinos (vuejs/docs#2592).

By enforcing `import type` for type-only imports, this commit improves
code clarity and supports tooling optimization, ensuring imports are
only bundled when necessary for runtime.

Changes:

- Bump TypeScript to 5.3.3 across the project.
- Adjust import statements to utilize `import type` where applicable,
  promoting cleaner and more efficient code.
2024-02-27 04:20:22 +01:00

47 lines
1.4 KiB
TypeScript

import { autoUpdater, type UpdateInfo } from 'electron-updater';
import { ElectronLogger } from '@/infrastructure/Log/ElectronLogger';
import { requiresManualUpdate, startManualUpdateProcess } from './ManualUpdater/ManualUpdateCoordinator';
import { handleAutoUpdate } from './AutomaticUpdateCoordinator';
interface Updater {
checkForUpdates(): Promise<void>;
}
export function setupAutoUpdater(): Updater {
autoUpdater.logger = ElectronLogger;
// Auto-downloads are disabled to allow separate handling of 'check' and 'download' actions,
// which vary based on the specific platform and user preferences.
autoUpdater.autoDownload = false;
autoUpdater.on('error', (error: Error) => {
ElectronLogger.error('@error@\n', error);
});
let isAlreadyHandled = false;
autoUpdater.on('update-available', async (info: UpdateInfo) => {
ElectronLogger.info('@update-available@\n', info);
if (isAlreadyHandled) {
ElectronLogger.info('Available updates is already handled');
return;
}
isAlreadyHandled = true;
await handleAvailableUpdate(info);
});
return {
checkForUpdates: async () => {
// autoUpdater.emit('update-available'); // For testing
await autoUpdater.checkForUpdates();
},
};
}
async function handleAvailableUpdate(info: UpdateInfo) {
if (requiresManualUpdate()) {
await startManualUpdateProcess(info);
return;
}
await handleAutoUpdate();
}