import { BrowserWindow, dialog } from "electron"; import type { MessageBoxOptions, MessageBoxReturnValue } from "electron"; import { ReleaseUpdate } from "./update-schema"; export type DownloadUpdateChoice = "download" | "open-release" | "dismiss"; export async function askToDownloadUpdate( update: ReleaseUpdate, releasePageUrl: string | undefined, parentWindow: BrowserWindow | null, ): Promise { const result = await showMessageBox(parentWindow, { type: "info", title: "Actualización disponible", message: `Scoreko ${update.version} está disponible.`, detail: "Puedes descargarla ahora o seguir usando esta versión.", buttons: releasePageUrl ? ["Descargar", "Ver release", "Ahora no"] : ["Descargar", "Ahora no"], defaultId: 0, cancelId: releasePageUrl ? 2 : 1, }); if (releasePageUrl && result.response === 1) { return "open-release"; } return result.response === 0 ? "download" : "dismiss"; } export async function askToInstallUpdate(update: ReleaseUpdate, parentWindow: BrowserWindow | null): Promise { const result = await showMessageBox(parentWindow, { type: "question", title: "Actualización descargada", message: `Scoreko ${update.version} se ha descargado.`, detail: "Para instalarla se cerrará Scoreko y se abrirá el instalador.", buttons: ["Instalar y cerrar", "Luego"], defaultId: 0, cancelId: 1, }); return result.response === 0; } function showMessageBox( parentWindow: BrowserWindow | null, options: MessageBoxOptions, ): Promise { return parentWindow ? dialog.showMessageBox(parentWindow, options) : dialog.showMessageBox(options); }