/*
This file is part of the Notesnook project (https://notesnook.com/)

Copyright (C) 2023 Streetwriters (Private) Limited

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

import { autoUpdater } from "electron-updater";
import { config } from "./config";

async function configureAutoUpdater() {
  const releaseTrack =
    config.releaseTrack === "stable" ? "latest" : config.releaseTrack;
  autoUpdater.setFeedURL({
    provider: "generic",
    url: `https://notesnook.com/api/v1/releases/${process.platform}/${releaseTrack}`,
    useMultipleRangeRequest: false,
    channel: releaseTrack
  });

  autoUpdater.autoDownload = config.automaticUpdates;
  autoUpdater.allowDowngrade =
    // only allow downgrade if the current version is a prerelease
    // and the user has changed the release track to stable
    config.releaseTrack === "stable" &&
    autoUpdater.currentVersion.prerelease.length > 0;
  autoUpdater.allowPrerelease = false;
  // Do NOT auto-install on quit. On Windows, if the system shuts down while
  // the NSIS installer is running, it first removes all old files and then
  // gets killed before copying new ones — leaving an empty install directory.
  // Updates should only be installed when the user explicitly triggers it.
  autoUpdater.autoInstallOnAppQuit = false;
  autoUpdater.disableWebInstaller = true;
}

export { configureAutoUpdater };
