'use strict';

const electron = require('electron');
const ipcRenderer = electron.ipcRenderer;

const updateWindowContainer = document.getElementById(
  'update-window-container'
);

const confirmation = document.getElementById('confirmation');
const downloading = document.getElementById('downloading');
const update = document.getElementById('update');

const confirmationOk = document.getElementById('confirmation-ok');
const confirmationCancel = document.getElementById('confirmation-cancel');

const downloadingProgressBar = document.getElementById(
  'downloading-progress-bar'
);
const downloadingProgressLabel = document.getElementById(
  'downloading-progress-label'
);
const downloadingCancel = document.getElementById('downloading-cancel');

confirmationOk &&
  confirmationOk.addEventListener('click', e => {
    console.log('UCAP::ElectronUpdateWindow::acceptUpdate');
    ipcRenderer.send('UCAP::ElectronUpdateWindow::acceptUpdate');
    downloadingProgressBar.style.width = `0%`;
    downloadingProgressLabel.innerText = `0%`;
    updateWindowContainer.style.transform = 'translateX(-500px)';
  });

confirmationCancel &&
  confirmationCancel.addEventListener('click', e => {
    ipcRenderer.send('UCAP::ElectronUpdateWindow::denyUpdate');
  });

downloadingCancel &&
  downloadingCancel.addEventListener('click', e => {
    ipcRenderer.send('UCAP::ElectronUpdateWindow::cancelDownload');
  });

function setContents(event, versionInfo) {
  const updateDoc = global.window.document;

  const latestVersion = updateDoc.getElementById('latestVersion');
  if (!!latestVersion) {
    latestVersion.innerHTML = versionInfo.latest || '';
  }

  const installedVersion = updateDoc.getElementById('installedVersion');
  if (!!installedVersion) {
    installedVersion.innerHTML = versionInfo.installed || '';
  }
}

ipcRenderer.on(
  'UCAP::ElectronUpdateWindow::downloadProcess',
  (event, ...args) => {
    const percentage = (args[0] / args[1]) * 100;
    downloadingProgressBar.style.width = `${percentage}%`;
    downloadingProgressLabel.innerText = `${percentage}%`;
  }
);

ipcRenderer.on(
  'UCAP::ElectronUpdateWindow::downloadComplete',
  (event, ...args) => {
    updateWindowContainer.style.transform = 'translateX(-1000px)';
  }
);

ipcRenderer.on(
  'UCAP::ElectronUpdateWindow::BrowserWindowSetContents',
  setContents
);