import { MessageBoxOptions, dialog, shell } from "electron";
import { UpdateDownloadedEvent, autoUpdater } from "electron-updater";
import logit from "../utils/logit";

const autoUpdate = (event: UpdateDownloadedEvent) => {
  autoUpdater.autoInstallOnAppQuit = false;
  const dialogOpts: MessageBoxOptions = {
    type: "info",
    buttons: ["Install update", "No Thanks", "Check Release Notes"],
    title: "New Upscayl Update",
    message: event.releaseName as string,
    detail:
      "A new version has been downloaded. Restart the application to apply the updates.",
  };

  const dialogResponse = dialog.showMessageBoxSync(dialogOpts);

  logit("✅ Update Downloaded");
  if (dialogResponse === 0) {
    autoUpdater.quitAndInstall();
  } else if (dialogResponse === 2) {
    shell.openExternal(
      "https://github.com/upscayl/upscayl/releases/tag/v" + event.version
    );
    dialog.showMessageBoxSync(dialogOpts);
  } else {
    logit("🚫 Update Installation Cancelled");
  }
};

export default autoUpdate;